![]() |
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 | 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 defintiion. More... | |
| logical function | fstr_contact_init (contact, hecMESH, myrank) |
| Initializer of tContactState. 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 | calcu_contact_force0 (contact, coord, disp, ddisp, fcoeff, mu, mut, B) |
| This subroutine update 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 | 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... | |
Variables | |
| real(kind=kreal), parameter | distclr_init = 1.d-6 |
| dist clearance for initial scan More... | |
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.