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....
}
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
Ho stampato pAmatrx (AMATRX) e pRhs (RHS) e sono uguali.
PERFAVORE DITEMI QUELLO CHE SAPETE A RIGUARDO!!!!!!!!!!!!!!! grazie in anticipo