71 FreeLibrary( ( HMODULE ) this->
uelobj);
108 OOFEM_ERROR(
"'numsvars' field has an invalid value");
110 if ( this->
jtype < 0 ) {
125 * ( FARPROC * ) ( & this->
uel ) = GetProcAddress( ( HMODULE ) this->
uelobj,
"uel_");
128 DWORD dlresult = GetLastError();
129 OOFEM_ERROR(
"couldn't load symbol uel,\nerror: %s\n", dlresult);
132 this->uelobj = dlopen(
filename.c_str(), RTLD_NOW);
133 if ( !this->uelobj ) {
137 * (
void ** ) ( & this->
uel ) = dlsym(this->uelobj,
"uel_");
138 char *dlresult = dlerror();
140 OOFEM_ERROR(
"couldn't load symbol uel,\ndlerror: %s\n", dlresult);
158 if ( !this->
coords.isNotEmpty() ) {
159 this->
coords.resize(this->numberOfDofMans, this->
mcrd);
162 for (
int i = 1; i <=
mcrd; i++ ) {
223 DU.setColumn(tempIntVect, 1);
231 if ( useUpdatedGpRecord ) {
232 this->
rhs.copyColumn(answer, 1);
238 int nprops =
props.giveSize();
239 int njprops =
jprops.giveSize();
246 double period = 0., pnewdt = 0.;
261 & this->numberOfDofMans,
#define _IFT_AbaqusUserElement_name
#define REGISTER_Element(class)
FloatArray svars
Status variables.
static ParamKey IPK_AbaqusUserElement_userElement
virtual FloatMatrix & letTempRhsBe(FloatMatrix &src)
static ParamKey IPK_AbaqusUserElement_type
static ParamKey IPK_AbaqusUserElement_properties
void postInitialize() override
Performs post initialization steps. Called after all components are created and initialized.
virtual const FloatArray & giveStateVector() const
void initializeFrom(InputRecord &ir, int priority) override
void giveDofManDofIDMask(int inode, IntArray &answer) const override
void * uelobj
Dynamically loaded uel.
static ParamKey IPK_AbaqusUserElement_numsvars
FloatArray U
Inputs to element routines. Velocity and Acceleration currently ignored.
void updateYourself(TimeStep *tStep) override
virtual void letTempTangentBe(FloatMatrix &src)
FloatMatrix amatrx
Element amatrx.
std::string filename
File containing the uel function.
bool hasTangentFlag
Keeps track of whether the tangent has been obtained already.
FloatArray props
Element properties.
void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0) override
virtual const FloatMatrix & giveTempTangent()
int numSvars
Number of status variables.
virtual ~AbaqusUserElement()
Destructor.
static ParamKey IPK_AbaqusUserElement_numcoords
AbaqusUserElement(int n, Domain *d)
Constructor.
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).
void giveInputRecord(DynamicInputRecord &input) override
void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep) override
virtual FloatArray & letTempSvarsBe(FloatArray &src)
void computeConsistentMassMatrix(FloatMatrix &answer, TimeStep *tStep, double &mass, const double *ipDensity=NULL) override
void updateInternalState(TimeStep *tStep) override
static ParamKey IPK_AbaqusUserElement_name
static ParamKey IPK_AbaqusUserElement_dofs
double giveCoordinate(int i) const
ParameterManager elementPPM
const char * giveClassName() const
Returns class name of the receiver.
Node * giveNode(int i) const
IntArray dofManArray
Array containing dofmanager numbers.
void initializeFrom(InputRecord &ir, int priority) override
int numberOfDofMans
Number of dofmanagers.
void computeVectorOf(ValueModeType u, TimeStep *tStep, FloatArray &answer)
void postInitialize() override
Performs post initialization steps.
Domain * giveDomain() const
int number
Component number.
const double * givePointer() const
const double * givePointer() const
void copyColumn(FloatArray &dest, int c) const
void resize(Index rows, Index cols)
void zero()
Zeroes all coefficient of receiver.
void updateYourself(TimeStep *tStep) override
StructuralElement(int n, Domain *d)
void giveInputRecord(DynamicInputRecord &input) override
double giveTimeIncrement()
Returns solution step associated time increment.
double giveTargetTime()
Returns target time.
#define PM_ELEMENT_ERROR_IFNOTSET(_pm, _componentnum, _paramkey)
#define PM_UPDATE_PARAMETER(_val, _pm, _ir, _componentnum, _paramkey, _prio)