![]() |
FrontISTR 5.2.0
Large-scale structural analysis program with finit element method
|
This module manage the data structure for contact calculation. More...
Data Types | |
type | fstr_info_contactchange |
type | tcontact |
Structure to includes all info needed by contact calculation. More... | |
Functions/Subroutines | |
subroutine | fstr_write_contact (file, contact) |
Write out contact definition. | |
subroutine | fstr_contact_finalize (contact) |
Finalizer. | |
logical function | fstr_contact_check (contact, hecmesh) |
Check the consistency with given mesh of contact defintiion. | |
logical function | fstr_contact_init (contact, hecmesh, myrank) |
Initializer of tContactState. | |
subroutine | clear_contact_state (contact) |
Reset contact state all to free. | |
subroutine | scan_contact_state (flag_ctalgo, contact, currpos, currdisp, ndforce, infoctchange, nodeid, elemid, is_init, active, mu, b) |
This subroutine update contact states, which include. | |
subroutine | calcu_contact_force0 (contact, coord, disp, ddisp, fcoeff, mu, mut, b) |
This subroutine update contact condition as follows: | |
subroutine | update_contact_multiplier (contact, coord, disp, ddisp, fcoeff, mu, mut, gnt, ctchanged) |
This subroutine update lagrangian multiplier and the distance between contacting nodes. | |
subroutine | ass_contact_force (contact, coord, disp, b) |
This subroutine assemble contact force into contacing nodes. | |
subroutine | set_contact_state_vector (contact, dt, relvel_vec, state_vec) |
This subroutine setup contact output nodal vectors. | |
subroutine | update_contact_tangentforce (contact) |
subroutine | track_contact_position_exp (nslave, contact, currpos, currdisp, infoctchange, nodeid, elemid) |
This subroutine tracks down next contact position after a finite slide. | |
subroutine | scan_contact_state_exp (contact, currpos, currdisp, infoctchange, nodeid, elemid, is_init, active) |
This subroutine update contact states, which include. | |
Variables | |
real(kind=kreal), parameter | distclr_init = 1.d-6 |
dist clearance for initial scan | |
This module manage the data structure for contact calculation.
Contact calculation takes into act after calling the following three subrotuines provided in this module
subroutine mcontactdef::ass_contact_force | ( | type( tcontact ), intent(in) | contact, |
real(kind=kreal), dimension(:), intent(in) | coord, | ||
real(kind=kreal), dimension(:), intent(in) | disp, | ||
real(kind=kreal), dimension(:), intent(inout) | b | ||
) |
This subroutine assemble contact force into contacing nodes.
[in] | contact | contact info |
[in] | coord | mesh coordinate |
[in] | disp | disp till current now |
[in,out] | b | nodal force residual |
Definition at line 961 of file fstr_contact_def.F90.
subroutine mcontactdef::calcu_contact_force0 | ( | type( tcontact ), intent(inout) | contact, |
real(kind=kreal), dimension(:), intent(in) | coord, | ||
real(kind=kreal), dimension(:), intent(in) | disp, | ||
real(kind=kreal), dimension(:), intent(in) | ddisp, | ||
real(kind=kreal), intent(in) | fcoeff, | ||
real(kind=kreal), intent(in) | mu, | ||
real(kind=kreal), intent(in) | mut, | ||
real(kind=kreal), dimension(:), intent(inout) | b | ||
) |
This subroutine update contact condition as follows:
[in,out] | contact | contact info |
[in] | coord | mesh coordinate |
[in] | disp | disp till current step |
[in] | ddisp | disp till current substep |
[in] | fcoeff | frictional coeff |
[in] | mut | penalty |
[in,out] | b | nodal force residual |
Definition at line 802 of file fstr_contact_def.F90.
subroutine mcontactdef::clear_contact_state | ( | type(tcontact), intent(inout) | contact | ) |
Reset contact state all to free.
[in,out] | contact | contact definition |
Definition at line 286 of file fstr_contact_def.F90.
logical function mcontactdef::fstr_contact_check | ( | type(tcontact), intent(inout) | contact, |
type(hecmwst_local_mesh), pointer | hecmesh | ||
) |
Check the consistency with given mesh of contact defintiion.
[in,out] | contact | contact definition |
hecmesh | mesh definition |
Definition at line 140 of file fstr_contact_def.F90.
subroutine mcontactdef::fstr_contact_finalize | ( | type(tcontact), intent(inout) | contact | ) |
Finalizer.
[in,out] | contact | contact definition |
Definition at line 124 of file fstr_contact_def.F90.
logical function mcontactdef::fstr_contact_init | ( | type(tcontact), intent(inout) | contact, |
type(hecmwst_local_mesh), pointer | hecmesh, | ||
integer(kint), intent(in), optional | myrank | ||
) |
Initializer of tContactState.
[in,out] | contact | contact definition |
hecmesh | mesh definition |
Definition at line 169 of file fstr_contact_def.F90.
subroutine mcontactdef::fstr_write_contact | ( | integer(kind=kint), intent(in) | file, |
type(tcontact), intent(in) | contact | ||
) |
Write out contact definition.
[in] | file | file number |
[in] | contact | contact definition |
Definition at line 102 of file fstr_contact_def.F90.
subroutine mcontactdef::scan_contact_state | ( | character(len=9), intent(in) | flag_ctalgo, |
type( tcontact ), intent(inout) | contact, | ||
real(kind=kreal), dimension(:), intent(in) | currpos, | ||
real(kind=kreal), dimension(:), intent(in) | currdisp, | ||
real(kind=kreal), dimension(:), intent(in) | ndforce, | ||
type( fstr_info_contactchange ), intent(inout) | infoctchange, | ||
integer(kind=kint), dimension(:), intent(in) | nodeid, | ||
integer(kind=kint), dimension(:), intent(in) | elemid, | ||
logical, intent(in) | is_init, | ||
logical, intent(out) | active, | ||
real(kind=kreal), intent(in) | mu, | ||
real(kind=kreal), dimension(:), optional, target | b | ||
) |
This subroutine update contact states, which include.
[in] | flag_ctalgo | contact analysis algorithm flag |
[in,out] | contact | contact info |
[in,out] | infoctchange | contact change info |
[in] | currpos | current coordinate of each nodes |
[in] | currdisp | current displacement of each nodes |
[in] | ndforce | nodal force |
[in] | nodeid | global nodal ID, just for print out |
[in] | elemid | global elemental ID, just for print out |
[in] | is_init | wheather initial scan or not |
[out] | active | if any in contact |
[in] | mu | penalty |
b | nodal force residual |
Definition at line 309 of file fstr_contact_def.F90.
subroutine mcontactdef::scan_contact_state_exp | ( | type( tcontact ), intent(inout) | contact, |
real(kind=kreal), dimension(:), intent(in) | currpos, | ||
real(kind=kreal), dimension(:), intent(in) | currdisp, | ||
type( fstr_info_contactchange ), intent(inout) | infoctchange, | ||
integer(kind=kint), dimension(:), intent(in) | nodeid, | ||
integer(kind=kint), dimension(:), intent(in) | elemid, | ||
logical, intent(in) | is_init, | ||
logical, intent(out) | active | ||
) |
This subroutine update contact states, which include.
[in,out] | contact | contact info |
[in,out] | infoctchange | contact change info |
[in] | currpos | current coordinate of each nodes |
[in] | currdisp | current displacement of each nodes |
[in] | nodeid | global nodal ID, just for print out |
[in] | elemid | global elemental ID, just for print out |
[in] | is_init | wheather initial scan or not |
[out] | active | if any in contact |
Definition at line 1164 of file fstr_contact_def.F90.
subroutine mcontactdef::set_contact_state_vector | ( | type( tcontact ), intent(in) | contact, |
real(kind=kreal), intent(in) | dt, | ||
real(kind=kreal), dimension(:), intent(inout) | relvel_vec, | ||
real(kind=kreal), dimension(:), intent(inout) | state_vec | ||
) |
This subroutine setup contact output nodal vectors.
[in] | contact | contact info |
[in,out] | relvel_vec | mesh coordinate |
[in,out] | state_vec | disp till current now |
Definition at line 1015 of file fstr_contact_def.F90.
subroutine mcontactdef::track_contact_position_exp | ( | integer, intent(in) | nslave, |
type( tcontact ), intent(inout) | contact, | ||
real(kind=kreal), dimension(:), intent(in) | currpos, | ||
real(kind=kreal), dimension(:), intent(in) | currdisp, | ||
type( fstr_info_contactchange ), intent(inout) | infoctchange, | ||
integer(kind=kint), dimension(:), intent(in) | nodeid, | ||
integer(kind=kint), dimension(:), intent(in) | elemid | ||
) |
This subroutine tracks down next contact position after a finite slide.
[in] | nslave | slave node |
[in,out] | contact | contact info |
[in,out] | infoctchange | contact change info |
[in] | currpos | current coordinate of each nodes |
[in] | currdisp | current displacement of each nodes |
[in] | nodeid | global nodal ID, just for print out |
[in] | elemid | global elemental ID, just for print out |
checking the contact element of last step
Definition at line 1053 of file fstr_contact_def.F90.
subroutine mcontactdef::update_contact_multiplier | ( | type( tcontact ), intent(inout) | contact, |
real(kind=kreal), dimension(:), intent(in) | coord, | ||
real(kind=kreal), dimension(:), intent(in) | disp, | ||
real(kind=kreal), dimension(:), intent(in) | ddisp, | ||
real(kind=kreal), intent(in) | fcoeff, | ||
real(kind=kreal), intent(in) | mu, | ||
real(kind=kreal), intent(in) | mut, | ||
real(kind=kreal), dimension(2), intent(out) | gnt, | ||
logical, intent(inout) | ctchanged | ||
) |
This subroutine update lagrangian multiplier and the distance between contacting nodes.
[in,out] | contact | contact info |
[in] | coord | mesh coordinate |
[in] | disp | disp till current step |
[in] | ddisp | disp till current substep |
[in] | fcoeff | frictional coeff |
[in] | mut | penalty |
[out] | gnt | convergency information |
[in,out] | ctchanged | if contact state changes |
Definition at line 877 of file fstr_contact_def.F90.
subroutine mcontactdef::update_contact_tangentforce | ( | type( tcontact ), intent(inout) | contact | ) |
[in,out] | contact | contact info |
Definition at line 1035 of file fstr_contact_def.F90.
real(kind=kreal), parameter mcontactdef::distclr_init = 1.d-6 |
dist clearance for initial scan
Definition at line 70 of file fstr_contact_def.F90.