ここでの定式化は、OneLabサイトの古いリンク[5]を参考にした。

GetDPには様々な微分形式が予め定義されている。 その中に、D1, D2があり、これは弾性体力学の定式化を楽にするために用意された様に思う。 これはベクトル場$(u_x,u_y,u_z)$に対し、 \begin{eqnarray} D1 & = & \left[ \frac{\partial u_x}{\partial x},\frac{\partial u_x}{\partial x},\frac{\partial u_x}{\partial x} \right], \\ D2 & = & \left[ \frac{\partial u_y}{\partial x} + \frac{\partial u_x}{\partial y} ,\frac{\partial u_z}{\partial y} + \frac{\partial u_y}{\partial z} ,\frac{\partial u_x}{\partial z} + \frac{\partial u_z}{\partial x} \right], \end{eqnarray} と定義されている。 また、ベクトル場に関しては、その要素$u_x,u_y,u_z$はそれぞれ専用のベクトル場要素、BF_Node_X, BF_Node_Y, BF_Node_Zのみが利用できる。 つまり、弾性体力学の弱形式(39)をGetDPスクリプト表示すると以下の様になる。

FunctionSpace {
  { Name H_u_Mec3D ; Type Vector ;
    BasisFunction {
      { Name sxn ; NameOfCoef uxn ; Function BF_NodeX ;
        Support DomainTot ; Entity NodesOf[ All ] ; }
      { Name syn ; NameOfCoef uyn ; Function BF_NodeY ;
        Support DomainTot ; Entity NodesOf[ All ] ; }
      { Name szn ; NameOfCoef uzn ; Function BF_NodeZ ;
        Support DomainTot ; Entity NodesOf[ All ] ; }
    }
    Constraint {
      { NameOfCoef uxn ;
        EntityType NodesOf ; NameOfConstraint DeplacementX ; }
      { NameOfCoef uyn ;
        EntityType NodesOf ; NameOfConstraint DeplacementY ; }
      { NameOfCoef uzn ;
        EntityType NodesOf ; NameOfConstraint DeplacementZ ; }
    }
  }
}

/*------------------------------------------------------------------------*/

Formulation {
  { Name Mec3D_u ; Type FemEquation ;
    Quantity {
      { Name u ; Type Local ; NameOfSpace H_u_Mec3D ; }
    }
    Equation {
      Galerkin { [ C_m_11[] * Dof{D1 u} , {D1 u} ] ;
        In Domain_Disp ; Jacobian Vol ; Integration GradGrad ; } 
      Galerkin { [ C_m_22[] * Dof{D2 u} , {D2 u} ] ;
        In Domain_Disp ; Jacobian Vol ; Integration GradGrad ; } 
      Galerkin { [ C_m_12[] * Dof{D2 u} , {D1 u} ] ;
        In Domain_Disp ; Jacobian Vol ; Integration GradGrad ; } 
      Galerkin { [ C_m_21[] * Dof{D1 u} , {D2 u} ] ;
        In Domain_Disp ; Jacobian Vol ; Integration GradGrad ; } 
      Galerkin { DtDt [ rho[] * Dof{u} , {u} ];
        In Domain_Disp ; Jacobian Vol ; Integration GradGrad ; }
      Galerkin { [ -K[] , {u} ] ;
        In Domain_Disp ; Jacobian Vol ; Integration GradGrad ; }
      Galerkin { [ -F[] , {u} ] ;
        In Domain_Force; Jacobian SurLinVol; Integration GradGrad; }
    }
  }
}

ここで、
\begin{equation} \left( p_{ij} \right) = \left( \begin{array}{cc} C\_m\_11 & C\_m\_12 \\ C\_m\_21 & C\_m\_22 \end{array} \right) \left( \begin{array}{c} D1 u\\ D2 u \end{array} \right). \end{equation} GetDPスクリプトの中の、K[], F[]はそれぞれ、構造に掛かる体積力(例えば重力)、構造に掛かる応力(例えば外力、圧力)である。

線型弾性体問題における根幹となるFormulationは以上となる。


FaLang translation system by Faboba