42 #ifdef _WIN32 //_MSC_VER and __MINGW32__ included 62 FreeLibrary( ( HMODULE ) this->
uelobj );
89 OOFEM_ERROR(
"'numsvars' field has an invalid value");
93 if ( this->
jtype < 0 ) {
109 * ( FARPROC * ) ( & this->
uel ) = GetProcAddress( ( HMODULE ) this->
uelobj,
"uel_" );
112 DWORD dlresult = GetLastError();
113 OOFEM_ERROR(
"couldn't load symbol uel,\nerror: %s\n", dlresult);
116 this->uelobj = dlopen(
filename.c_str(), RTLD_NOW);
117 if ( !this->uelobj ) {
121 * (
void ** ) ( & this->
uel ) = dlsym(this->uelobj,
"uel_");
122 char *dlresult = dlerror();
124 OOFEM_ERROR(
"couldn't load symbol uel,\ndlerror: %s\n", dlresult);
154 for (
int i = 1; i <=
mcrd; i++ ) {
228 if ( useUpdatedGpRecord ) {
243 double period = 0., pnewdt = 0.;
void(* uel)(double *rhs, double *amatrx, double *svars, double energy[8], int *ndofel, int *nrhs, int *nsvars, double *props, int *nprops, double *coords, int *mcrd, int *nnode, double *u, double *du, double *v, double *a, int *jtype, double time[2], double *dtime, int *kstep, int *kinc, int *jelem, double params[3], int *ndload, int *jdltyp, double *adlmag, double *predef, int *npredef, int *lflags, int *mvarx, double *ddlmag, int *mdload, double *pnewdt, int *jprops, int *njprop, double *period)
Pointer to the dynamically loaded uel-function (translated to C)
virtual void postInitialize()
Performs post initialization steps.
IntArray dofManArray
Array containing dofmanager numbers.
int number
Component number.
virtual const FloatMatrix & giveTempTangent()
virtual void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0)
Evaluates nodal representation of real internal forces.
void computeVectorOf(ValueModeType u, TimeStep *tStep, FloatArray &answer)
Returns local vector of unknowns.
Abstract base class for "structural" finite elements with geometrical nonlinearities.
std::string filename
File containing the uel function.
virtual void postInitialize()
Performs post initialization steps.
FloatArray props
Element properties.
virtual void updateInternalState(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
virtual FloatArray & letTempSvarsBe(FloatArray &src)
#define _IFT_AbaqusUserElement_dofs
const char * giveClassName() const
Returns class name of the receiver.
double giveTargetTime()
Returns target time.
void negated()
Changes sign of receiver values.
const int * givePointer() const
Breaks encapsulation.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
const double * givePointer() const
Exposes the internal values of the matrix.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
virtual double giveCoordinate(int i)
int numSvars
Number of status variables.
Class implementing an array of integers.
int & at(int i)
Coefficient access function.
MatResponseMode
Describes the character of characteristic material matrix.
AbaqusUserElement(int n, Domain *d)
Constructor.
#define _IFT_AbaqusUserElement_name
virtual Interface * giveInterface(InterfaceType it)
Interface requesting service.
double giveTimeIncrement()
Returns solution step associated time increment.
bool isNotEmpty() const
Tests for empty matrix.
#define _IFT_AbaqusUserElement_properties
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Returns dofmanager dof mask for node.
void * uelobj
Dynamically loaded uel.
#define _IFT_AbaqusUserElement_userElement
FloatMatrix amatrx
Element amatrx.
FloatArray U
Inputs to element routines. Velocity and Acceleration currently ignored.
virtual void letTempTangentBe(FloatMatrix &src)
virtual void computeConsistentMassMatrix(FloatMatrix &answer, TimeStep *tStep, double &mass, const double *ipDensity=NULL)
Computes consistent mass matrix of receiver using numerical integration over element volume...
double at(int i, int j) const
Coefficient access function.
void resize(int n)
Checks size of receiver towards requested bounds.
#define _IFT_AbaqusUserElement_numsvars
virtual ~AbaqusUserElement()
Destructor.
virtual void updateYourself(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
bool hasTangentFlag
Keeps track of whether the tangent has been obtained already.
Class representing vector of real numbers.
virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
Computes the stiffness matrix of receiver.
Implementation of matrix containing floating point numbers.
#define _IFT_AbaqusUserElement_type
IRResultType
Type defining the return values of InputRecord reading operations.
virtual void updateYourself(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
void copyColumn(FloatArray &dest, int c) const
Fetches the values from the specified column.
void setColumn(const FloatArray &src, int c)
Sets the values of the matrix in specified column.
FloatArray svars
Status variables.
const double * givePointer() const
Gives the pointer to the raw data, breaking encapsulation.
void zero()
Zeroes all coefficient of receiver.
Domain * giveDomain() const
InterfaceType
Enumerative type, used to identify interface type.
virtual FloatMatrix & letTempRhsBe(FloatMatrix &src)
int giveSize() const
Returns the size of receiver.
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual const FloatArray & giveStateVector() const
Class implementing node in finite element mesh.
Node * giveNode(int i) const
Returns reference to the i-th node of element.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
#define _IFT_AbaqusUserElement_numcoords
Class representing solution step.
int numberOfDofMans
Number of dofmanagers.
void resize(int s)
Resizes receiver towards requested size.