FEDEM Solver
R8.0
Source code of the dynamics solver
|
Module with data types representing strain rosette objects. More...
Data Types | |
type | straingagetype |
Data type representing a single strain gage. More... | |
type | strainrosettetype |
Data type representing a strain rosette. More... | |
type | strainelementtype |
Data type representing a surface stress/strain recovery element. More... | |
interface | nullifyrosette |
Initializes a stress/strain recovery object. More... | |
Functions/Subroutines | |
subroutine | readstrainelements (infp, strainRosettes, thisPart, err) |
Initializes strain elements with data from the solver input file. More... | |
subroutine, private | nullifystrainrosette (rosette) |
Initializes a strainrosettemodule::strainrosettetype object. More... | |
subroutine, private | nullifystrainelement (rosette) |
Initializes a strainrosettemodule::strainelementtype object. More... | |
subroutine | deallocaterosette (rosette) |
Deallocates a strainrosettemodule::strainelementtype object. More... | |
subroutine | checkrosette (ros, nodes, ierr) |
Checks the nodal ordering of a strain rosette element. More... | |
subroutine | initstraingauges (gages, alphaGages, posInGl) |
Initializes the strain gage objects. More... | |
subroutine | evaluatestraingages (gages, epsC, sigC) |
Evaluates the given strain gages based on given strain/stress state. More... | |
subroutine | calcrosettestrains (rosette, displ, ierr) |
Evaluates the given strain rosette based on the given displacements. More... | |
subroutine | calczerostartrosettestrains (rosette, displ, ierr) |
Evaluates the initial strain of a strain rosette. More... | |
subroutine | printrosettestrains (rosette, time, lpu) |
Prints the current state of a strain rosette to ASCII file. More... | |
subroutine | printinitialstrain (rosette, time, lpu) |
Prints the initial state of a strain rosette to ASCII file. More... | |
subroutine | printrosetteheading (rosette, globalNodes, minex, posInGl, rosId, feId, lpu) |
Prints the ASCII file heading for a given strain rosette object. More... | |
subroutine | calcelmcoordsystem (id, globalNodes, posInGl, X_el, T_el, lpu, ierr, useElCoordSys) |
Computes nodal coordinates and transformation matrix for an element. More... | |
subroutine | initstrainrosette (rosette, H_el, madof, addSigma0, sigma0, iprint, lpu, ierr, useElCoordSys, openFiles, calcDisp, vgii) |
Computes strain-displacement matrices for all strain rosettes. More... | |
subroutine | calcrosettedisplacements (rosette, madof, H_el, displ, supTr, lpu, ierr) |
Computes nodal displacements in a strain rosette. More... | |
Variables | |
character(len=14), dimension(4), parameter, private | gagetype_p = (/'SINGLE_GAGE ', 'DOUBLE_GAGE_90', 'TRIPLE_GAGE_60', 'TRIPLE_GAGE_45'/) |
The allowable strain gage types. More... | |
integer, parameter | singlegage_p = 1 |
Along X-direction vector. More... | |
integer, parameter | doublegage_p = 2 |
90 degrees spread More... | |
integer, parameter | triplegage1_p = 3 |
60 degrees spread More... | |
integer, parameter | triplegage2_p = 4 |
45 degrees spread More... | |
Module with data types representing strain rosette objects.
The module also contains subroutines for accessing the data, and to perform some calculations.
subroutine strainrosettemodule::calcelmcoordsystem | ( | type(idtype), intent(in) | id, |
integer, dimension(:), intent(in) | globalNodes, | ||
real(dp), dimension(:,:), intent(inout) | posInGl, | ||
real(dp), dimension(:,:), intent(out) | X_el, | ||
real(dp), dimension(:,:), intent(out) | T_el, | ||
integer, intent(in) | lpu, | ||
integer, intent(out) | ierr, | ||
logical, intent(in), optional | useElCoordSys | ||
) |
Computes nodal coordinates and transformation matrix for an element.
This subroutine extracts the global nodal coordinates for a strain-gage element and calculates its associated global-to-local transformation matrix. If the initial nodal ordering gives wrong Z-axis direction, the element nodes are reordered and the calculation is repeated.
subroutine strainrosettemodule::calcrosettedisplacements | ( | type(strainelementtype), intent(inout) | rosette, |
integer, dimension(:), intent(in) | madof, | ||
real(rk), dimension(:,:), intent(in) | H_el, | ||
real(rk), dimension(:), intent(in) | displ, | ||
real(dp), dimension(:,:), intent(in) | supTr, | ||
integer, intent(in) | lpu, | ||
integer, intent(out) | ierr | ||
) |
Computes nodal displacements in a strain rosette.
subroutine strainrosettemodule::calcrosettestrains | ( | type(strainrosettetype), intent(inout) | rosette, |
real(rk), dimension(:), intent(in) | displ, | ||
integer, intent(out) | ierr | ||
) |
Evaluates the given strain rosette based on the given displacements.
subroutine strainrosettemodule::calczerostartrosettestrains | ( | type(strainrosettetype), intent(inout) | rosette, |
real(rk), dimension(:), intent(in) | displ, | ||
integer, intent(out) | ierr | ||
) |
Evaluates the initial strain of a strain rosette.
subroutine strainrosettemodule::checkrosette | ( | type(strainelementtype), intent(inout) | ros, |
integer, dimension(:), intent(in) | nodes, | ||
integer, intent(out) | ierr | ||
) |
Checks the nodal ordering of a strain rosette element.
[out] | ros | The strain rosette element to check orientation of |
[in] | nodes | Local node numbers of the element |
[out] | ierr | Error flag |
Firstly, the node numbers of the strain rosette element is converted to external numbers. Then it is checked that the nodal ordering of the strain rosette yields a proper normal vector compared with its local Z-axis. The element nodes are otherwise swapped.
subroutine strainrosettemodule::deallocaterosette | ( | type(strainelementtype), intent(inout) | rosette | ) |
Deallocates a strainrosettemodule::strainelementtype object.
subroutine strainrosettemodule::evaluatestraingages | ( | type(straingagetype), dimension(:), intent(inout) | gages, |
real(dp), dimension(:), intent(in) | epsC, | ||
real(dp), dimension(:), intent(in) | sigC | ||
) |
Evaluates the given strain gages based on given strain/stress state.
gages | The strain gage objects to evaluate | |
[in] | epsC | Cartesian strain vector |
[in] | sigC | Cartesian stress vector |
subroutine strainrosettemodule::initstraingauges | ( | type(straingagetype), dimension(:), intent(inout) | gages, |
real(dp), intent(in) | alphaGages, | ||
real(dp), dimension(:,:), intent(in) | posInGl | ||
) |
Initializes the strain gage objects.
gages | The strain gage objects to initialize | |
[in] | alphaGages | Angle between each strain gage |
[in] | posInGl | Position matrix of the strain rosette owing the gages |
This subroutine establishes the strain-gage direction vectors and the transformation from Cartesian strains to strains in the gage direction.
subroutine strainrosettemodule::initstrainrosette | ( | type(strainelementtype), intent(inout) | rosette, |
real(rk), dimension(:,:), intent(in) | H_el, | ||
integer, dimension(:), intent(in) | madof, | ||
logical, intent(in) | addSigma0, | ||
real(dp), dimension(:), intent(inout), optional | sigma0, | ||
integer, intent(in) | iprint, | ||
integer, intent(in) | lpu, | ||
integer, intent(out) | ierr, | ||
logical, intent(in), optional | useElCoordSys, | ||
logical, intent(in), optional | openFiles, | ||
logical, intent(in), optional | calcDisp, | ||
real(rk), dimension(:), intent(in), optional | vgii | ||
) |
Computes strain-displacement matrices for all strain rosettes.
|
private |
Initializes a strainrosettemodule::strainelementtype object.
|
private |
Initializes a strainrosettemodule::strainrosettetype object.
subroutine strainrosettemodule::printinitialstrain | ( | type(strainrosettetype), intent(inout) | rosette, |
real(dp), intent(in) | time, | ||
integer, intent(in) | lpu | ||
) |
Prints the initial state of a strain rosette to ASCII file.
subroutine strainrosettemodule::printrosetteheading | ( | type(strainrosettetype), intent(in) | rosette, |
integer, dimension(:), intent(in) | globalNodes, | ||
integer, dimension(:), intent(in) | minex, | ||
real(dp), dimension(:,:), intent(in) | posInGl, | ||
integer, intent(in) | rosId, | ||
integer, intent(in) | feId, | ||
integer, intent(in) | lpu | ||
) |
Prints the ASCII file heading for a given strain rosette object.
subroutine strainrosettemodule::printrosettestrains | ( | type(strainrosettetype), intent(in) | rosette, |
real(dp), intent(in) | time, | ||
integer, intent(in) | lpu | ||
) |
Prints the current state of a strain rosette to ASCII file.
subroutine strainrosettemodule::readstrainelements | ( | integer, intent(in) | infp, |
type(strainelementtype), dimension(:), pointer | strainRosettes, | ||
integer, intent(in), optional | thisPart, | ||
integer, intent(out) | err | ||
) |
Initializes strain elements with data from the solver input file.
[in] | infp | File unit number for the solver input file |
[out] | strainRosettes | Array of strain rosette elements in the model |
[in] | thisPart | If given, only consider strain rosettes on this part |
[out] | err | Error flag |
integer, parameter strainrosettemodule::doublegage_p = 2 |
90 degrees spread
|
private |
The allowable strain gage types.
integer, parameter strainrosettemodule::singlegage_p = 1 |
Along X-direction vector.
integer, parameter strainrosettemodule::triplegage1_p = 3 |
60 degrees spread
integer, parameter strainrosettemodule::triplegage2_p = 4 |
45 degrees spread