oh k. Guess i got to work my problem out differently. It would be nice if i was able to do stuff like that because i am trying to write a very simple code for doing tensor algebra in continuum mechanics. <br><br>Thanks a lot alexei for the prompt and clear clarification.
<br><br><div><span class="gmail_quote">On 11/9/06, <b class="gmail_sendername">Sheplyakov Alexei</b> &lt;<a href="mailto:varg@theor.jinr.ru">varg@theor.jinr.ru</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello,<br><br>On Thu, Nov 09, 2006 at 07:38:08AM +0530, aravind b wrote:<br>&gt; Please go through this code :<br>&gt;<br>&gt;<br>&gt; #include &lt;iostream&gt;<br>&gt; #include &lt;ginac/ginac.h&gt;<br>&gt; using namespace std;
<br>&gt; using namespace GiNaC;<br>&gt;<br>&gt; int main()<br>&gt; {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;symbol i_sym(&quot;i&quot;), j_sym(&quot;j&quot;), e(&quot;e&quot;), a(&quot;a&quot;), b(&quot;b&quot;) ;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;idx i(i_sym, 3), j( j_sym, 3) ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//defining indices i and j
<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;scalar_products sp;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;sp.add( indexed(e, i), indexed(e, j), delta_tensor(i,j) );&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // e.i*<br>&gt; e.j = delta_tensor.i.j<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; (indexed(e,i)*indexed(e,j)).simplify_indexed(sp) &lt;&lt;endl ;
<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br>&gt; }<br>&gt;<br>&gt; does NOT give delta.j.i instead just gives e.i * e.j - why?<br><br>Quoting the manual:<br>&quot;* as a special case of dummy index summation, it can replace scalar<br>
&nbsp;&nbsp; products&nbsp;&nbsp; of two tensors with a user-defined value&quot;<br><br>Since e.i * e.j is not a scalar (it is a tensor of second rank), your<br>code won't work.<br><br>&gt; Basically, i want to define an orthonormal basis vector set {
e.i}.<br><br>I think using `idx' object to enumerate the basis is a bad idea.<br>In general, GiNaC `indexed', `idx' classes are well-suited for 'basis-less'<br>calculations (see <a href="http://www.ginac.de/FAQ.html#matrix_indexed">
http://www.ginac.de/FAQ.html#matrix_indexed</a> to find<br>out why). They don't prevent anyone from doing calculation in scpecific<br>basis, but don't help either.<br><br>&gt; If i have vector_a = indexed(a, i) * indexed(e, i) and
<br>&gt; vector_b = indexed(b, j) * indexed(e, j) ,<br><br>Indexed objects in GiNaC are treated as tensors, so such a vector_a<br>is _not_ really a vector, but instead a scalar.<br><br><br>Best regards,<br> Alexei<br><br>
--<br>All science is either physics or stamp collecting.<br><br><br><br>-----BEGIN PGP SIGNATURE-----<br>Version: GnuPG v1.4.3 (GNU/Linux)<br><br>iQIVAwUBRVLV27L3rFoFceCwAQL3aw//SkchtQFAGdoQkKu+8u9FertudZO9fHFD<br>9KlKaOBOhnvMydZUHBojaEz3HyTXB9KLX6nmRI3F4PwIi8N0zOSX0kzYNP6c43yT
<br>6V0C8v+kW+FRcCLp58iQ0MILNh54qMYmpD32i2dk0ErN7v9YyaOxPtGdIM/Gv/0R<br>89yn8FmlSg8Rf44Np44ZbR95arbeIXU+/YS640io6Mj6OppbugRkRnaI2ojHYWjk<br>01yV9CWH86vlSnPupD6+oUjtT/SUUSV3XT2XDqIyuExIu+sViUH6OSAE3MpfCIls<br>siAhdMpQkv05ISSo5VJemUidHwN7ajaFQ7cQf/V82DZsm/KwVE/MjVa7qZOYcUpx
<br>sxQBDFrLIFQX9OiWyf4fhtd52UhU80Au3IlKR6PjO24BEOeXTpQt+qpNusaA+/Tb<br>WgqWcqn8A6slBnNHuFtkZ1QbZFL+WxqJq4bbSWo3X5dLY0+cUw/MKMP7etRDbr0b<br>/5VSk6pPy5Ee7VS+M8UnlHCzHOswoiKxdFuhKJy6sWpkva1STTwAnmdBgDPJoGPH<br>SZ0MGkI8qV1SWwo/M8yVyr/RqWktbwNI2JO/tXbKmzk+PwTnXJAO/MMbeipS/rCP
<br>/5E3E2kOEdwxtrr3I48Z0QBSclJC6eoqnF0T7BTBkV94mVv0cUMxpf+IWSI2DffB<br>jQaSWrzTkjQ=<br>=VrMW<br>-----END PGP SIGNATURE-----<br><br><br>_______________________________________________<br>GiNaC-list mailing list<br><a href="mailto:GiNaC-list@ginac.de">
GiNaC-list@ginac.de</a><br><a href="https://www.cebix.net/mailman/listinfo/ginac-list">https://www.cebix.net/mailman/listinfo/ginac-list</a><br><br><br></blockquote></div><br>