63 OOFEM_ERROR(
"PrescribedGenStrainShell7 :: give - Size of coordinate system different from center coordinate in b.c.");
67 if ( mode == VM_Total ) {
69 }
else if ( mode == VM_Velocity ) {
71 }
else if ( mode == VM_Acceleration ) {
74 OOFEM_ERROR(
"Should not be called for value mode type then total, velocity, or acceleration.");
120 double dgamdxi1, dgamdxi2, gam;
122 double fac1 = ( zeta + 0.5 * gam * zeta * zeta );
123 double fac2 = ( 0.5 * zeta * zeta );
124 double fac3 = ( 1.0 + zeta * gam );
126 g1 = dxdxi1 + fac1*dmdxi1 + fac2*dgamdxi1*m;
127 g2 = dxdxi2 + fac1*dmdxi2 + fac2*dgamdxi2*m;
140 G1.at(1) = genEps.
at(1) + zeta * genEps.
at(7);
141 G1.at(2) = genEps.
at(2) + zeta * genEps.
at(8);
142 G1.at(3) = genEps.
at(3) + zeta * genEps.
at(9);
144 G2.at(1) = genEps.
at(4) + zeta * genEps.
at(10);
145 G2.at(2) = genEps.
at(5) + zeta * genEps.
at(11);
146 G2.at(3) = genEps.
at(6) + zeta * genEps.
at(12);
148 G3.
at(1) = genEps.
at(13);
149 G3.
at(2) = genEps.
at(14);
150 G3.
at(3) = genEps.
at(15);
186 G3.at(1) = Gcon.
at(1,3);
187 G3.at(2) = Gcon.
at(2,3);
188 G3.at(3) = Gcon.
at(3,3);
190 double factor = G3.dotProduct(dx);
197 answer = 0.5*factor*factor * g3prime;
219 C.
resize(npeq, nsd * ( nsd + 1 ) / 2);
223 double xbar = cCoords.
at(1), ybar = cCoords.
at(2), zbar = 0.0;
225 zbar = cCoords.
at(3);
228 for (
int i = 1; i <= nNodes; i++ ) {
237 C.
at(k1, 1) = coords->
at(1) - xbar;
238 C.
at(k1, 3) = coords->
at(2) - ybar;
242 C.
at(k2, 2) = coords->
at(2) - ybar;
243 C.
at(k2, 3) = coords->
at(1) - xbar;
246 OOFEM_ERROR(
"PrescribedGenStrainShell7 :: updateCoefficientMatrix - 3D Not tested yet!");
251 C.
at(k1, 1) = coords->
at(1) - xbar;
252 C.
at(k1, 4) = coords->
at(2) - ybar;
253 C.
at(k1, 5) = coords->
at(3) - zbar;
256 C.
at(k2, 2) = coords->
at(2) - ybar;
257 C.
at(k2, 4) = coords->
at(1) - xbar;
258 C.
at(k2, 6) = coords->
at(3) - zbar;
261 C.
at(k3, 3) = coords->
at(3) - zbar;
262 C.
at(k3, 5) = coords->
at(1) - xbar;
263 C.
at(k3, 6) = coords->
at(2) - ybar;
273 double domain_size = 0.0;
276 const IntArray &boundaries =
set->giveBoundaryList();
278 for (
int pos = 1; pos <= boundaries.
giveSize() / 2; ++pos ) {
280 int boundary = boundaries.
at(pos * 2);
284 return domain_size / nsd;
int giveNumberOfColumns() const
Returns number of columns of receiver.
REGISTER_BoundaryCondition(BoundaryCondition)
virtual double evaluateAccelerationAtTime(double t)=0
Returns the second time derivative of the function at given time.
static void giveGeneralizedStrainComponents(FloatArray genEps, FloatArray &dphidxi1, FloatArray &dphidxi2, FloatArray &dmdxi1, FloatArray &dmdxi2, FloatArray &m, double &dgamdxi1, double &dgamdxi2, double &gam)
virtual int giveNumberOfDomainEquations(int di, const UnknownNumberingScheme &num)
Returns number of equations for given domain in active (current time step) time step.
FloatArray centerCoord
Center coordinate .
Domain * domain
Link to domain object, useful for communicating with other FEM components.
int giveNumberOfDofManagers() const
Returns number of dof managers in domain.
FloatArray genEps
Current generalized strain eps = [xbar_{,alpha}, m_{,alpha}, m, gamma_{,alpha}, gamma ] = [ (3 3) (3 ...
virtual FloatArray & giveCenterCoordinate()
Returns the center coordinate.
double & at(int i)
Coefficient access function.
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
Function * giveTimeFunction()
virtual FloatArray * giveCoordinates()
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
EngngModel * giveEngngModel()
Returns engineering model to which receiver is associated.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
Abstract base class for all finite elements.
int giveNumber()
Returns domain number.
virtual double evalNXIntegral(int boundary, const FEICellGeometry &cellgeo)
Computes the integral .
int giveNumberOfSpatialDimensions()
Returns number of spatial dimensions.
Class implementing an array of integers.
int & at(int i)
Coefficient access function.
virtual int __givePrescribedEquationNumber()=0
Returns prescribed equation number of receiver.
virtual FEInterpolation * giveInterpolation() const
void beDifferenceOf(const FloatArray &a, const FloatArray &b)
Sets receiver to be a - b.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Class representing a general abstraction for finite element interpolation class.
void setDeformationGradient(double zeta)
Element * giveElement(int n)
Service for accessing particular domain fe element.
void evalCovarBaseVectorsAt(FloatMatrix &gcov, FloatArray &genEps, double zeta)
Constructs a coefficient matrix for all prescribed unknowns.
DofIDItem
Type representing particular dof type.
Set of elements, boundaries, edges and/or nodes.
DofIDItem giveDofID() const
Returns DofID value of receiver, which determines type of of unknown connected to receiver (e...
void evalInitialCovarBaseVectorsAt(FloatMatrix &Gcov, FloatArray &genEps, double zeta)
Wrapper around element definition to provide FEICellGeometry interface.
Set * giveSet(int n)
Service for accessing particular domain set.
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix and anArray.
IntArray dofs
Dofs that b.c. is applied to (relevant for Dirichlet type b.c.s).
double at(int i, int j) const
Coefficient access function.
void evaluateHigherOrderContribution(FloatArray &answer, double zeta, FloatArray &dx)
#define _IFT_PrescribedGenStrainShell7_generalizedstrain
virtual double evaluateVelocityAtTime(double t)=0
Returns the first time derivative of the function at given time.
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
void updateCoefficientMatrix(FloatMatrix &C)
Constructs a coefficient matrix for all prescribed unknowns.
IRResultType
Type defining the return values of InputRecord reading operations.
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
The representation of EngngModel default prescribed unknown numbering.
Dof * giveDofWithID(int dofID) const
Returns DOF with given dofID; issues error if not present.
FloatMatrix gradient
Prescribed gradient .
void zero()
Zeroes all coefficients of receiver.
void setColumn(const FloatArray &src, int c)
Sets the values of the matrix in specified column.
virtual FloatArray * giveCoordinates()
void beProductTOf(const FloatMatrix &a, const FloatMatrix &b)
Assigns to the receiver product of .
void zero()
Zeroes all coefficient of receiver.
Domain * giveDomain() const
#define _IFT_PrescribedGenStrainShell7_centercoords
static void giveDualBase(FloatMatrix &base1, FloatMatrix &base2)
DofManager * giveDofManager() const
int giveSize() const
Returns the size of receiver.
Node * giveNode(int n)
Service for accessing particular domain node.
the oofem namespace is to define a context or scope in which all oofem names are defined.
Class implementing node in finite element mesh.
FloatArray initialGenEps
Initial generalized strain eps = [Xbar_{,alpha}, M_{,alpha}, M ] = [ (3 3) (3 3) 3] - 15 components...
Abstract class Dof represents Degree Of Freedom in finite element mesh.
#define _IFT_PrescribedGenStrainShell7_initialgeneralizedstrain
virtual double evaluateAtTime(double t)
Returns the value of the function at given time.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
virtual double give(Dof *dof, ValueModeType mode, double time)
void resize(int s)
Resizes receiver towards requested size.