Research Article

A CAS Approach to Handle the Anisotropic Hooke’s Law for Cancellous Bone and Wood

Algorithm 4

In[10] HookeVto4[  myC_]  
Array[  myC[[  {#1,  #2}  /.  indexrule2to1,  {#3,  #4}  /.
indexrule2to1]]  &,  Array[3  &,  4]]
In[11] (C2  =  MakeTensor["C",  2,  6])  //  MatrixForm
In[12] C2
In[13] (C2to4  =  HookeVto4[C2]  )  //  MatrixForm
In[14] C2to4
In[15] Hooke4toV[  myC_]  
Apply[  Part[  myC,  ##]  &,
Array[  Join[  #1  /.  indexrule1to2  ,  #2  /.  indexrule1to2]  &,
Array[6  &,  2]]  ,  {2}]
In[16] C2back  =  Hooke4toV[C2to4]  )  //  MatrixForm
In[17] (C4to2  =  Hooke4toV[C4]  )  //  MatrixForm
  In[18] (C4back  =  HookeVto4[C4to2])  //  MatrixForm
In[19] Hooke2toV[myc2_]     Table
Which
i  <=  3  &&  j  <=  3  ,  myc2[[i,  j]],
4  <=  i  &&  j  <=  3  ,  myc2[[i,  j]]  /   (1/2),
i  <=  3  &&  4  <=  j  ,  myc2[[i,  j]]/   (1/2),
4  <=  i  &&  4  <=  j  ,  myc2[[i,  j]]/  2
],  {i,  6},  {j,  6}]
HookeVto2[mycV_]    Table[
Which[
i  <=  3  &&  j  <=  3  ,  mycV[[i,  j]],
4  <=  i  &&  j  <=  3  ,  mycV[[i,  j]]  *   (1/2),
i  <=  3  &&  4  <=  j  ,  mycV[[i,  j]]  *   (1/2),
4  <=  i  &&  4  <=  j  ,  mycV[[i,  j]]  *  2
  ],  {i,  6},  {j,  6}]
Hooke4to2[myC_]     HookeVto2[Hooke4toV[  myC  ]]
  Hooke2to4[myC_]     HookeVto4[Hooke2toV[  myC  ]]
  In[20] (CV  =  Hooke2toV[  C2  ]  )  //  MatrixForm
  In[21] (C2back  =  HookeVto2[  CV  ]  )  //  MatrixForm
In[22] (CV  =  Hooke4to2[C4])  //  MatrixForm
In[23] C4back  =  Hooke2to4[CV])  //  MatrixForm