MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
Membrane4EAS Class Reference

#include <membraneeas.h>

Inheritance diagram for Membrane4EAS:
Collaboration diagram for Membrane4EAS:

Public Types

enum  IntegrationPoint {
  IP_1_1 = 0, IP_1_2 = 1, IP_1_3 = 2, IP_2_1 = 3,
  IP_2_2 = 4, IP_2_3 = 5, IP_3_1 = 6, IP_3_2 = 7,
  IP_3_3 = 8, NUMIP = 4
}
 
enum  NodeName {
  NODE1 = 0, NODE2 = 1, NODE3 = 2, NODE4 = 3,
  NUMNODES = 4
}
 
enum  Deformations { STRAIN = 0, NUMDEFORM = 1 }
 
- Public Types inherited from Elem
enum  Type {
  UNKNOWN = -1, AIRPROPERTIES = 0, INDUCEDVELOCITY, AUTOMATICSTRUCTURAL,
  GRAVITY, BODY, JOINT, JOINT_REGULARIZATION,
  BEAM, PLATE, FORCE, INERTIA,
  ELECTRICBULK, ELECTRIC, THERMAL, HYDRAULIC,
  BULK, LOADABLE, DRIVEN, EXTERNAL,
  AEROMODAL, AERODYNAMIC, GENEL, SOCKETSTREAM_OUTPUT,
  RTAI_OUTPUT = SOCKETSTREAM_OUTPUT, LASTELEMTYPE
}
 
- Public Types inherited from SimulationEntity
typedef std::vector< Hint * > Hints
 
- Public Types inherited from ToBeOutput
enum  { OUTPUT = 0x1U, OUTPUT_MASK = 0xFU, OUTPUT_PRIVATE = 0x10U, OUTPUT_PRIVATE_MASK = ~OUTPUT_MASK }
 
- Public Types inherited from Membrane
enum  Type { UNKNOWN = -1, ELASTIC = 0, VISCOELASTIC, LASTMEMBRANETYPE }
 
typedef MyVectorHandler vh
 
typedef std::vector< vhvvh
 
typedef FullMatrixHandler fmh
 
typedef std::vector< fmhvfmh
 
typedef ConstitutiveLawOwner
< vh, fmh
ConstitutiveLawOwnerType
 

Public Member Functions

 Membrane4EAS (unsigned int uL, const DofOwner *pDO, const StructDispNode *pN1, const StructDispNode *pN2, const StructDispNode *pN3, const StructDispNode *pN4, const fmh &pDTmp, const vh &PreStress, flag fOut)
 
virtual ~Membrane4EAS (void)
 
virtual Membrane::Type GetMembraneType (void) const
 
virtual unsigned int iGetNumDof (void) const
 
virtual DofOrder::Order GetDofType (unsigned int i) const
 
virtual DofOrder::Order GetEqType (unsigned int i) const
 
virtual std::ostream & Restart (std::ostream &out) const
 
virtual void WorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
void SetValue (DataManager *pDM, VectorHandler &, VectorHandler &, SimulationEntity::Hints *ph=0)
 
