![]() |
FrontISTR
5.7.1
Large-scale structural analysis program with finit element method
|
This module manages the data structure for contact calculation. More...
Data Types | |
| type | tcontact |
| Structure to includes all info needed by contact calculation. More... | |
| type | fstr_info_contactchange |
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... | |
| integer(kind=kint) function | check_apply_contact_if (contact_if, contacts) |
| 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 1422 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 1166 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 1241 of file fstr_contact_def.F90.
| integer(kind=kint) function mcontactdef::check_apply_contact_if | ( | type(tcontactinterference), intent(inout) | contact_if, |
| type(tcontact), dimension(:) | contacts | ||
| ) |
| [in,out] | contact_if | contact definition |
| contacts | type fstr_solid |
Definition at line 395 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 432 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 127 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 111 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 156 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 277 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 89 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 455 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 1625 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 642 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 1476 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 1514 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 1288 of file fstr_contact_def.F90.
| subroutine mcontactdef::update_contact_tangentforce | ( | type( tcontact ), intent(inout) | contact | ) |
| [in,out] | contact | contact info |
Definition at line 1496 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 1019 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 1373 of file fstr_contact_def.F90.