Sto usando abaqus una suite di programmi per simulazioni di ingegneria. Devo lanciare una simulazione usando una user subroutine. Ho scritto la user subroutine in fortran (linguaggio consigliato da abaqus support) e la cosa è andata a buon fine. Mi è stato chiesto di scrivere la subroutine in C++ (Abaqus support dice che si può fare).
La versione in c++ mi da dei problemi.
Ci sono differenze fra i seguenti codici?
codice:#define FOR_NAME(lc_name,uc_name) _stdcall uc_name #define CALL_NAME(lc_name,uc_name) uc_name #include <stdlib.h> #include <stdio.h> #include <string.h> #include <math.h> extern "C" void FOR_NAME(uel, UEL)(double** RHS_,double** AMATRX_,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){ AMATRX_ = new double*[*pNdofel]; for(int i=0; i<*pNdofel; i++) AMATRX_[i] = new double[*pNdofel]; RHS_ = new double*[*pMlvarx]; for(int i=0; i<*pMlvarx; i++) RHS_[i] = new double[1]; pDu = new double*[*pMlvarx]; for(int i=0; i<*pMlvarx; i++) pDu[i] = new double[1]; pU = new double[*pNdofel]; .... istruzioni per il calcolo delle componenti di pAmatrx e pRhs.... }Ho stampato pAmatrx (AMATRX) e pRhs (RHS) e sono uguali.codice:SUBROUTINE UEL(RHS,AMATRX,SVARS,ENERGY,NDOFEL,NRHS,NSVARS, 1 PROPS,NPROPS,COORDS,MCRD,NNODE,U,DU,V,A,JTYPE,TIME,DTIME, 2 KSTEP,KINC,JELEM,PARAMS,NDLOAD,JDLTYP,ADLMAG,PREDEF, 3 NPREDF,LFLAGS,MLVARX,DDLMAG,MDLOAD,PNEWDT,JPROPS,NJPROP, 4 PERIOD) C DIMENSION RHS(MLVARX,*),AMATRX(NDOFEL,NDOFEL), 1 SVARS(NSVARS),ENERGY(8),PROPS(*),COORDS(MCRD,NNODE), 2 U(NDOFEL),DU(MLVARX,*),V(NDOFEL),A(NDOFEL),TIME(2), 3 PARAMS(3),JDLTYP(MDLOAD,*),ADLMAG(MDLOAD,*), 4 DDLMAG(MDLOAD,*),PREDEF(2,NPREDF,NNODE),LFLAGS(*), 5 JPROPS(*) C ..........istruzioni per il calcolo delle componenti di AMATRX e RHS.... C RETURN END
PERFAVORE DITEMI QUELLO CHE SAPETE A RIGUARDO!!!!!!!!!!!!!!! grazie in anticipo

Rispondi quotando