|
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