udfGetFbdData()
Return data from a flexible body set.
Syntax
fbdData = udfGetFbdData( udfHd, cmdName, dataName ) ;
Type
AcuSolve User-Defined Function Global
Parameters
- udfHd
- The opaque handle (pointer) which was passed to the user function.
- cmdName (string)
- Name of the FLEXIBLE_BODY command.
- dataName (integer)
- Symbolic name of the requested data.
- UDF_FBD_PREV_DISPLACEMENT
- Displacement at step n.
- UDF_FBD_PREV_VELOCITY
- Velocity at step n.
- UDF_FBD_CURR_DISPLACEMENT
- Displacement at step n+1.
- UDF_FBD_CURR_VELOCITY
- Velocity at step n+1.
- UDF_FBD_INTERNAL_FORCE
- Projection of fluid forces on the body.
- UDF_FBD_EXTERNAL_FORCE
- User-given external forces.
Return Value
- fbdData (real)
- Pointer to one dimensional real array of the requested data. The dimension of the array is num_modes (as given by the FLEXIBLE_BODY command) for all values of dataName.
Description
char* name ; /* name of the UDF */
Integer i ; /* a running index */
Real* disp ; /* displacement (curr or prev) */
Real* dispC ; /* next displacement */
Real* vel ; /* velocity (curr or prev) */
Real* velC ; /* next velocity */
Real* extForce ; /* external force */
Real* intForce ; /* internal force */
name = udfGetName( udfHd ) ;
dispC = outVec ;
velC = outVec + nItems ;
/* If the first time step */
if ( udfFirstStep(udfHd) ) {
disp = udfGetFbdData( udfHd, name, UDF_FBD_CURR_DISPLACEMENT ) ;
vel = udfGetFbdData( udfHd, name, UDF_FBD_CURR_VELOCITY ) ;
for ( i = 0 ; i < nItems ; i++ ) {
dispC[i] = disp[i] ;
velC[i] = vel[i] ;
}
return ;
}
/* Otherwise, get the data from the external program */
intForce = udfGetFbdData( udfHd, name, UDF_FBD_INTERNAL_FORCE ) ;
extForce = udfGetFbdData( udfHd, name, UDF_FBD_EXTERNAL_FORCE ) ;
disp = udfGetFbdData( udfHd, name, UDF_FBD_PREV_DISPLACEMENT ) ;
vel = udfGetFbdData( udfHd, name, UDF_FBD_PREV_VELOCITY ) ;
for ( i = 0 ; i < nItems ; i++ ) {
dispC[i] = ... ;
velC[i] = ... ;
}
Errors
- This routine expects a valid udfHd.
- cmdName must be a valid name.
- dataName must be one of the values given above.