• sono stati considerati gli array come monodimensionali ordinati per colonne (poichè è così che avviene il loro storage in Fortran). Nel seguito viene riportata parte della user subroutine, AbHC3.cpp, scritta per l’implementazione dell’ elemento HC3 in ABAQUS. In particolare la parte riportata riguarda l’assemblaggio della matrice di rigidezza. #define HKS NT #ifndef FOR C H #define FOR C H #if defined FOR TRAIL #define FOR NAME(lc name,uc name) lc name ## #define CALL NAME(lc name,uc name) lc name ## ... #elif defined HKS NT #define FOR NAME(lc name,uc name) stdcall uc name #define CALL NAME(lc name,uc name) uc name ... #endif #include #include #include #include extern C void FOR NAME(uel, UEL)(double* pRhs, double* pAmatrx, double* pSvars, double* pEnergy, int* pNdofel, int* pNrhs, int* pNsvars, double* pProps, int* pNprops, double* pCoords, int* pMcrd, int* pNnode, double* pU, double* pDu, double* pV, double* pA, int* pJtype, double* pTime, double* pDtime, int* pKstep, int* pKinc, int* pJelem, double* pParams, int* pNdload, int* pJdltyp, double* pAdlmag, double* pPredef, int* pNpredf, int* pLflags, int* pMlvarx, double* pDdlmag, int* pMdload, double* pPnewdt, int* pJprops, int* pNjprop, double* pPeriod) { int nr, nc, dr, dc, n = 3, gdlCinem = 3; if(pLflags[2]==1)//normal Implicit Time Incrementation { if( (pLflags[0]==1) | (pLflags[0]==2) )// static { 55
for(int i=0; i