virtual SubVectorHandlerAssRes (SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual void Output (OutputHandler &OH) const
 
virtual unsigned int iGetInitialNumDof (void) const
 
virtual void InitialWorkSpaceDim (integer *piNumRows, integer *piNumCols) const
 
virtual void SetInitialValue (VectorHandler &)
 
virtual VariableSubMatrixHandlerInitialAssJac (VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
 
virtual SubVectorHandlerInitialAssRes (SubVectorHandler &WorkVec, const VectorHandler &XCurr)
 
virtual const StructDispNodepGetNode (unsigned int i) const
 
virtual void GetConnectedNodes (std::vector< const Node * > &connectedNodes) const
 
- Public Member Functions inherited from Elem
 Elem (unsigned int uL, flag fOut)
 
virtual ~Elem (void)
 
virtual std::ostream & DescribeDof (std::ostream &out, const char *prefix="", bool bInitial=false) const
 
virtual void DescribeDof (std::vector< std::string > &desc, bool bInitial=false, int i=-1) const
 
virtual std::ostream & DescribeEq (std::ostream &out, const char *prefix="", bool bInitial=false) const
 
virtual void DescribeEq (std::vector< std::string > &desc, bool bInitial=false, int i=-1) const
 
virtual void AssMats (VariableSubMatrixHandler &WorkMatA, VariableSubMatrixHandler &WorkMatB, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual bool bInverseDynamics (void) const
 
void SetInverseDynamicsFlags (unsigned uIDF)
 
unsigned GetInverseDynamicsFlags (void) const
 
bool bIsErgonomy (void) const
 
bool bIsRightHandSide (void) const
 
virtual VariableSubMatrixHandlerAssJac (VariableSubMatrixHandler &WorkMat, const VectorHandler &XCurr)
 
virtual SubVectorHandlerAssRes (SubVectorHandler &WorkVec, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr, const VectorHandler &XPrimePrimeCurr, InverseDynamics::Order iOrder=InverseDynamics::INVERSE_DYNAMICS)
 
virtual int GetNumConnectedNodes (void) const
 
- Public Member Functions inherited from WithLabel
 WithLabel (unsigned int uL=0, const std::string &sN="")
 
virtual ~WithLabel (void)
 
void PutLabel (unsigned int uL)
 
void PutName (const std::string &sN)
 
unsigned int GetLabel (void) const
 
const std::string & GetName (void) const
 
- Public Member Functions inherited from SimulationEntity
 SimulationEntity (void)
 
virtual ~SimulationEntity (void)
 
virtual bool bIsValidIndex (unsigned int i) const
 
virtual HintParseHint (DataManager *pDM, const char *s) const
 
virtual void BeforePredict (VectorHandler &, VectorHandler &, VectorHandler &, VectorHandler &) const
 
virtual void AfterPredict (VectorHandler &X, VectorHandler &XP)
 
virtual void Update (const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual void DerivativesUpdate (const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
 
virtual void Update (const VectorHandler &XCurr, InverseDynamics::Order iOrder)
 
virtual void AfterConvergence (const VectorHandler &X, const VectorHandler &XP)
 
virtual void AfterConvergence (const VectorHandler &X, const VectorHandler &XP, const VectorHandler &XPP)
 
virtual unsigned int iGetNumPrivData (void) const
 
virtual unsigned int iGetPrivDataIdx (const char *s) const
 
virtual doublereal dGetPrivData (unsigned int i) const
 
virtual std::ostream & OutputAppend (std::ostream &out) const
 
virtual void ReadInitialState (MBDynParser &HP)
 
- Public Member Functions inherited from ToBeOutput
 ToBeOutput (flag fOut=fDefaultOut)
 
virtual ~ToBeOutput (void)
 
virtual void OutputPrepare (OutputHandler &OH)
 
virtual void Output (OutputHandler &OH, const VectorHandler &X, const VectorHandler &XP) const
 
virtual flag fToBeOutput (void) const
 
virtual bool bToBeOutput (void) const
 
virtual void SetOutputFlag (flag f=flag(1))
 
- Public Member Functions inherited from Membrane
 Membrane (unsigned uLabel, const DofOwner *pDO, flag fOut)
 
virtual ~Membrane (void)
 
virtual Elem::Type GetElemType (void) const
 
- Public Member Functions inherited from ElemGravityOwner
 ElemGravityOwner (unsigned int uL, flag fOut)
 
virtual ~ElemGravityOwner (void)
 
virtual doublereal dGetM (void) const
 
Vec3 GetS (void) const
 
Mat3x3 GetJ (void) const
 
Vec3 GetB (void) const
 
Vec3 GetG (void) const
 
- Public Member Functions inherited from GravityOwner
 GravityOwner (void)
 
virtual ~GravityOwner (void)
 
void PutGravity (const Gravity *pG)
 
virtual bool bGetGravity (const Vec3 &X, Vec3 &Acc) const
 
- Public Member Functions inherited from ElemWithDofs
 ElemWithDofs (unsigned int uL, const DofOwner *pDO, flag fOut)
 
virtual ~ElemWithDofs (void)
 
- Public Member Functions inherited from DofOwnerOwner
 DofOwnerOwner (const DofOwner *pDO)
 
virtual ~DofOwnerOwner ()
 
virtual const DofOwnerpGetDofOwner (void) const
 
virtual integer iGetFirstIndex (void) const
 
- Public Member Functions inherited from InitialAssemblyElem
 InitialAssemblyElem (unsigned int uL, flag fOut)
 
virtual ~InitialAssemblyElem (void)
 
- Public Member Functions inherited from SubjectToInitialAssembly
 SubjectToInitialAssembly (void)
 
virtual ~SubjectToInitialAssembly (void)
 

Static Public Attributes

static doublereal xi_i [NUMIP][2]
 
static doublereal w_i [NUMIP]
 
static doublereal xi_n [NUMNODES][2]
 
static doublereal xi_0 [2] = {0., 0.}
 

Protected Member Functions

virtual void AddInternalForces (Vec6 &, unsigned int)
 
- Protected Member Functions inherited from ElemGravityOwner
virtual Vec3 GetS_int (void) const
 
virtual Mat3x3 GetJ_int (void) const
 
virtual Vec3 GetB_int (void) const
 
virtual Vec3 GetG_int (void) const
 

Protected Attributes

const StructDispNodepNode [NUMNODES]
 
Vec3 xa_0 [NUMNODES]
 
Vec3 xa [NUMNODES]
 
Mat3x3 T_0_0
 
Mat3x3 T_0_i [NUMIP]
 
Mat3x3 T_0
 
Mat3x3 T_i [NUMIP]
 
Vec3 eps_tilde_0_i [NUMIP]
 
Vec3 eps_tilde_i [NUMIP]
 
fmh S_alpha_beta_0
 
doublereal alpha_0
 
doublereal alpha_i [NUMIP]
 
vfmh L_alpha_beta_i
 
vfmh B_overline_i
 
vfmh P_i
 
Vec3 y_i_1 [NUMIP]
 
Vec3 y_i_2 [NUMIP]
 
vh beta
 
vh epsilon_hat
 
vh epsilon
 
vvh FRef
 
bool bPreStress
 
vh PreStress
 
vfmh DRef
 
vvh stress_i
 
bool bFirstRes
 
- Protected Attributes inherited from WithLabel
unsigned int uLabel
 
std::string sName
 
- Protected Attributes inherited from ToBeOutput
flag fOutput
 
- Protected Attributes inherited from GravityOwner
GravitypGravity
 

Private Member Functions

void UpdateNodalAndAveragePos ()
 
void ComputeInitialIptOrientation ()
 

Detailed Description

Definition at line 61 of file membraneeas.h.

Member Enumeration Documentation

Enumerator
STRAIN 
NUMDEFORM 

Definition at line 105 of file membraneeas.h.

105  {
106  STRAIN = 0,
107 
108  NUMDEFORM = 1
109  };
Enumerator
IP_1_1 
IP_1_2 
IP_1_3 
IP_2_1 
IP_2_2 
IP_2_3 
IP_3_1 
IP_3_2 
IP_3_3 
NUMIP 

Definition at line 75 of file membraneeas.h.

Enumerator
NODE1 
NODE2 
NODE3 
NODE4 
NUMNODES 

Definition at line 92 of file membraneeas.h.

92  {
93  NODE1 = 0,
94  NODE2 = 1,
95  NODE3 = 2,
96  NODE4 = 3,
97 
98  NUMNODES = 4
99  };

Constructor & Destructor Documentation

Membrane4EAS::Membrane4EAS ( unsigned int  uL,
const DofOwner pDO,
const StructDispNode pN1,
const StructDispNode pN2,
const StructDispNode pN3,
const StructDispNode pN4,
const fmh pDTmp,
const vh PreStress,
flag  fOut 
)

Definition at line 110 of file membraneeas.cc.

References alpha_0, alpha_i, ComputeInitialIptOrientation(), DRef, eps_tilde_0_i, Mat3x3::GetCol(), iGetNumDof(), L_alpha_beta_i, NODE1, NODE2, NODE3, NODE4, NUMIP, NUMNODES, P_i, pNode, S_alpha_beta_0, SAFENEWWITHCONSTRUCTOR, T_0, T_0_0, T_0_i, T_i, xa, xa_0, xi_0, xi_i, y_i_1, and y_i_2.

125 :
126 Elem(uL, fOut),
127 Membrane(uL, pDO, fOut),
128 
129 S_alpha_beta_0(2, 2), // 2x2
130 
131 L_alpha_beta_i(NUMIP, fmh(4, 2) ), // 4x2
132 
133 B_overline_i(NUMIP, fmh(3, 12) ), // 12x24
134 
135 P_i(NUMIP, fmh(3, iGetNumDof()) ), // 12x(iGetNumDof)
136 
137 beta(iGetNumDof()), // 1x(iGetNumDof)
138 epsilon_hat(3), // 1x12
139 epsilon(3), // 1x12
140 
141 #ifndef USE_CL_IN_MEMBRANE
142 bPreStress(PreStress.Norm() > 0.),
144 #endif // ! USE_CL_IN_MEMBRANE
145 
146 DRef(NUMIP, fmh(3, 3)), // 12x12
147 stress_i(NUMIP, vh(3)) // 1x12
148 {
149 #ifdef USE_CL_IN_MEMBRANE
150  for (integer i = 0; i < NUMIP; i++) {
151  pD[i] = 0;
154  ConstitutiveLawOwnerType(pDTmp[i]));
155  }
156 #else // ! USE_CL_IN_MEMBRANE
157  for (unsigned i = 0; i < NUMIP; i++) {
158  DRef[i] = pDTmp;
159  }
160 #endif // ! USE_CL_IN_MEMBRANE
161 
162  pNode[NODE1] = pN1;
163  pNode[NODE2] = pN2;
164  pNode[NODE3] = pN3;
165  pNode[NODE4] = pN4;
166 // f[NODE1] = f1;
167 // f[NODE2] = f2;
168 // f[NODE3] = f3;
169 // f[NODE4] = f4;
171 // UpdateNodalAndAveragePos();
172  // copy ref values
173 // T0_overline = T_overline;
174  T_0_0 = T_0;
175  for (integer i = 0; i < NUMNODES; i++) {
176  xa_0[i] = xa[i];
177  }
178  for (integer i = 0; i < NUMIP; i++) {
179  T_0_i[i] = T_i[i];
180  }
181 
182 
183  fmh M_0(3, 3);
184  fmh M_0_Inv(3, 3);
185  // doublereal pd_M_0[9], *ppd_M_0[3]; fmh M_0(pd_M_0, ppd_M_0, 9, 3, 3);
186  // doublereal pd_M_0_Inv[9], *ppd_M_0_Inv[3]; fmh M_0_Inv(pd_M_0_Inv, ppd_M_0_Inv, 9, 3, 3);
187  {
188  Vec3 x_1 = InterpDeriv_xi1(xa, xi_0);
189  Vec3 x_2 = InterpDeriv_xi2(xa, xi_0);
190  S_alpha_beta_0(1, 1) = T_0_0.GetCol(1) * x_1;
191  S_alpha_beta_0(2, 1) = T_0_0.GetCol(2) * x_1;
192  S_alpha_beta_0(1, 2) = T_0_0.GetCol(1) * x_2;
193  S_alpha_beta_0(2, 2) = T_0_0.GetCol(2) * x_2;
194  alpha_0 = S_alpha_beta_0(1, 1) * S_alpha_beta_0(2, 2) -
195  S_alpha_beta_0(1, 2) * S_alpha_beta_0(2, 1);
196 
197  M_0(1, 1) = S_alpha_beta_0(1, 1) * S_alpha_beta_0(1, 1);
198  M_0(1, 2) = S_alpha_beta_0(1, 2) * S_alpha_beta_0(1, 2);
199  M_0(1, 3) = S_alpha_beta_0(1, 2) * S_alpha_beta_0(1, 1);
200 
201  M_0(2, 1) = S_alpha_beta_0(2, 1) * S_alpha_beta_0(2, 1);
202  M_0(2, 2) = S_alpha_beta_0(2, 2) * S_alpha_beta_0(2, 2);
203  M_0(2, 3) = S_alpha_beta_0(2, 2) * S_alpha_beta_0(2, 1);
204 
205  M_0(3, 1) = S_alpha_beta_0(1, 1) * S_alpha_beta_0(2, 1);
206  M_0(3, 2) = S_alpha_beta_0(1, 2) * S_alpha_beta_0(2, 2);
207  M_0(3, 3) = S_alpha_beta_0(1, 1) * S_alpha_beta_0(2, 2) +
208  S_alpha_beta_0(1, 2) * S_alpha_beta_0(2, 1);
209 
210  // M_0(4, 1) = S_alpha_beta_0(1, 1) * S_alpha_beta_0(2, 1);
211  // M_0(4, 2) = S_alpha_beta_0(1, 2) * S_alpha_beta_0(2, 2);
212  // M_0(4, 3) = S_alpha_beta_0(1, 2) * S_alpha_beta_0(2, 1);
213  // M_0(4, 4) = S_alpha_beta_0(1, 1) * S_alpha_beta_0(2, 2);
214 
215  // M_0(5, 5) = S_alpha_beta_0(1, 1);
216  // M_0(5, 6) = S_alpha_beta_0(1, 2);
217  // M_0(6, 5) = S_alpha_beta_0(2, 1);
218  // M_0(6, 6) = S_alpha_beta_0(2, 2);
219 
220  Inv3x3(M_0, M_0_Inv);
221  }
222 
223  for (integer i = 0; i < NUMIP; i++) {
224  fmh L_alpha_B_i(4, 2);
225  fmh S_alpha_beta_i(2, 2);
226  // doublereal pd_L_alpha_B_i[8], *ppd_L_alpha_B_i[2]; fmh L_alpha_B_i(pd_L_alpha_B_i, ppd_L_alpha_B_i, 8, 4, 2);
227  // doublereal pd_S_alpha_beta_i[4], *ppd_S_alpha_beta_i[2]; fmh S_alpha_beta_i(pd_S_alpha_beta_i, ppd_S_alpha_beta_i, 4, 2, 2);
228  Vec3 x_1 = InterpDeriv_xi1(xa, xi_i[i]);
229  Vec3 x_2 = InterpDeriv_xi2(xa, xi_i[i]);
230  S_alpha_beta_i(1, 1) = T_0_i[i].GetCol(1) * x_1;
231  S_alpha_beta_i(2, 1) = T_0_i[i].GetCol(2) * x_1;
232  S_alpha_beta_i(1, 2) = T_0_i[i].GetCol(1) * x_2;
233  S_alpha_beta_i(2, 2) = T_0_i[i].GetCol(2) * x_2;
234  // alpha_i = det(S_alpha_beta_i)
235  alpha_i[i] = S_alpha_beta_i(1, 1) * S_alpha_beta_i(2, 2) -
236  S_alpha_beta_i(1, 2) * S_alpha_beta_i(2, 1);
237 
238  // xi_i_i = S_alpha_beta_i^{-1}
239  FullMatrixHandler xi_i_i(2, 2);
240  Inv2x2(S_alpha_beta_i, xi_i_i);
241 
242  for (integer n = 0; n < NUMNODES; n++) {
243  for (integer ii = 0; ii < 2; ii++) {
244  L_alpha_B_i(n + 1, ii + 1) = LI_J[n][ii](xi_i[i]);
245  }
246  }
247 
248  L_alpha_B_i.MatMatMul(L_alpha_beta_i[i], xi_i_i);
249 
250  fmh H(3, iGetNumDof());
251  // integer i_H = iGetNumDof(); doublereal pd_H[3*i_H], *ppd_H[i_H]; fmh H(pd_H, ppd_H, 3*i_H, 3, i_H);
252  doublereal t = xi_i[i][0] * xi_i[i][1];
253  H(1, 1) = xi_i[i][0];
254  H(1, 2) = t;
255 
256  H(2, 3) = xi_i[i][1];
257  H(2, 4) = t;
258 
259  H(3, 5) = xi_i[i][0];
260  H(3, 6) = t;
261 
262  H(3, 7) = xi_i[i][1];
263 // H(4, 6) = t;
264 
265  fmh Perm(3, 3), tmpP(3, iGetNumDof()); // Perm (12x6), tmpP(6xiGetNumDof)
266  // doublereal pd_Perm[9], *ppd_Perm[3]; fmh Perm(pd_Perm, ppd_Perm, 9, 3, 3);
267  // integer i_tmpP = iGetNumDof(); doublereal pd_tmpP[3*i_tmpP], *ppd_tmpP[i_tmpP]; fmh tmpP(pd_tmpP, ppd_tmpP, 3*i_tmpP, 3, i_tmpP);
268 // FIXME: CHECK ORDER !!!! apparently no need for permutation
269  Perm(1, 1) = 1.;
270  Perm(2, 2) = 1.;
271  Perm(3, 3) = 1.;
272 
273  M_0_Inv.MatTMatMul(tmpP, H);
274  Perm.MatMatMul(P_i[i], tmpP);
275  P_i[i].ScalarMul(alpha_0 / alpha_i[i]);
276  }
277  // save initial axial values
278  for (integer i = 0; i < NUMIP; i++) {
279  InterpDeriv(xa, L_alpha_beta_i[i], y_i_1[i], y_i_2[i]);
280  fmh F(3, 2);
281  // doublereal pd_F[6], *ppd_F[2]; fmh(pd_F, ppd_F, 6, 3, 2);
282  F.Put(1, 1, y_i_1[i]);
283  F.Put(1, 2, y_i_2[i]);
284  fmh FTF(2, 2);
285  // doublereal pd_FTF[4], *ppd_FTF[2]; fmh FTF(pd_FTF, ppd_FTF, 4, 2, 2);
286  F.MatTMatMul(FTF, F);
287  eps_tilde_0_i[i](1) = 0.5*( FTF(1, 1) - 1 );
288  eps_tilde_0_i[i](2) = 0.5*( FTF(2, 2) - 1 );
289  eps_tilde_0_i[i](3) = FTF(1, 2);
290 /*
291  eps_tilde_1_0_i[i] = T_i[i].MulTV(y_i_1[i]);
292  eps_tilde_2_0_i[i] = T_i[i].MulTV(y_i_2[i]);
293 */
294  }
295 }
Mat3x3 T_i[NUMIP]
Definition: membraneeas.h:125
Vec3 xa_0[NUMNODES]
Definition: membraneeas.h:116
vfmh L_alpha_beta_i
Definition: membraneeas.h:148
Definition: matvec3.h:98
doublereal alpha_i[NUMIP]
Definition: membraneeas.h:147
ConstitutiveLawOwner< vh, fmh > ConstitutiveLawOwnerType
Definition: membrane.h:85
MyVectorHandler vh
Definition: membrane.h:81
Vec3 GetCol(unsigned short int i) const
Definition: matvec3.h:903
vfmh B_overline_i
Definition: membraneeas.h:150
Vec3 y_i_2[NUMIP]
Definition: membraneeas.h:155
virtual doublereal Norm(void) const
Definition: vh.cc:262
Vec3 xa[NUMNODES]
Definition: membraneeas.h:117
FullMatrixHandler fmh
Definition: membrane.h:83
void ComputeInitialIptOrientation()
Definition: membraneeas.cc:87
Mat3x3 T_0_i[NUMIP]
Definition: membraneeas.h:122
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)
Definition: mynewmem.h:698
Membrane(unsigned uLabel, const DofOwner *pDO, flag fOut)
Definition: membrane.cc:59
static doublereal xi_0[2]
Definition: membraneeas.h:103
const StructDispNode * pNode[NUMNODES]
Definition: membraneeas.h:113
doublereal alpha_0
Definition: membraneeas.h:146
fmh S_alpha_beta_0
Definition: membraneeas.h:145
Mat3x3 T_0_0
Definition: membraneeas.h:121
static doublereal xi_i[NUMIP][2]
Definition: membraneeas.h:89
Vec3 y_i_1[NUMIP]
Definition: membraneeas.h:154
Elem(unsigned int uL, flag fOut)
Definition: elem.cc:41
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51
virtual unsigned int iGetNumDof(void) const
Definition: membraneeas.h:210
Vec3 eps_tilde_0_i[NUMIP]
Definition: membraneeas.h:129

Here is the call graph for this function:

Membrane4EAS::~Membrane4EAS ( void  )
virtual

Definition at line 297 of file membraneeas.cc.

References ASSERT, NUMIP, and SAFEDELETE.

298 {
299 #ifdef USE_CL_IN_MEMBRANE
300  for (integer i = 0; i < NUMIP; i++) {
301  ASSERT(pD[i] != 0);
302  if (pD[i] != 0) {
303  SAFEDELETE(pD[i]);
304  }
305  }
306 #endif // USE_CL_IN_MEMBRANE
307 }
#define ASSERT(expression)
Definition: colamd.c:977
long int integer
Definition: colamd.c:51
#define SAFEDELETE(pnt)
Definition: mynewmem.h:710

Member Function Documentation

virtual void Membrane4EAS::AddInternalForces ( Vec6 ,
unsigned  int 
)
inlineprotectedvirtual

Definition at line 182 of file membraneeas.h.

References NO_OP.

182  {
183  NO_OP;
184  };
#define NO_OP
Definition: myassert.h:74
VariableSubMatrixHandler & Membrane4EAS::AssJac ( VariableSubMatrixHandler WorkMat,
doublereal  dCoef,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr 
)
virtual

Implements Elem.

Definition at line 429 of file membraneeas.cc.

References FullSubMatrixHandler::Add(), FullSubMatrixHandler::AddT(), alpha_i, B_overline_i, DRef, DofOwnerOwner::iGetFirstIndex(), StructDispNode::iGetFirstMomentumIndex(), StructDispNode::iGetFirstPositionIndex(), iGetNumDof(), FullSubMatrixHandler::IncCoef(), L_alpha_beta_i, MatrixHandler::MatMatMul(), NUMIP, NUMNODES, P_i, pNode, FullSubMatrixHandler::PutColIndex(), FullSubMatrixHandler::PutRowIndex(), FullSubMatrixHandler::ResizeReset(), VariableSubMatrixHandler::SetFull(), stress_i, T_i, w_i, and WorkSpaceDim().

433 {
434  FullSubMatrixHandler& WM = WorkMat.SetFull();
435 
436  /* Dimensiona e resetta la matrice di lavoro */
437  integer iNumRows = 0;
438  integer iNumCols = 0;
439  WorkSpaceDim(&iNumRows, &iNumCols);
440  WM.ResizeReset(iNumRows, iNumCols);
441 
442  /* Recupera e setta gli indici */
443  integer iFirstReactionIndex = iGetFirstIndex();
444  for (integer i = 0; i < 4; i++) {
445  integer iNodeFirstPosIndex = pNode[i]->iGetFirstPositionIndex();
446  integer iNodeFirstMomIndex = pNode[i]->iGetFirstMomentumIndex();
447  for (int iCnt = 1; iCnt <= 3; iCnt++) {
448  WM.PutRowIndex(iCnt + 3 * i, iNodeFirstMomIndex + iCnt);
449  WM.PutColIndex(iCnt + 3 * i, iNodeFirstPosIndex + iCnt);
450  }
451  }
452  for (unsigned int iCnt = 1; iCnt <= iGetNumDof(); iCnt++) {
453  WM.PutRowIndex(12 + iCnt, iFirstReactionIndex + iCnt);
454  WM.PutColIndex(12 + iCnt, iFirstReactionIndex + iCnt);
455  }
456 
457  // tangente
458  FullMatrixHandler Km(12, 12);
459  FullMatrixHandler K_beta_q(iGetNumDof(), 12);
460  FullMatrixHandler K_beta_beta(iGetNumDof(), iGetNumDof());
461 
462  FullMatrixHandler Ktm(12, 3);
463 
464  FullMatrixHandler Ktbetaq(iGetNumDof(), 3);
465 
466  FullMatrixHandler C(3, 3);
467  for (integer i = 0; i < NUMIP; i++) {
468 
469 #ifdef USE_CL_IN_SHELL
470  C = pD[i]->GetFDE();
471 #else // ! USE_CL_IN_SHELL
472  C = DRef[i];
473 #endif // ! USE_CL_IN_SHELL
474 
475  B_overline_i[i].MatTMatMul(Ktm, C);
476 
477  Ktm.MatMatMul(Km, B_overline_i[i]);
478 
479  P_i[i].MatTMatMul(Ktbetaq, C);
480  Ktbetaq.MatMatMul(K_beta_q, B_overline_i[i]);
481 
482  Ktbetaq.MatMatMul(K_beta_beta, P_i[i]);
483 
484  {
485  Vec3 n1;
486  ExtractVec3(n1, stress_i[i], 1);
487 
488  Vec3 Tn1 = T_i[i] * n1;
489  Vec3 Tn2 = T_i[i] * n1;
490  Vec3 Tm1 = T_i[i] * n1;
491  Vec3 Tm2 = T_i[i] * n1;
492  for (int n = 0; n < NUMNODES; n++) {
493  for (int m = 0; m < NUMNODES; m++) {
494  }
495  }
496  }
497 
498  WM.Add(1, 1, Km, alpha_i[i] * w_i[i] * dCoef);
499 
500  WM.AddT(1, 13, K_beta_q, alpha_i[i] * w_i[i]);
501  WM.Add(13, 1, K_beta_q, alpha_i[i] * w_i[i] * dCoef);
502  WM.Add(13, 13, K_beta_beta, alpha_i[i] * w_i[i]);
503 
504  for (integer l = 0; l < 3; l++) {
505  doublereal Fl_1[4], Fl_2[4];
506  for (integer n = 0; n < 4; n++) {
507  Fl_1[n] = L_alpha_beta_i[i](n + 1, 1);
508  Fl_2[n] = L_alpha_beta_i[i](n + 1, 2);
509  }
510  for (integer n = 0; n < 4; n++) {
511  for (integer m = 0; m < 4; m++) {
512  WM.IncCoef(3 * n + l + 1, 3 * m + l + 1, Fl_1[n] * stress_i[i](1) * Fl_1[m] * alpha_i[i] * w_i[i] * dCoef);
513  WM.IncCoef(3 * n + l + 1, 3 * m + l + 1, Fl_2[n] * stress_i[i](2) * Fl_2[m] * alpha_i[i] * w_i[i] * dCoef);
514  WM.IncCoef(3 * n + l + 1, 3 * m + l + 1, (Fl_1[n] * stress_i[i](3) * Fl_2[m] + Fl_2[n] * stress_i[i](3) * Fl_1[m])* alpha_i[i] * w_i[i] * dCoef);
515  }
516  }
517  }
518 
519  }
520 
521  return WorkMat;
522 
523 }
Mat3x3 T_i[NUMIP]
Definition: membraneeas.h:125
void PutColIndex(integer iSubCol, integer iCol)
Definition: submat.h:325
vfmh L_alpha_beta_i
Definition: membraneeas.h:148
Definition: matvec3.h:98
FullSubMatrixHandler & SetFull(void)
Definition: submat.h:1168
doublereal alpha_i[NUMIP]
Definition: membraneeas.h:147
void Add(integer iRow, integer iCol, const Vec3 &v)
Definition: submat.cc:209
vfmh B_overline_i
Definition: membraneeas.h:150
void IncCoef(integer iRow, integer iCol, const doublereal &dCoef)
Definition: submat.h:683
void AddT(integer iRow, integer iCol, const Vec3 &v)
Definition: submat.cc:227
virtual integer iGetFirstMomentumIndex(void) const =0
virtual integer iGetFirstPositionIndex(void) const
Definition: strnode.h:452
virtual void ResizeReset(integer, integer)
Definition: submat.cc:182
const StructDispNode * pNode[NUMNODES]
Definition: membraneeas.h:113
void PutRowIndex(integer iSubRow, integer iRow)
Definition: submat.h:311
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: membraneeas.h:241
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51
static doublereal w_i[NUMIP]
Definition: membraneeas.h:90
virtual unsigned int iGetNumDof(void) const
Definition: membraneeas.h:210

Here is the call graph for this function:

SubVectorHandler & Membrane4EAS::AssRes ( SubVectorHandler WorkVec,
doublereal  dCoef,
const VectorHandler XCurr,
const VectorHandler XPrimeCurr 
)
virtual

Implements Elem.

Definition at line 309 of file membraneeas.cc.

References alpha_i, B_overline_i, beta, bPreStress, DRef, eps_tilde_0_i, eps_tilde_i, epsilon, epsilon_hat, DofOwnerOwner::iGetFirstIndex(), StructDispNode::iGetFirstMomentumIndex(), iGetNumDof(), L_alpha_beta_i, NUMIP, NUMNODES, P_i, pNode, PreStress, MyVectorHandler::Put(), SubVectorHandler::PutRowIndex(), VectorHandler::ResizeReset(), stress_i, UpdateNodalAndAveragePos(), w_i, WorkSpaceDim(), xa, y_i_1, and y_i_2.

313 {
314 
315  /* Dimensiona e resetta la matrice di lavoro */
316  integer iNumRows = 0;
317  integer iNumCols = 0;
318  WorkSpaceDim(&iNumRows, &iNumCols);
319  WorkVec.ResizeReset(iNumRows);
320 
321  /* Recupera e setta gli indici */
322  for (integer i = 0; i < 4; i++) {
323  integer iNodeFirstMomIndex = pNode[i]->iGetFirstMomentumIndex();
324  for (int iCnt = 1; iCnt <= 3; iCnt++) {
325  WorkVec.PutRowIndex(iCnt + 3 * i, iNodeFirstMomIndex + iCnt);
326  }
327  }
328 
329  integer iFirstReactionIndex = iGetFirstIndex();
330  for (unsigned int iCnt = 1; iCnt <= iGetNumDof(); iCnt++) {
331  WorkVec.PutRowIndex(12 + iCnt, iFirstReactionIndex + iCnt);
332  }
333 
335  for (unsigned int i = 1; i <= iGetNumDof(); i++) {
336  beta(i) = XCurr(iFirstReactionIndex + i);
337  }
338 
339 
340  for (integer i = 0; i < NUMIP; i++) {
341  InterpDeriv(xa, L_alpha_beta_i[i], y_i_1[i], y_i_2[i]);
342  fmh F(3, 2);
343  F.Put(1, 1, y_i_1[i]);
344  F.Put(1, 2, y_i_2[i]);
345  fmh FTF(2, 2);
346  F.MatTMatMul(FTF, F);
347  eps_tilde_i[i](1) = 0.5*( FTF(1, 1) - 1 );
348  eps_tilde_i[i](2) = 0.5*( FTF(2, 2) - 1 );
349  eps_tilde_i[i](3) = FTF(1, 2);
350  eps_tilde_i[i] -= eps_tilde_0_i[i];
351 /*
352  eps_tilde_1_i[i] = T_i[i].MulTV(y_i_1[i]) - eps_tilde_1_0_i[i];
353  eps_tilde_2_i[i] = T_i[i].MulTV(y_i_2[i]) - eps_tilde_2_0_i[i];
354 */
355 
356  // parte variabile di B_overline_i
357  for (integer n = 0; n < NUMNODES; n++) {
358 
359  fmh TMP_1(3, 3), TMP_2(3, 3);
360  // TMP_1.PutT(1, 1, T_i[i] * L_alpha_beta_i[i](n + 1, 1));
361  // TMP_2.PutT(1, 1, T_i[i] * L_alpha_beta_i[i](n + 1, 2));
362 
363  B_overline_i[i].PutCoef(1, 1 + 3 * n, F(1, 1) * L_alpha_beta_i[i](n + 1, 1) );
364  B_overline_i[i].PutCoef(1, 2 + 3 * n, F(2, 1) * L_alpha_beta_i[i](n + 1, 1) );
365  B_overline_i[i].PutCoef(1, 3 + 3 * n, F(3, 1) * L_alpha_beta_i[i](n + 1, 1) );
366  B_overline_i[i].PutCoef(2, 1 + 3 * n, F(1, 2) * L_alpha_beta_i[i](n + 1, 2) );
367  B_overline_i[i].PutCoef(2, 2 + 3 * n, F(2, 2) * L_alpha_beta_i[i](n + 1, 2) );
368  B_overline_i[i].PutCoef(2, 3 + 3 * n, F(3, 2) * L_alpha_beta_i[i](n + 1, 2) );
369  B_overline_i[i].PutCoef(3, 1 + 3 * n, F(1, 1) * L_alpha_beta_i[i](n + 1, 2) + F(1, 2) * L_alpha_beta_i[i](n + 1, 1) );
370  B_overline_i[i].PutCoef(3, 2 + 3 * n, F(2, 1) * L_alpha_beta_i[i](n + 1, 2) + F(2, 2) * L_alpha_beta_i[i](n + 1, 1) );
371  B_overline_i[i].PutCoef(3, 3 + 3 * n, F(3, 1) * L_alpha_beta_i[i](n + 1, 2) + F(3, 2) * L_alpha_beta_i[i](n + 1, 1) );
372 
373 /*
374  // delta epsilon_tilde_1_i
375  B_overline_i[i].PutT(1, 1 + 3 * n, T_i[i] * L_alpha_beta_i[i](n + 1, 1));
376  // delta epsilon_tilde_2_i
377  // B_overline_i[i].PutT(4, 1 + 3 * n, T_i[i] * L_alpha_beta_i[i](n + 1, 2));
378 */
379 
380  }
381 
382  }
383 
384 
385  /* Calcola le azioni interne */
386  for (integer i = 0; i < NUMIP; i++) {
387  epsilon.Put(1, eps_tilde_i[i]);
388  // TODO: recupera epsilon_hat con l'ordine giusto per qua
389  P_i[i].MatVecMul(epsilon_hat, beta);
390 
391 
392 
393 
394 
395 // FIXME: add epsilon_hat to enhance strains
396  epsilon += epsilon_hat;
397 
398 
399 
400 #ifdef USE_CL_IN_MEMBRANE
401  pD[i]->Update(epsilon);
402  stress_i[i] = pD[i]->GetF();
403 #else // ! USE_CL_IN_MEMBRANE
404  DRef[i].MatVecMul(stress_i[i], epsilon);
405  if (bPreStress) {
406  stress_i[i] += PreStress;
407  }
408 #endif // ! USE_CL_IN_MEMBRANE
409  }
410 
411 
412  //Residuo
413  //forze di volume
414  MyVectorHandler rd(12);
415  MyVectorHandler rbeta(iGetNumDof());
416  for (integer i = 0; i < NUMIP; i++) {
417  B_overline_i[i].MatTVecMul(rd, stress_i[i]);
418  P_i[i].MatTVecMul(rbeta, stress_i[i]);
419 
420  AssembleVector(WorkVec, 1, rd, -alpha_i[i] * w_i[i]);
421  AssembleVector(WorkVec, 13, rbeta, -alpha_i[i] * w_i[i]);
422  }
423 
424  return WorkVec;
425 }
vfmh L_alpha_beta_i
Definition: membraneeas.h:148
virtual void ResizeReset(integer)
Definition: vh.cc:55
doublereal alpha_i[NUMIP]
Definition: membraneeas.h:147
Vec3 eps_tilde_i[NUMIP]
Definition: membraneeas.h:131
vfmh B_overline_i
Definition: membraneeas.h:150
Vec3 y_i_2[NUMIP]
Definition: membraneeas.h:155
virtual void Put(integer iRow, const Vec3 &v)
Definition: vh.cc:699
void UpdateNodalAndAveragePos()
Definition: membraneeas.cc:79
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
Vec3 xa[NUMNODES]
Definition: membraneeas.h:117
FullMatrixHandler fmh
Definition: membrane.h:83
virtual integer iGetFirstMomentumIndex(void) const =0
const StructDispNode * pNode[NUMNODES]
Definition: membraneeas.h:113
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
Definition: membraneeas.h:241
Vec3 y_i_1[NUMIP]
Definition: membraneeas.h:154
virtual integer iGetFirstIndex(void) const
Definition: dofown.h:127
long int integer
Definition: colamd.c:51
static doublereal w_i[NUMIP]
Definition: membraneeas.h:90
virtual unsigned int iGetNumDof(void) const
Definition: membraneeas.h:210
Vec3 eps_tilde_0_i[NUMIP]
Definition: membraneeas.h:129

Here is the call graph for this function:

void Membrane4EAS::ComputeInitialIptOrientation ( void  )
private

Definition at line 87 of file membraneeas.cc.

References Vec3::Cross(), Vec3::Norm(), NUMIP, T_0, T_i, UpdateNodalAndAveragePos(), xa, xi_0, and xi_i.

Referenced by Membrane4EAS().

88 {
90  for (integer i = 0; i < NUMIP; i++) {
91  Vec3 t1 = InterpDeriv_xi1(xa, xi_i[i]);
92  t1 = t1 / t1.Norm();
93  Vec3 t2 = InterpDeriv_xi2(xa, xi_i[i]);
94  t2 = t2 / t2.Norm();
95  Vec3 t3 = t1.Cross(t2);
96  t3 = t3 / t3.Norm();
97  t2 = t3.Cross(t1);
98  T_i[i] = Mat3x3(t1, t2, t3);
99  }
100  Vec3 t1 = InterpDeriv_xi1(xa, xi_0);
101  t1 = t1 / t1.Norm();
102  Vec3 t2 = InterpDeriv_xi2(xa, xi_0);
103  t2 = t2 / t2.Norm();
104  Vec3 t3 = t1.Cross(t2);
105  t3 = t3 / t3.Norm();
106  t2 = t3.Cross(t1);
107  T_0 = Mat3x3(t1, t2, t3);
108 }
Mat3x3 T_i[NUMIP]
Definition: membraneeas.h:125
Vec3 Cross(const Vec3 &v) const
Definition: matvec3.h:218
Definition: matvec3.h:98
doublereal Norm(void) const
Definition: matvec3.h:263
void UpdateNodalAndAveragePos()
Definition: membraneeas.cc:79
Vec3 xa[NUMNODES]
Definition: membraneeas.h:117
static doublereal xi_0[2]
Definition: membraneeas.h:103
static doublereal xi_i[NUMIP][2]
Definition: membraneeas.h:89
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

virtual void Membrane4EAS::GetConnectedNodes ( std::vector< const Node * > &  connectedNodes) const
inlinevirtual

Reimplemented from Elem.

Definition at line 327 of file membraneeas.h.

References NUMNODES, and pNode.

327  {
328  connectedNodes.resize(NUMNODES);
329  for (int i = 0; i < NUMNODES; i++) {
330  connectedNodes[i] = pNode[i];
331  }
332  };
const StructDispNode * pNode[NUMNODES]
Definition: membraneeas.h:113
virtual DofOrder::Order Membrane4EAS::GetDofType ( unsigned int  i) const
inlinevirtual

Reimplemented from Elem.

Definition at line 216 of file membraneeas.h.

References DofOrder::ALGEBRAIC, ASSERT, and iGetNumDof().

216  {
217  ASSERT(i >= 0 && i <= iGetNumDof());
218  return DofOrder::ALGEBRAIC;
219  };
#define ASSERT(expression)
Definition: colamd.c:977
virtual unsigned int iGetNumDof(void) const
Definition: membraneeas.h:210

Here is the call graph for this function:

virtual DofOrder::Order Membrane4EAS::GetEqType ( unsigned int  i) const
inlinevirtual

Reimplemented from SimulationEntity.

Definition at line 221 of file membraneeas.h.

References DofOrder::ALGEBRAIC, ASSERT, and iGetNumDof().

221  {
222  ASSERT(i >= 0 && i <= iGetNumDof());
223  return DofOrder::ALGEBRAIC;
224  };
#define ASSERT(expression)
Definition: colamd.c:977
virtual unsigned int iGetNumDof(void) const
Definition: membraneeas.h:210

Here is the call graph for this function:

virtual Membrane::Type Membrane4EAS::GetMembraneType ( void  ) const
inlinevirtual

Definition at line 206 of file membraneeas.h.

References Membrane::ELASTIC.

206  {
207  return Membrane::ELASTIC;
208  };
virtual unsigned int Membrane4EAS::iGetInitialNumDof ( void  ) const
inlinevirtual

Implements SubjectToInitialAssembly.

Definition at line 292 of file membraneeas.h.

292  {
293  return 0;
294  };
virtual unsigned int Membrane4EAS::iGetNumDof ( void  ) const
inlinevirtual

Reimplemented from Elem.

Definition at line 210 of file membraneeas.h.

Referenced by AssJac(), AssRes(), GetDofType(), GetEqType(), Membrane4EAS(), and WorkSpaceDim().

210  {
211  //return 14;
212  //return 13;
213  return 7;
214  };
VariableSubMatrixHandler & Membrane4EAS::InitialAssJac ( VariableSubMatrixHandler WorkMat,
const VectorHandler XCurr 
)
virtual

Implements SubjectToInitialAssembly.

Definition at line 542 of file membraneeas.cc.

References VariableSubMatrixHandler::SetNullMatrix().

544 {
545  WorkMat.SetNullMatrix();
546  return WorkMat;
547 }
void SetNullMatrix(void)
Definition: submat.h:1159

Here is the call graph for this function:

SubVectorHandler & Membrane4EAS::InitialAssRes ( SubVectorHandler WorkVec,
const VectorHandler XCurr 
)
virtual

Implements SubjectToInitialAssembly.

Definition at line 550 of file membraneeas.cc.

References VectorHandler::Resize().

551 {
552  WorkVec.Resize(0);
553  return WorkVec;
554 }
virtual void Resize(integer iNewSize)=0

Here is the call graph for this function:

virtual void Membrane4EAS::InitialWorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
inlinevirtual

Implements SubjectToInitialAssembly.

Definition at line 297 of file membraneeas.h.

297  {
298  *piNumRows = 3*4;
299  *piNumCols = 3*4;
300  };
void Membrane4EAS::Output ( OutputHandler OH) const
virtual

Reimplemented from ToBeOutput.

Definition at line 573 of file membraneeas.cc.

References ToBeOutput::bToBeOutput(), WithLabel::GetLabel(), NUMIP, OutputHandler::PLATES, OutputHandler::Plates(), stress_i, and OutputHandler::UseText().

574 {
575  if (bToBeOutput()) {
576  if (OH.UseText(OutputHandler::PLATES)) {
577  std::ostream& out = OH.Plates();
578  out << std::setw(8) << GetLabel();
579  // TODO: complete
580  for (integer i = 0; i < NUMIP; i++) {
581  for (integer r = 1; r <= 3; r++) {
582  out << " " << stress_i[i](r);
583  }
584  }
585  out << std::endl;
586  }
587  }
588 }
virtual bool bToBeOutput(void) const
Definition: output.cc:890
std::ostream & Plates(void) const
Definition: output.h:580
long int integer
Definition: colamd.c:51
unsigned int GetLabel(void) const
Definition: withlab.cc:62
bool UseText(int out) const
Definition: output.cc:446

Here is the call graph for this function:

const StructDispNode * Membrane4EAS::pGetNode ( unsigned int  i) const
virtual

Definition at line 558 of file membraneeas.cc.

References ASSERT, MBDYN_EXCEPT_ARGS, and pNode.

559 {
560  ASSERT(i >= 1 && i <= 4);
561  switch (i) {
562  case 1:
563  case 2:
564  case 3:
565  case 4:
566  return pNode[i - 1];
567  default:
569  }
570 }
#define MBDYN_EXCEPT_ARGS
Definition: except.h:63
#define ASSERT(expression)
Definition: colamd.c:977
const StructDispNode * pNode[NUMNODES]
Definition: membraneeas.h:113
std::ostream & Membrane4EAS::Restart ( std::ostream &  out) const
virtual

Implements Elem.

Definition at line 527 of file membraneeas.cc.

528 {
529  return out << "# not implemented yet" << std::endl;
530 }
virtual void Membrane4EAS::SetInitialValue ( VectorHandler X)
inlinevirtual

Initialize state vector used in initial assembly. May set internal states of the element. Do not rely on being always called, because initial assembly could be implicitly or explicitly skipped

Reimplemented from DofOwnerOwner.

Definition at line 302 of file membraneeas.h.

References NO_OP.

302  {
303  NO_OP;
304  };
#define NO_OP
Definition: myassert.h:74
void Membrane4EAS::SetValue ( DataManager pDM,
VectorHandler ,
VectorHandler ,
SimulationEntity::Hints ph = 0 
)
virtual

Reimplemented from SimulationEntity.

Definition at line 534 of file membraneeas.cc.

References NO_OP.

537 {
538  NO_OP;
539 }
#define NO_OP
Definition: myassert.h:74
void Membrane4EAS::UpdateNodalAndAveragePos ( void  )
private

Definition at line 79 of file membraneeas.cc.

References StructDispNode::GetXCurr(), NUMNODES, pNode, and xa.

Referenced by AssRes(), and ComputeInitialIptOrientation().

80 {
81  for (integer i = 0; i < NUMNODES; i++) {
82  xa[i] = pNode[i]->GetXCurr();
83  }
84 }
Vec3 xa[NUMNODES]
Definition: membraneeas.h:117
virtual const Vec3 & GetXCurr(void) const
Definition: strnode.h:310
const StructDispNode * pNode[NUMNODES]
Definition: membraneeas.h:113
long int integer
Definition: colamd.c:51

Here is the call graph for this function:

virtual void Membrane4EAS::WorkSpaceDim ( integer piNumRows,
integer piNumCols 
) const
inlinevirtual

Implements Elem.

Definition at line 241 of file membraneeas.h.

References iGetNumDof().

Referenced by AssJac(), and AssRes().

241  {
242  *piNumRows = 3*4 + iGetNumDof();
243  *piNumCols = 3*4 + iGetNumDof();
244  };
virtual unsigned int iGetNumDof(void) const
Definition: membraneeas.h:210

Here is the call graph for this function:

Member Data Documentation

doublereal Membrane4EAS::alpha_0
protected

Definition at line 146 of file membraneeas.h.

Referenced by Membrane4EAS().

doublereal Membrane4EAS::alpha_i[NUMIP]
protected

Definition at line 147 of file membraneeas.h.

Referenced by AssJac(), AssRes(), and Membrane4EAS().

vfmh Membrane4EAS::B_overline_i
protected

Definition at line 150 of file membraneeas.h.

Referenced by AssJac(), and AssRes().

vh Membrane4EAS::beta
protected

Definition at line 157 of file membraneeas.h.

Referenced by AssRes().

bool Membrane4EAS::bFirstRes
protected

Definition at line 177 of file membraneeas.h.

bool Membrane4EAS::bPreStress
protected

Definition at line 166 of file membraneeas.h.

Referenced by AssRes().

vfmh Membrane4EAS::DRef
protected

Definition at line 171 of file membraneeas.h.

Referenced by AssJac(), AssRes(), and Membrane4EAS().

Vec3 Membrane4EAS::eps_tilde_0_i[NUMIP]
protected

Definition at line 129 of file membraneeas.h.

Referenced by AssRes(), and Membrane4EAS().

Vec3 Membrane4EAS::eps_tilde_i[NUMIP]
protected

Definition at line 131 of file membraneeas.h.

Referenced by AssRes().

vh Membrane4EAS::epsilon
protected

Definition at line 159 of file membraneeas.h.

Referenced by AssRes().

vh Membrane4EAS::epsilon_hat
protected

Definition at line 158 of file membraneeas.h.

Referenced by AssRes().

vvh Membrane4EAS::FRef
protected

Definition at line 165 of file membraneeas.h.

vfmh Membrane4EAS::L_alpha_beta_i
protected

Definition at line 148 of file membraneeas.h.

Referenced by AssJac(), AssRes(), and Membrane4EAS().

vfmh Membrane4EAS::P_i
protected

Definition at line 152 of file membraneeas.h.

Referenced by AssJac(), AssRes(), and Membrane4EAS().

const StructDispNode* Membrane4EAS::pNode[NUMNODES]
protected
vh Membrane4EAS::PreStress
protected

Definition at line 167 of file membraneeas.h.

Referenced by AssRes().

fmh Membrane4EAS::S_alpha_beta_0
protected

Definition at line 145 of file membraneeas.h.

Referenced by Membrane4EAS().

vvh Membrane4EAS::stress_i
protected

Definition at line 174 of file membraneeas.h.

Referenced by AssJac(), AssRes(), and Output().

Mat3x3 Membrane4EAS::T_0
protected

Definition at line 124 of file membraneeas.h.

Referenced by ComputeInitialIptOrientation(), and Membrane4EAS().

Mat3x3 Membrane4EAS::T_0_0
protected

Definition at line 121 of file membraneeas.h.

Referenced by Membrane4EAS().

Mat3x3 Membrane4EAS::T_0_i[NUMIP]
protected

Definition at line 122 of file membraneeas.h.

Referenced by Membrane4EAS().

Mat3x3 Membrane4EAS::T_i[NUMIP]
protected

Definition at line 125 of file membraneeas.h.

Referenced by AssJac(), ComputeInitialIptOrientation(), and Membrane4EAS().

doublereal Membrane4EAS::w_i
static
Initial value:
= {
1.,
1.,
1.,
1.
}

Definition at line 90 of file membraneeas.h.

Referenced by AssJac(), and AssRes().

Vec3 Membrane4EAS::xa[NUMNODES]
protected
Vec3 Membrane4EAS::xa_0[NUMNODES]
protected

Definition at line 116 of file membraneeas.h.

Referenced by Membrane4EAS().

doublereal Membrane4EAS::xi_0 = {0., 0.}
static

Definition at line 103 of file membraneeas.h.

Referenced by ComputeInitialIptOrientation(), and Membrane4EAS().

doublereal Membrane4EAS::xi_i
static
Initial value:
= {
{-1. / std::sqrt(3.), -1. / std::sqrt(3.)},
{ 1. / std::sqrt(3.), -1. / std::sqrt(3.)},
{ 1. / std::sqrt(3.), 1. / std::sqrt(3.)},
{-1. / std::sqrt(3.), 1. / std::sqrt(3.)}
}

Definition at line 89 of file membraneeas.h.

Referenced by ComputeInitialIptOrientation(), and Membrane4EAS().

doublereal Membrane4EAS::xi_n
static
Initial value:
= {
{ 1., 1.},
{-1., 1.},
{-1., -1.},
{ 1., -1.}
}

Definition at line 101 of file membraneeas.h.

Vec3 Membrane4EAS::y_i_1[NUMIP]
protected

Definition at line 154 of file membraneeas.h.

Referenced by AssRes(), and Membrane4EAS().

Vec3 Membrane4EAS::y_i_2[NUMIP]
protected

Definition at line 155 of file membraneeas.h.

Referenced by AssRes(), and Membrane4EAS().


The documentation for this class was generated from the following files: