35 #ifndef WEAKPERIODICBC_H_ 36 #define WEAKPERIODICBC_H_ 51 #define _IFT_WeakPeriodicBoundaryCondition_Name "weakperiodicbc" 52 #define _IFT_WeakPeriodicBoundaryCondition_order "order" 53 #define _IFT_WeakPeriodicBoundaryCondition_descritizationType "descritizationtype" 54 #define _IFT_WeakPeriodicBoundaryCondition_dofids "dofids" 55 #define _IFT_WeakPeriodicBoundaryCondition_ngp "ngp" 56 #define _IFT_WeakPeriodicBoundaryCondition_gradient "gradient" 57 #define _IFT_WeakPeriodicBoundaryCondition_nlgeo "nlgeo" 58 #define _IFT_WeakPeriodicBoundaryCondition_elementSidesPositive "elementsidespositive" 59 #define _IFT_WeakPeriodicBoundaryCondition_elementSidesNegative "elementsidesnegative" 60 #define _IFT_WeakPeriodicBoundaryCondition_elementSidesPositiveSet "elementsidespositiveset" 61 #define _IFT_WeakPeriodicBoundaryCondition_elementSidesNegativeSet "elementsidesnegativeset" 111 signed int sideSign [ 2 ];
114 std :: vector< int >side [ 2 ], element [ 2 ];
119 void giveEdgeNormal(
FloatArray &answer,
int element,
int side);
121 void updateSminmax();
123 void updateDirection();
125 double computeBaseFunctionValue(
int baseID,
FloatArray coordinate);
127 double computeBaseFunctionValue1D(
int baseID,
double coordinate);
129 double computeBaseFunctionValue2D(
int baseID,
FloatArray coordinate);
134 double factorial(
int n);
136 double binomial(
double n,
int k);
139 void getExponents(
int n,
int &i,
int &j);
142 void computeOrthogonalBasis();
144 double computeProjectionCoefficient(
int vIndex,
int uIndex);
183 virtual int giveNumberOfInternalDofManagers();
185 virtual DofManager *giveInternalDofManager(
int i);
187 virtual void addElementSide(
int elem,
int side);
189 virtual const char *
giveClassName()
const {
return "WeakPeriodicBoundaryCondition"; }
std::vector< double > directions
Keeps track of which coordinate(s) are changing on the surface/edge.
Base class for all matrices stored in sparse format.
virtual const char * giveInputRecordName() const
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
int tcount
Number of terms in polynomial.
Abstract base class for all finite elements.
Base class for dof managers.
std::unique_ptr< Node > gammaDman
int posSet
Set containing positive side.
Class implementing an array of integers.
IntArray dofids
ID of dofs on which weak periodicity is imposed.
int ndof
Number of degrees of freedom (number of terms)
int direction
Direction of normal.
basisType giveBasisType()
FloatMatrix gsMatrix
gsMatrix contains coefficients for the Gram-Schmidt polynomials
IntArray surfaceIndexes
Keeps info on which coordinates varies over the surface.
#define _IFT_WeakPeriodicBoundaryCondition_Name
Abstract base class allowing to control the way, how equations are assigned to individual DOFs...
Abstract base class for all active boundary conditions.
bool nlgeo
Use finite strains?
int ngp
Number of Gausspoints used when integrating along the element edges.
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
int ndofids
Number of dofIDs.
virtual const char * giveClassName() const
FloatArray g
Contains prescribed gradient.
int negSet
Set containing negative side.
the oofem namespace is to define a context or scope in which all oofem names are defined.
Imposes weak periodicity on the doftype of choice.
Class representing solution step.