subroutine vexternaldb(lOp, i_Array, niArray, r_Array, nrArray)
C
include 'vaba_param.inc'
c
C Contents of i_Array
parameter( i_int_nTotalNodes = 1,
* i_int_nTotalElements = 2,
* i_int_kStep = 3,
* i_int_kInc = 4,
* i_int_iStatus = 5,
* i_int_lWriteRestart = 6,
* i_int_ExtraOutputFrame= 7 )
C Possible values for the lOp argument
parameter( j_int_StartAnalysis = 0,
* j_int_StartStep = 1,
* j_int_SetupIncrement = 2,
* j_int_StartIncrement = 3,
* j_int_EndIncrement = 4,
* j_int_EndStep = 5,
* j_int_EndAnalysis = 6 )
C Possible values for i_Array(i_int_iStatus)
parameter( j_int_Continue = 0,
* j_int_TerminateStep = 1,
* j_int_TerminateAnalysis = 2)
C Contents of r_Array
parameter( i_flt_TotalTime = 1,
* i_flt_StepTime = 2,
* i_flt_dTime = 3 )
C
dimension i_Array(niArray),
* r_Array(nrArray)
kStep = i_Array(i_int_kStep)
kInc = i_Array(i_int_kInc)
Note that you can use the MPI communication between parallel Abaqus processes to gather
and scatter the data.
C Start of the analysis
if (lOp .eq. j_int_StartAnalysis) then
User coding to set up the environment, open files, launch/connect to the external programs, etc.
C continuation from a previous analysis (restart)
if (kStep .ne. 0) then
end if
C Start of the step
else if (lOp .eq. j_int_StartStep) then
Set up or exchange (import and export) initial values with external programs.
C The initial values may need to match those at the
point of restart.
if ( kInc .ne. 0) then
end if
C Setup the increment
else if (lOp .eq. j_int_SetupIncrement) then
Change i_Array(i_int_lWriteRestart) and
i_Array(i_int_iStatus) if desired.
Change r_Array(i_flt_dTime) if desired.
C Start of the increment
else if (lOp .eq. j_int_StartIncrement) then
The time increment is finalized. Use r_Array(i_flt_dTime) if desired.
If needed, gather and export data from the configuration at the end of the previous increment to external programs.
Import and scatter data from external program to influence the current Abaqus increment.
C End of the increment
else if (lOp .eq. j_int_EndIncrement) then
Change i_Array(i_int_iStatus) if desired.
Gather and export data from the configuration at the end of the current increment
to external programs.
C End of the step
else if (lOp .eq. j_int_EndStep) then
In the case of multiple steps, prepare the transition to the next step.
For example, these data can serve as initial values for the next step.
C End of the analysis
else if (lOp .eq. j_int_EndAnalysis) then
User coding to close files and disconnect any external programs, etc.
end if
return
end