![]() |
FrontISTR
5.7.0
Large-scale structural analysis program with finit element method
|
This module manages 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. More... | |
subroutine | fstr_contact_finalize (contact) |
Finalizer. More... | |
logical function | fstr_contact_check (contact, hecMESH) |
Check the consistency with given mesh of contact definition. More... | |
logical function | fstr_contact_init (contact, hecMESH, cparam, myrank) |
Initializer of tContactState. More... | |
logical function | fstr_embed_init (embed, hecMESH, cparam, myrank) |
Initializer of tContactState for embed case. More... | |
subroutine | clear_contact_state (contact) |
Reset contact state all to free. More... | |
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. More... | |
subroutine | scan_embed_state (flag_ctAlgo, embed, currpos, currdisp, ndforce, infoCTChange, nodeID, elemID, is_init, active, mu, B) |
This subroutine update contact states, which include. More... | |
subroutine | update_direction (nslave, contact, currpos) |
This subroutine tracks down next contact position after a finite slide. More... | |
subroutine | calcu_contact_force0 (contact, coord, disp, ddisp, fcoeff, mu, mut, B) |
This subroutine updates contact condition as follows: More... | |
subroutine | calcu_tied_force0 (contact, disp, ddisp, mu, B) |
This subroutine updates contact condition as follows: More... | |
subroutine | update_contact_multiplier (contact, coord, disp, ddisp, fcoeff, mu, mut, gnt, ctchanged) |
This subroutine update lagrangian multiplier and the distance between contacting nodes. More... | |
subroutine | update_tied_multiplier (contact, disp, ddisp, mu, ctchanged) |
This subroutine update lagrangian multiplier and the distance between contacting nodes. More... | |
subroutine | ass_contact_force (contact, coord, disp, B) |
This subroutine assemble contact force into contacing nodes. More... | |
subroutine | set_contact_state_vector (contact, dt, relvel_vec, state_vec) |
This subroutine setup contact output nodal vectors. More... | |
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. More... | |
subroutine | scan_contact_state_exp (contact, currpos, currdisp, infoCTChange, nodeID, elemID, is_init, active) |
This subroutine update contact states, which include. More... | |
This module manages 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 1381 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 updates 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 1126 of file fstr_contact_def.F90.
subroutine mcontactdef::calcu_tied_force0 | ( | type( tcontact ), intent(inout) | contact, |
real(kind=kreal), dimension(:), intent(in) | disp, | ||
real(kind=kreal), dimension(:), intent(in) | ddisp, | ||
real(kind=kreal), intent(in) | mu, | ||
real(kind=kreal), dimension(:), intent(inout) | B | ||
) |
This subroutine updates contact condition as follows:
[in,out] | contact | contact info |
[in] | disp | disp till current step |
[in] | ddisp | disp till current substep |
[in] | mu | penalty |
[in,out] | b | nodal force residual |
Definition at line 1200 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 392 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 definition.
[in,out] | contact | contact definition |
hecmesh | mesh definition |
Definition at line 124 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 108 of file fstr_contact_def.F90.
logical function mcontactdef::fstr_contact_init | ( | type(tcontact), intent(inout) | contact, |
type(hecmwst_local_mesh), pointer | hecMESH, | ||
type(tcontactparam), target | cparam, | ||
integer(kint), intent(in), optional | myrank | ||
) |
Initializer of tContactState.
[in,out] | contact | contact definition |
hecmesh | mesh definition | |
cparam | contact parameter |
Definition at line 153 of file fstr_contact_def.F90.
logical function mcontactdef::fstr_embed_init | ( | type(tcontact), intent(inout) | embed, |
type(hecmwst_local_mesh), pointer | hecMESH, | ||
type(tcontactparam), target | cparam, | ||
integer(kint), intent(in), optional | myrank | ||
) |
Initializer of tContactState for embed case.
[in,out] | embed | contact definition |
hecmesh | mesh definition | |
cparam | contact parameter |
Definition at line 272 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 86 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 | whether initial scan or not |
[out] | active | if any in contact |
[in] | mu | penalty |
b | nodal force residual |
Definition at line 416 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 | whether initial scan or not |
[out] | active | if any in contact |
Definition at line 1585 of file fstr_contact_def.F90.
subroutine mcontactdef::scan_embed_state | ( | character(len=9), intent(in) | flag_ctAlgo, |
type( tcontact ), intent(inout) | embed, | ||
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] | embed | 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 | whether initial scan or not |
[out] | active | if any in contact |
[in] | mu | penalty |
b | nodal force residual |
Definition at line 602 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 1435 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 1473 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 1248 of file fstr_contact_def.F90.
subroutine mcontactdef::update_contact_tangentforce | ( | type( tcontact ), intent(inout) | contact | ) |
[in,out] | contact | contact info |
Definition at line 1455 of file fstr_contact_def.F90.
subroutine mcontactdef::update_direction | ( | integer, intent(in) | nslave, |
type( tcontact ), intent(inout) | contact, | ||
real(kind=kreal), dimension(:), intent(in) | currpos | ||
) |
This subroutine tracks down next contact position after a finite slide.
[in] | nslave | slave node |
[in,out] | contact | contact info |
[in] | currpos | current coordinate of each nodes |
checking the contact element of last step
Definition at line 978 of file fstr_contact_def.F90.
subroutine mcontactdef::update_tied_multiplier | ( | type( tcontact ), intent(inout) | contact, |
real(kind=kreal), dimension(:), intent(in) | disp, | ||
real(kind=kreal), dimension(:), intent(in) | ddisp, | ||
real(kind=kreal), intent(in) | mu, | ||
logical, intent(inout) | ctchanged | ||
) |
This subroutine update lagrangian multiplier and the distance between contacting nodes.
[in,out] | contact | contact info |
[in] | disp | disp till current step |
[in] | ddisp | disp till current substep |
[in] | mu | penalty |
[in,out] | ctchanged | if contact state changes |
Definition at line 1332 of file fstr_contact_def.F90.