4. Analysis Procedures - SolProc
The analysis procedure modules are designed to manage the series of tasks which must be followed to perform various types of analysis. The modules direct execution using a “reverse communication” mechanism. A solution procedure module, such as SolProc is executed repeatedly. Each time it is executed it performs a task related to controlling a specified solution procedure. Upon completion of each task a user “action” is returned. The user must perform the action before the procedure module is called again. User actions consist of forming reaction vectors and stiffness matrices and performing operations upon the stiffness matrix. Time evolution analysis procedures, static or dynamic, are implemented in the SolProc module.
The SolProc module is designed to manage the execution of linear and non-linear time evolution, static (steady-state) or transient analysis. The methods associated with a SolProc object are the following.
Begin and end an instance of an object, generic object functions
vfs_SolProcBegin()
- create an instance of a SolProc objectvfs_SolProcEnd()
- destroy an instance of a SolProc objectvfs_SolProcError()
- return SolProc object error flag
Operations
vfs_SolProcDef()
- define type of analysisvfs_SolProcInq()
- inquire type of analysisvfs_SolProcExecute()
- execute next procedure and return actionvfs_SolProcGetDouble()
- query for real execution informationvfs_SolProcGetInteger()
- query for integer execution informationvfs_SolProcGetSysVector()
- query for solution vectorsvfs_SolProcInitTimeStep()
- set initial time stepvfs_SolProcSetComputeError()
- flag that an error has occurredvfs_SolProcSetFactorized()
- flag whether factorization has taken placevfs_SolProcSetStrategy()
- set strategy parameters and final timevfs_SolProcSetParami()
- set integer procedure parametersvfs_SolProcSetParamd()
- set double procedure parametersvfs_SolProcSetTemp()
- flag equations with temporary restraints
Instance a SolProc object using vfs_SolProcBegin()
.
Once a SolProc object is instanced,
specify the analysis type - structural or thermal - the number of
equations, and the number of reactions using vfs_SolProcDef()
.
Equations where a temporary restraint has been applied must be
flagged with vfs_SolProcSetTemp()
. Use vfs_SolProcSetStrategy()
to specify
the time specification - static or transient -
the procedure type - linear or nonlinear - and the final analysis time.
The evolution is controlled by a single independent “time” variable, which
is initialized to zero upon calling vfs_SolProcDef()
. You can overwrite the
initial time with vfs_SolProcSetParamd()
with the SOLPROC_BEGINTIME
parameter before you start execution. You can also use
vfs_SolProcInitTimeStep()
to specify an initial time step.
Note that the time step is just a suggested
value, and may be internally modified depending on convergence rate, and the
final time specified in vfs_SolProcSetStrategy()
. The minimum and maximum
time steps can be set in vfs_SolProcSetParamd()
using
SOLPROC_MINTIMESTEP and SOLPROC_MAXTIMESTEP, respectively.
SOLPROC_MINTIMESTEP should be set according to the user’s knowledge of the physical parameters defining the problem, and by limiting the maximum number of time steps N to be computed, assuming a worst-case scenario, with N = T / dt_min, where T is the total time and dt_min the minimum time step. The analysis aborts if it cannot achieve convergence at the minimum time step.
Likewise, SOLPROC_MAXTIMESTEP should also be set based on the user’s knowledge of the physical parameters defining the problem. In transient problems this parameter is often shadowed by the half tolerance that controls the time integration error.
Various strategy parameters to control
nonlinear analysis are set using vfs_SolProcSetParami()
and
vfs_SolProcSetParamd()
. Strategy parameters include convergence
tolerances, maximum number of iterations, etc.
For transient analysis, a predictor multi-corrector algorithm is employed.
For structural analysis, the predictor is nothing but an initial guess at the
displacements, velocities, and accelerations. These are consistent with two
available methodologies, which can be set with vfs_SolProcSetParami()
:
either the displacements or the accelerations at the current time step are
repeated on the next time step. The remaining quantities are adjusted to
maintain consistency with the time integration scheme utilized.
Likewise, in thermal analysis the predictor maintains either the same
temperature, or the same temperature rate.
The time integration procedure allows for both increasing and reducing the time step. Two conditions may lead to a reduction of the time step: failure to converge and/or inaccuracy at the half step during a transient analysis. In either case the time step is divided by 2. Alternatively, if convergence is achieved quickly and the half step convergence is optimal, the time step is increased by multiplying it by a factor of 1.25 for structural problems and 2 for thermal problems.
The actual solution procedure is initiated by calling vfs_SolProcDef()
.
The SolProc module at this time will initialize internal counters,
solution vectors, etc. The user then enters a continuous loop in which
the function vfs_SolProcExecute()
is called repeatedly. This function
returns an “action” which the user must perform before calling
vfs_SolProcExecute()
again. This loop terminates when the action
returned indicates that the solution procedure is complete.
In order to carry out an action indicated by the SolProc module, the
user will need to query the SolProc module for one or more SysVector
objects using vfs_SolProcGetSysVector()
which contain solution-related vectors which must be used or updated
in some way. The functions vfs_SolProcGetDouble()
and
vfs_SolProcGetInteger()
are used to return additional information which
may be required.
User actions generally include operations upon system level matrices such as factorizing a matrix, forming a matrix based upon a particular solution vector, etc. The SolProc module performs most of the system vector related operations. One notable exception is the updating of the total global dof solution vector with a solution increment. This operation, for structural analysis involving large rotations or other reasons, may involve an operation more complicated than simple addition, and must be performed by the user outside of the SolProc module.
At any time after vfs_SolProcExecute()
has been called at least once, you
can query for the current time with vfs_SolProcGetDouble()
and request the
value of SOLPROC_TIME.
The following actions are used.
VFS_ACTION_STIFF form matrix to be factored in linear analysis. In static structural analysis, this is the stiffness matrix; in static thermal analysis, this is the conductance matrix. In transient structural analysis, this matrix is a linear combination of the stiffness, damping, and mass matrices, with a coefficient of 1.0 for the stiffness matrix, SOLPROC_DAMPFACTOR for the damping matrix, and SOLPROC_MASSFACTOR for the mass matrix. These factors can be both obtained with a call to
vfs_SolProcGetDouble()
.VFS_ACTION_REACT form reaction vector given a solution vector and a time. The reaction vector consists of the external loads and the internal forces generated by each element. It does not include inertia terms in transient analysis, which are computed separately. These internal forces can be computed by retrieving the current variables, displacement - VFS_VECTOR_U1 - velocity - VFS_VECTOR_V1 - and acceleration - VFS_VECTOR_A1 - for structural analysis. For thermal analysis, use VFS_VECTOR_U1 and VFS_VECTOR_V1 for the temperature and the temperature rate, respectively. The reaction vector where this accumulation takes place is retrieved via VFS_VECTOR_REACT. If
vfs_SolProcDef()
is called with a nonzero value of nre, then the reactions on the eliminated degrees of freedom can be obtained with vector VFS_VECTOR_BCREACT.VFS_ACTION_REACTSTIFF form reaction vector and the nonlinear stiffness matrix. It combines the functionality of VFS_ACTION_STIFF and VFS_ACTION_REACT above.
VFS_ACTION_PREDICTOR allows you to modify variables based on boundary conditions to be imposed as a function of time. Available vectors are VFS_VECTOR_U1, VFS_VECTOR_V1, and VFS_VECTOR_A1 for structural analysis, and VFS_VECTOR_U1 and VFS_VECTOR_V1 for thermal analysis. Note that, for a particular degree of freedom, only one of these vectors may be modified. An error will be generated if more than one vector is modified by the user in a way that invalidates the transient integrator for the particular degree of freedom.
VFS_ACTION_FACTOR factorize the current stiffness matrix built via either VFS_ACTION_STIFF or VFS_ACTION_REACTSTIFF.
VFS_ACTION_SOLVE solve for a solution vector using the current factorized matrix given a rhs vector. The right-hand-side vector is retrieved via VFS_VECTOR_REACT, and the vector that stores the solution to the linear system is given by VFS_VECTOR_DELTAINC.
VFS_ACTION_UPDATE allows you to modify the current solution when a more complex update is required, as is the case with large rotations. Solution values at the beginning - VFS_VECTOR_U0 - end - VFS_VECTOR_U1 - and the increment VFS_VECTOR_INC are available for the user to perform this operation.
VFS_ACTION_ENDSTEP solution obtained, step complete. Solution vector may be used for output, etc. Available vectors are VFS_VECTOR_U1, VFS_VECTOR_V1, and, for structural analysis, VFS_VECTOR_A1.
VFS_ACTION_COMPLETE solution procedure successfully complete.
VFS_ACTION_INCOMPLETE solution procedure unsuccessful, solution incomplete, most probably because of non-convergence.
VFS_ACTION_INITIAL allows you to specify initial conditions for transient analysis. Available vectors are VFS_VECTOR_U0 and, for structural analysis, VFS_VECTOR_V0.
VFS_ACTION_INERTIA allows you to compute the product of the mass matrix and the acceleration vector, storing the result in an inertia vector. Vectors retrieved are VFS_VECTOR_A1 and VFS_VECTOR_INERTIA.
VFS_ACTION_FACTORMASS indicates that the mass matrix must be factorized. In thermal analysis, this is an indication to factor the initial capacitance matrix is to be factored. Note that no action will require that either of these matrices be formed; it is your responsibility to form and factor these matrices upon request. This action will only be requested once in the entire analysis, and only in a transient analysis, to compute either the initial acceleration or the initial temperature rate.
VFS_ACTION_SOLVEMASS allows you to solve for the initial acceleration. The right-hand-side vector is given by VFS_VECTOR_REACT, and the resulting acceleration should be set in VFS_VECTOR_DELTAINC.
Destroy an instance of a SolProc object using vfs_SolProcEnd()
.
4.1. Function Descriptions
The currently available SolProc functions are described in detail in this section.
-
vfs_SolProc *vfs_SolProcBegin(void)
create an instance of a SolProc object
Create an instance of a SolProc object. Memory is allocated for the object private data and the pointer to the object is returned.
Destroy an instance of a SolProc object using
void vfs_SolProcEnd (vfs_SolProc *solproc )
Return the current value of a SolProc object error flag using
Vint vfs_SolProcError (vfs_SolProc *solproc )
- Returns:
The function returns a pointer to the newly created SolProc object. If the object creation fails, NULL is returned.
-
void vfs_SolProcEnd(vfs_SolProc *p)
destroy an instance of a SolProc object
-
Vint vfs_SolProcError(vfs_SolProc *p)
return the current value of a SolProc object error flag
-
void vfs_SolProcDef(vfs_SolProc *p, Vint atype, Vint neq, Vint nre)
define type of analysis
Specify the number of global dof and the procedure’s analysis type.
Inquire of defined neq, nre, and atype as output arguments using
void vfs_SolProcInq (vfs_SolProc *solproc, Vint *atype, Vint *neq, Vint *nre)
- Errors
SYS_ERROR_VALUE
is generated if neq is less than or equal to zero or if nre is less than zero.SYS_ERROR_ENUM
is generated if an improper atype is specified.
- Parameters:
p – Pointer to SolProc object.
atype – Analysis type
x=SYS_ANALYSIS_STRUCTURAL Structural analysis =SYS_ANALYSIS_THERMAL Thermal analysis
neq – Number of global dof
nre – Number of reaction dof
-
void vfs_SolProcInq(vfs_SolProc *p, Vint *atype, Vint *neq, Vint *nre)
inquire of defined neq, nre, and atype as output arguments
See
vfs_SolProcDef()
-
void vfs_SolProcSetStrategy(vfs_SolProc *p, Vint sproptype, Vint type, Vdouble endtime)
sets major strategy parameters for subsequent analysis
Completes the specification of the analysis by indicating whether a static or transient analysis is to be performed, and whether the analysis is to be treated as linear or nonlinear.
vfs_SolProcSetStrategy()
can be repeatedly called with the same endtime; if this is the case, then the last step will be repeated until convergence is achieved.- Errors
SYS_ERROR_OPERATION
is generated if SolProcDef has not been called.SYS_ERROR_ENUM
is generated if either sproptype or type have invalid values.SYS_ERROR_VALUE
is generated if endtime is not positive.
- Parameters:
p – Pointer to SolProc object.
sproptype – Solution property type
x=SYS_SOL_STATIC Static analysis =SYS_SOL_TRANSIENT Transient or dynamic analysis
type – Linear or nonlinear toggle
x=SOLPROC_LINEAR Linear analysis =SOLPROC_NONLINEAR Nonlinear analysis
endtime – The final analysis time
-
void vfs_SolProcInitTimeStep(vfs_SolProc *p, Vdouble dt)
set the initial time step
Set the initial time step to be used in the analysis. It may be subsequently changed for convergence or divergence reasons. Defaults to 1.0.
- Errors
SYS_ERROR_VALUE
is generated if dt < 0.
- Parameters:
p – Pointer to SolProc object.
dt – Initial time step to be used
-
void vfs_SolProcSetParami(vfs_SolProc *p, Vint type, Vint iparam)
set integer procedure parameters
The parameter
SOLPROC_FIXEDTIMESTEP
determines whether the time step is allowed to change. If a fixed time step is chosen and, in a nonlinear problem iteration is not achieved within the maximum number of iterations then an error is generated and the analysis terminates. Defaults toSYS_OFF
.The parameter
SOLPROC_LHS_ITERFREQ
indicates the nonlinear iteration frequency with which the stiffness matrix is forced to be reformed, regardless of other convergence criteria. Defaults to 0, which forces the matrix to be reformed based only on failure to converge or time step changes.The parameter
SOLPROC_LHS_STEPFREQ
indicates the time step frequency with which the stiffness matrix is forced to be reformed, regardless of other convergence criteria. Defaults to 0, which forces the matrix to be reformed based only on failure to converge or time step changes.The parameter
SOLPROC_MAXITER
indicates the maximum number of nonlinear iterations that can be performed within a time step. Failure to converge within this limit will trigger actions such as time step reduction. Defaults to 10.The parameter
SOLPROC_REACTCONVFLAG
indicates whether convergence is based on the magnitude of the reaction forces. Defaults toSYS_ON
.The parameter
SOLPROC_SOLCONVFLAG
indicates whether convergence is based on the change in the solution from nonlinear iteration to nonlinear iteration. Defaults toSYS_ON
.The parameter
SOLPROC_PREDICTOR
defines the methodology to be used to consistently extrapolate the current solution to the next step. Use eitherSOLPROC_SAME_DISP
orSOLPROC_SAME_ACCEL
for structural analysis, andSOLPROC_SAME_TEMP
orSOLPROC_SAME_TEMPRATE
for thermal analysis. Defaults toSOLPROC_SAME_ACCEL
for structural analysis andSOLPROC_SAME_TEMPRATE
for thermal analysis.The parameter
SOLPROC_LINESEARCH_FLAG
toggles between using an internal line search algorithm. Defaults to SYS_OFF.The parameter
SOLPROC_LINESEARCH_TYPE
specifies the type of line search algorithm to use, if enabled bySOLPROC_LINESEARCH_FLAG
. For a linear algorithm useSOLPROC_LINESEARCH_LINEAR
; for a bisection algorithm useSOLPROC_LINESEARCH_BISECTION
. Defaults toSOLPROC_LINESEARCH_LINEAR
.The parameter
SOLPROC_LINESEARCH_MAXITER
specifies the maximum number of line search iterations. Defaults to 10.- Errors
SYS_ERROR_ENUM
is generated if an improper type is specified, or if an invalid enumerated iparam is specified.SYS_ERROR_VALUE
is generated ifSOLPROC_LHS_REFORM
is less than 1; orSOLPROC_MAXITER
is less than 1; orSOLPROC_MINITER
is less than 0.
- Parameters:
p – Pointer to SolProc object.
type – Parameter type
x=SOLPROC_FIXEDTIMESTEP Toggle to run with fixed time step =SOLPROC_LHS_ITERFREQ Matrix nonlinear reform frequency =SOLPROC_LHS_STEPFREQ Matrix time step reform frequency =SOLPROC_MAXITER Maximum number of nonlinear iterations =SOLPROC_MINITER Minimum number of nonlinear iterations =SOLPROC_REACTCONVFLAG Toggle to check convergence on reaction =SOLPROC_SOLCONVFLAG Toggle to check convergence on solution =SOLPROC_PREDICTOR Set predictor type =SOLPROC_LINESEARCH_FLAG Toggle to use line search =SOLPROC_LINESEARCH_TYPE Type of line search method to use =SOLPROC_LINESEARCH_MAXITER Maximum number of line search iterations
iparam – Specifies the integer value that type will be set to.
x=SYS_ON Turn parameter on =SYS_OFF Turn parameter off =SOLPROC_SAME_DISP Set structural predictor to same displacement =SOLPROC_SAME_ACCEL Set structural predictor to same acceleration =SOLPROC_SAME_TEMP Set thermal predictor to same temperature =SOLPROC_SAME_TEMPRATE Set thermal predictor to same temperature rate =SOLPROC_LINESEARCH_LINEAR Set linear line search type =SOLPROC_LINESEARCH_BISECTION Set bisection line search type
-
void vfs_SolProcSetParamd(vfs_SolProc *p, Vint type, Vdouble iparam)
set double procedure parameters
The parameter
SOLPROC_FTOL
defines the tolerance to be used when checking convergence based on reaction forces. Defaults to 5.0e-03.The parameter
SOLPROC_UTOL
defines the tolerance to be used when checking convergence based on solution changes. Defaults to 1.0e-03.The parameter
SOLPROC_ETOL
defines the tolerance to be used when checking convergence based on energy changes. Defaults to 1.0e-06.The parameter
SOLPROC_REACTMINVAL
defines a reaction force below which the reactions are assumed converged. Defaults to 1.0e-12.The parameter
SOLPROC_SOLMINVAL
defines a solution change below which the solution is assumed converged. Defaults to 1.0e-12.The parameter
SOLPROC_BEGINTIME
defines the time the analysis is to start. It can only be set before callingvfs_SolProcExecute()
. Defaults to 0.0.The parameter
SOLPROC_ENDTIME
defines the time the analysis is to end. Defaults to 1.0.The parameter
SOLPROC_MINTIMESTEP
defines a minimum time step to increment the analysis. Defaults to 0.0.The parameter
SOLPROC_MAXTIMESTEP
defines a maximum time step to increment the analysis. Defaults to 0.0, which in turns forces SolProc to ignore this parameter.SOLPROC_MINTIMESTEP
andSOLPROC_MAXTIMESTEP
are ignored when the integer parameterSOLPROC_FIXEDTIMESTEP
is set toSYS_ON
. The time step value specified invfs_SolProcInitTimeStep()
is then used to run the entire analysis.The parameter
SOLPROC_HALFTOL
is a tolerance that controls the variation of the solution within a time step. It controls transient problems so that the time step is kept under control so as to properly capture transient phenomena. Defaults to 0.01.The parameters
SOLPROC_LINESEARCH_MAXSEARCH
andSOLPROC_LINESEARCH_MINSEARCH
control the maximum and minimum line search values. Default to 4. and 0.001, respectively.- Errors
SYS_ERROR_VALUE
is generated if eitherSOLPROC_REACTCONVTOL
,SOLPROC_SOLCONVTOL
,SOLPROC_REACTMINVAL
,SOLPROC_SOLMINVAL
, orSOLPROC_MINTIMESTEP
, orSOLPROC_MAXTIMESTEP
are <= 0.0.SYS_ERROR_OPERATION
is generated if you attempt to specifySOLPROC_BEGINTIME
after a call tovfs_SolProcExecute()
.
- Parameters:
p – Pointer to SolProc object.
type – Parameter type
x=SOLPROC_ETOL Tolerance for energy convergence =SOLPROC_ENERMINVAL Minimum residual for energy check =SOLPROC_FTOL Tolerance for reaction convergence =SOLPROC_REACTMINVAL Minimum residual for convergence check =SOLPROC_UTOL Tolerance for solution convergence =SOLPROC_SOLMINVAL Minimum residual for solution check =SOLPROC_BEGINTIME Time at beginning of analysis =SOLPROC_MINTIMESTEP Minimum time step =SOLPROC_MAXTIMESTEP Maximum time step =SOLPROC_HHTALPHA Damping for structural analysis =SOLPROC_HALFTOL Half-step tolerance =SOLPROC_LINESEARCH_MAXSEARCH Maximum line search value =SOLPROC_LINESEARCH_MINSEARCH Minimum line search value
iparam – Specifies the integer value that type will be set to.
-
void vfs_SolProcExecute(vfs_SolProc *p, Vint *action)
execute next procedure and return action
Execute the next task in the solution procedure and return a user action. The user must perform the action and call this function again.
- Parameters:
p – Pointer to SolProc object.
action – Execution action
x=VFS_ACTION_COMPLETE Final procedure step complete =VFS_ACTION_INCOMPLETE Unable to reach final solution step =VFS_ACTION_FACTOR Factorize current matrix =VFS_ACTION_SOLVE Solve given load vector =VFS_ACTION_STIFF Form linear matrix =VFS_ACTION_REACT Form reaction given solution vector =VFS_ACTION_REACTSTIFF Form reaction and matrix =VFS_ACTION_ENDSTEP Solution step complete =VFS_ACTION_UPDATE Update solution vector =VFS_ACTION_PREDICTOR Set boundary conditions =VFS_ACTION_FACTORMASS Form and factor mass/capacitance matrix =VFS_ACTION_SOLVEMASS Solve for initial acceleration/temperature rate =VFS_ACTION_INERTIA Compute inertia contribution
-
void vfs_SolProcGetSysVector(vfs_SolProc *p, Vint type, vfs_SysVector **sysvector)
get a system vector for processing
Each of the above vectors is properly described along with the resulting actions from
vfs_SolProcExecute()
.- Errors
SYS_ERROR_ENUM
is generated if an improper type is specified.SYS_ERROR_OPERATION
is generated ifvfs_SolProcExecute()
has not been called.
- Parameters:
p – Pointer to SolProc object.
type – Parameter type
x=VFS_VECTOR_REACT Reaction/load vector =VFS_VECTOR_U0 Displacement at beginning of step =VFS_VECTOR_U1 Displacement at end of step =VFS_VECTOR_V0 Velocity at beginning of step =VFS_VECTOR_V1 Velocity at end of step =VFS_VECTOR_A0 Acceleration at beginning of step =VFS_VECTOR_A1 Acceleration at end of step =VFS_VECTOR_INC Displacement increment =VFS_VECTOR_DELTAINC Linear system solution =VFS_VECTOR_INERTIA Inertia vector =VFS_VECTOR_BCREACT Reaction/load vector on BC dofs
sysvector – [out] requested vector
-
void vfs_SolProcGetInteger(vfs_SolProc *p, Vint type, Vint *iparam)
get running SolProc parameters
The integer parameter
SOLPROC_NUMITER
indicates the total number of iterations performed. It is reset to zero at the beginning of each time step.The integer parameter
SOLPROC_STEPID
indicates the current step number.The integer parameter
SOLPROC_STEPLAST
returns eitherSYS_ON
orSYS_OFF
depending on whether the end of the analysis has been reached.The double precision parameter
SOLPROC_REACTNORM
returns the final reaction norm once convergence at a time step has been achieved.The double precision parameter
SOLPROC_SOLNORM
returns the final solution increment norm once convergence at a time step has been achieved.The double precision parameter
SOLPROC_TIME
returns the time at the end of the current time step.The double precision parameter
SOLPROC_DAMPFACTOR
returns the factor that multiplies the damping matrix during a structural analysis when forming the matrix to be factored. It is also the factor that multiplies the capacitance matrix during a thermal analysis. The double precision parameterSOLPROC_MASSFACTOR
returns the factor that multiplies the mass matrix during a structural analysis when forming the matrix to be factored.The integer parameter
SOLPROC_STIFFFLAG
returns an indicator of what caused SolProc to request a new stiffness. Possible return values areVFS_STIFF_LS_DIVERGE
, issued when the internal line search algorithm diverges;VFS_STIFF_LS_MAXITER
, issued when the maximum number of line search iterations is reached;VFS_STIFF_LS_MAXVAL
, when the upper bound for the line search is reached;VFS_STIFF_LS_MINVAL
, when the lower bound for the line search is reached;VFS_STIFF_LS_STALL
, when the line search algorithm is stalled;VFS_STIFF_SPROP_NONLINEAR
, whenvfs_SolProcSetStrategy()
is called that changes the linear/nonlinear toggle;VFS_STIFF_SPROP_ANALYSIS
, whenvfs_SolProcSetStrategy()
is called that changes the analysis type;VFS_STIFF_START
, if a stiffness has never been formed before;VFS_STIFF_NEWDT
, when the time step changes;VFS_STIFF_NEWBC
, whenevervfs_SolProcSetTemp()
is called;VFS_STIFF_REFORM_FREQ
, when the number of time steps using the same stiffness reaches the value specified invfs_SolProcSetParami()
with a type ofSOLPROC_LHS_STEPFREQ
; andVFS_STIFF_HALFTOL
, when the transient half step threshold is reached. This parameter is only available whenever the actions are eitherVFS_ACTION_STIFF
orVFS_ACTION_REACTSTIFF
.- Errors
SYS_ERROR_ENUM
is generated if an improper type is specified.SYS_ERROR_OPERATION
is generated ifvfs_SolProcExecute()
has not been called.
- Parameters:
p – Pointer to SolProc object.
type – Parameter type
x=SOLPROC_NEWREACT Flag for new computed reaction norm =SOLPROC_NUMITER Number of iterations performed =SOLPROC_STEPID The current step id =SOLPROC_STEPLAST Query whether this is the last step =SOLPROC_REACTNORM Final reaction norm =SOLPROC_SOLNORM Final solution norm =SOLPROC_TIME Current analysis time =SOLPROC_DAMPFACTOR Factor that multiplies damping matrix =SOLPROC_MASSFACTOR Factor that multiplies mass matrix =SOLPROC_STIFFFLAG Flag with reason for stiffness reform =SOLPROC_LINESEARCH_ITER Number of line search iterations
iparam – [out] integer value
-
void vfs_SolProcGetDouble(vfs_SolProc *p, Vint type, Vdouble *iparam)
get running SolProc parameters
-
void vfs_SolProcSetTemp(vfs_SolProc *p, Vint ntemp, Vint temp[])
indicate which equations have temporary restraints on.
Lets SolProc know which equations are to be ignored when computing dot products and/or vector norms because of applied temporary restraints.
- Parameters:
p – Pointer to SolProc object.
ntemp – Number of temporary restraints
temp – List of temporary restraints
-
void vfs_SolProcSetFactorized(vfs_SolProc *p, Vint factorized)
flag that a factorization exists or does not exist
Flag to SolProc that the stiffness matrix has or has not been factorized. This is invoked as a result of external factors to SolProc that may lead the matrix to change its status as it is known to SolProc.
- Parameters:
p – Pointer to SolProc object.
factorized – Toggle for factorization flag
x=SYS_ON Matrix factorized =SYS_OFF Matrix not factorized
-
void vfs_SolProcSetComputeError(vfs_SolProc *p, Vint *action)
flag that an error has occurred.
Flag to SolProc that an error has occurred while performing a requested task. For example, during factorization the matrix may have been found singular, or a material computation may have failed to converge. SolProc will return the corrective action to be taken to accommodate the error, such as a reduction in time step.
- Parameters:
p – Pointer to SolProc object.
action – [out] Next action to be performed by user