C/C++ example for GetStringWCLength

 

RecurDynUserSubRoutinewizard1_API void __cdecl axial_force

(double time, double upar[], int npar, int jflag, int iflag, double* result)

{

           using namespace rd_syscall;

           // Parameter Information

           //   time: Simulation time of RD/Solver

           //   upar: Parameters defined by user

           //   npar: Number of user parameters

           //   jflag: When RD/Solver evaluates a Jacobian, the flag is true.

           //   iflag: When RD/Solver initializes arrays, the flag is true.

           //   result: Returned value

 

           // User statement

           // Local Varialbe Definition

           int mkid[3], errflg, akispl_id;

           double disp, value[3], stepsize;

           int finish, convergenceFlag;

           char sName[256];

           int nName;

           int iString;

           int szTCHAR;

           unsigned long long szAllocated;

           int err = 0;

 

           if( fCloseProgram == 1)

           {

                     return;

           }

 

           getcurrententityname(sName,&nName,&errflg);

           getstepsize( &stepsize );

           getfinishflag( &finish );

           getconvergenceflag( &convergenceFlag);

 

 

           // Assign Impact Parameters

           mkid[0] = (int) upar[0];

           mkid[1] = (int) upar[1];

           mkid[2] = (int) upar[2];

           akispl_id = (int) upar[3];

           iString= (int) upar[4];; // 0 or 1

 

           if(fInitial[iString] == 1)

           {

                     fInitial[iString] = 0;

 

                     getstringlength(iString,&nString[iString],&errflg);

                     szTCHAR = sizeof(char);

                     szAllocated = (unsigned long long)nString[iString]*szTCHAR;

                     pString[iString] = (char*)malloc(szAllocated);

 

                     getstring(iString,pString[iString],&nString[iString],&errflg);

                     sprintf_s( FileName[iString], 255 ,"%s.txt",pString[iString]);

                     err = fopen_s(&pFileOutput[iString], FileName[iString], "w");

           }

 

           if(finish == 1)

           {

                     fCloseProgram = 1;

                     free(pString[iString]);

                     fclose(pFileOutput[iString]);

           }

           else

           {

                     getstring(iString,pString[iString],&nString[iString],&errflg);

                     fprintf(pFileOutput[iString],"%s\n",pString[iString]);

           }

 

           if(convergenceFlag == 1)

           {

                     convergenceFlag = 0;

           }

 

           if( strncmp(sName,"Axial1",nName) == 0)

           {

                     // Call the Auxiliary subroutines for Calculation

                     sysfnc("DX", mkid, 3, &disp, &errflg);

                     rd_akispl(disp, 0, akispl_id, 0, value, &errflg);

           }

           else

           {

                     // Call the Auxiliary subroutines for Calculation

                     sysfnc("DY", mkid, 3, &disp, &errflg);

                     rd_akispl(disp, 0, akispl_id, 0, value, &errflg);

           }

 

           // Assign the Returned Value

           *result = value[0];

}

 

 

 

Variable Name

Size

Description

IDstring

double

The input variable, the RMD id of string entity have to be set.

string

Char

The output variable, the string value will be returned according to the RMD id of string entity.

nstring

int

The input variable, the nstring have to be set with the size of string.

error

int

The output variable, if there is value for this string, this value will be set with “TRUE”.