FrontISTR  5.9.0
Large-scale structural analysis program with finit element method
mcontactdef Module Reference

This module manages the data structure for contact calculation. More...

Data Types

type  tcontactstate
 This structure records contact status. More...
 
type  tcontactsurf
 Structure to define a slave surface segment of a SURF-SURF (mortar) contact pair. More...
 
type  tcontact
 Structure to includes all info needed by contact calculation. More...
 
type  fstr_info_contactchange
 

Functions/Subroutines

subroutine contact_state_init (cstate)
 Initializer. More...
 
subroutine contact_state_copy (cstate1, cstate2)
 Copy. More...
 
pure logical function is_contact_active (state)
 Whether the contact state has active LM constraint (STICK or SLIP) More...
 
pure logical function is_contact_free (state)
 Whether the contact state is completely free (no projection info) More...
 
pure integer function contact_state_category (state)
 Which of the three categories the contact state belongs to. 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...
 
integer(kind=kint) function fstr_count_internal_slaves (contact, hecMESH)
 Number of slave nodes of this contact owned by the current rank. More...
 
logical function fstr_contact_init (contact, hecMESH, cparam)
 Initializer of tContactState. More...
 
logical function fstr_embed_init (embed, hecMESH, cparam)
 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 initialize_csurf (eid, etype, nsurf, surf)
 Initializer of a slave surface segment (SURF-SURF mortar) More...
 

Variables

real(kind=kreal), save cgn =1.d-5
 convergent condition of penetration More...
 
real(kind=kreal), save cgt =1.d-3
 convergent condition of relative tangent disp More...
 
real(kind=kreal), dimension(2), save gnt
 1:current average penetration; 2:current relative tangent displacement More...
 
real(kind=kreal), dimension(2), save bakgnt
 1:current average penetration; 2:current relative tangent displacement! More...
 
integer, parameter contactunknown = -1
 
integer, parameter contactfree = -1
 contact state definition More...
 
integer, parameter contactnear = 0
 near contact: projection info available, no LM constraint More...
 
integer, parameter contactstick = 1
 
integer, parameter contactslip = 2
 
integer, parameter candidate_intp = 3
 SURF-SURF: integration point to be re-projected in this scan. More...
 
integer, parameter kcatfree = 1
 contact state category: states sharing a category contribute to the matrix in the same way More...
 
integer, parameter kcatnear = 2
 projection only, no Lagrange multiplier More...
 
integer, parameter kcatcont = 3
 Lagrange multiplier held (STICK or SLIP) More...
 
integer, parameter contacttied = 1
 contact type or algorithm definition More...
 
integer, parameter contactglued = 2
 
integer, parameter contactsslid = 3
 
integer, parameter contactfslid = 4
 
integer, parameter kcsnone = 0
 contact smoothing type More...
 
integer, parameter kcsnagata = 1
 
integer, parameter contactn2s = 1
 contact method More...
 
integer, parameter contacts2s = 2
 
integer, parameter sparsity_none = 0
 sparsity expansion mode (per contact pair, set by !CONTACT EXPANSION=) More...
 
integer, parameter sparsity_neighbor = 1
 register current master + neighbors (fewer matrix rebuilds) More...
 
integer, parameter max_n_intp = 128
 upper bound of integration points per SURF-SURF slave segment More...
 
integer, parameter c_if_slave = 1
 contact interference type More...
 
integer, parameter c_if_master = 2
 
integer, parameter kctforresidual = 1
 purpose flag for contact force calculation More...
 
integer, parameter kctforoutput = 2
 compute contact force for output (CONT_NFORCE/CONT_FRIC) More...
 

Detailed Description

This module manages the data structure for contact calculation.

Contact calculation takes into act after calling the following three subrotuines provided in this module

  1. Reading contact definition with subroutine: fstr_ctrl_get_CONTACT
  2. Check its consistency with mesh definition: fstr_contact_check
  3. Initializing the contact calculation : fstr_contact_init

Function/Subroutine Documentation

◆ check_apply_contact_if()

integer(kind=kint) function mcontactdef::check_apply_contact_if ( type(tcontactinterference), intent(inout)  contact_if,
type(tcontact), dimension(:)  contacts 
)
Parameters
[in,out]contact_ifcontact definition
contactstype fstr_solid

Definition at line 582 of file fstr_contact_def.F90.

◆ clear_contact_state()

subroutine mcontactdef::clear_contact_state ( type(tcontact), intent(inout)  contact)

Reset contact state all to free.

Parameters
[in,out]contactcontact definition

Definition at line 624 of file fstr_contact_def.F90.

Here is the caller graph for this function:

◆ contact_state_category()

pure integer function mcontactdef::contact_state_category ( integer, intent(in)  state)

Which of the three categories the contact state belongs to.

Definition at line 241 of file fstr_contact_def.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ contact_state_copy()

subroutine mcontactdef::contact_state_copy ( type(tcontactstate), intent(in)  cstate1,
type(tcontactstate), intent(inout)  cstate2 
)

Copy.

Parameters
[in]cstate1contact state
[in,out]cstate2contact state

Definition at line 222 of file fstr_contact_def.F90.

Here is the caller graph for this function:

◆ contact_state_init()

subroutine mcontactdef::contact_state_init ( type(tcontactstate), intent(inout)  cstate)

Initializer.

Parameters
[in,out]cstatecontact state

Definition at line 199 of file fstr_contact_def.F90.

Here is the caller graph for this function:

◆ fstr_contact_check()

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.

Parameters
[in,out]contactcontact definition
hecmeshmesh definition

Definition at line 269 of file fstr_contact_def.F90.

◆ fstr_contact_finalize()

subroutine mcontactdef::fstr_contact_finalize ( type(tcontact), intent(inout)  contact)

Finalizer.

Parameters
[in,out]contactcontact definition

Definition at line 253 of file fstr_contact_def.F90.

Here is the call graph for this function:

◆ fstr_contact_init()

logical function mcontactdef::fstr_contact_init ( type(tcontact), intent(inout)  contact,
type(hecmwst_local_mesh), pointer  hecMESH,
type(tcontactparam), target  cparam 
)

Initializer of tContactState.

Parameters
[in,out]contactcontact definition
hecmeshmesh definition
cparamcontact parameter

Definition at line 318 of file fstr_contact_def.F90.

Here is the call graph for this function:

◆ fstr_count_internal_slaves()

integer(kind=kint) function mcontactdef::fstr_count_internal_slaves ( type(tcontact), intent(in)  contact,
type(hecmwst_local_mesh), pointer  hecMESH 
)

Number of slave nodes of this contact owned by the current rank.

Parameters
[in]contactcontact definition
hecmeshmesh definition

Definition at line 298 of file fstr_contact_def.F90.

Here is the caller graph for this function:

◆ fstr_embed_init()

logical function mcontactdef::fstr_embed_init ( type(tcontact), intent(inout)  embed,
type(hecmwst_local_mesh), pointer  hecMESH,
type(tcontactparam), target  cparam 
)

Initializer of tContactState for embed case.

Parameters
[in,out]embedcontact definition
hecmeshmesh definition
cparamcontact parameter

Definition at line 487 of file fstr_contact_def.F90.

Here is the call graph for this function:

◆ initialize_csurf()

subroutine mcontactdef::initialize_csurf ( integer(kind=kint), intent(in)  eid,
integer(kind=kint), intent(in)  etype,
integer(kind=kint), intent(in)  nsurf,
type(tcontactsurf), intent(inout)  surf 
)

Initializer of a slave surface segment (SURF-SURF mortar)

Parameters
[in]eidelement ID
[in]etypeelement type
[in]nsurfsurface ID
[in,out]surfsurface element

Definition at line 645 of file fstr_contact_def.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_contact_active()

pure logical function mcontactdef::is_contact_active ( integer, intent(in)  state)

Whether the contact state has active LM constraint (STICK or SLIP)

Definition at line 229 of file fstr_contact_def.F90.

Here is the caller graph for this function:

◆ is_contact_free()

pure logical function mcontactdef::is_contact_free ( integer, intent(in)  state)

Whether the contact state is completely free (no projection info)

Definition at line 235 of file fstr_contact_def.F90.

Here is the caller graph for this function:

Variable Documentation

◆ bakgnt

real(kind=kreal), dimension(2), save mcontactdef::bakgnt

1:current average penetration; 2:current relative tangent displacement!

Definition at line 28 of file fstr_contact_def.F90.

◆ c_if_master

integer, parameter mcontactdef::c_if_master = 2

Definition at line 67 of file fstr_contact_def.F90.

◆ c_if_slave

integer, parameter mcontactdef::c_if_slave = 1

contact interference type

Definition at line 66 of file fstr_contact_def.F90.

◆ candidate_intp

integer, parameter mcontactdef::candidate_intp = 3

SURF-SURF: integration point to be re-projected in this scan.

Definition at line 37 of file fstr_contact_def.F90.

◆ cgn

real(kind=kreal), save mcontactdef::cgn =1.d-5

convergent condition of penetration

Definition at line 23 of file fstr_contact_def.F90.

◆ cgt

real(kind=kreal), save mcontactdef::cgt =1.d-3

convergent condition of relative tangent disp

Definition at line 24 of file fstr_contact_def.F90.

◆ contactfree

integer, parameter mcontactdef::contactfree = -1

contact state definition

Definition at line 33 of file fstr_contact_def.F90.

◆ contactfslid

integer, parameter mcontactdef::contactfslid = 4

Definition at line 48 of file fstr_contact_def.F90.

◆ contactglued

integer, parameter mcontactdef::contactglued = 2

Definition at line 46 of file fstr_contact_def.F90.

◆ contactn2s

integer, parameter mcontactdef::contactn2s = 1

contact method

Definition at line 55 of file fstr_contact_def.F90.

◆ contactnear

integer, parameter mcontactdef::contactnear = 0

near contact: projection info available, no LM constraint

Definition at line 34 of file fstr_contact_def.F90.

◆ contacts2s

integer, parameter mcontactdef::contacts2s = 2

Definition at line 56 of file fstr_contact_def.F90.

◆ contactslip

integer, parameter mcontactdef::contactslip = 2

Definition at line 36 of file fstr_contact_def.F90.

◆ contactsslid

integer, parameter mcontactdef::contactsslid = 3

Definition at line 47 of file fstr_contact_def.F90.

◆ contactstick

integer, parameter mcontactdef::contactstick = 1

Definition at line 35 of file fstr_contact_def.F90.

◆ contacttied

integer, parameter mcontactdef::contacttied = 1

contact type or algorithm definition

Definition at line 45 of file fstr_contact_def.F90.

◆ contactunknown

integer, parameter mcontactdef::contactunknown = -1

Definition at line 31 of file fstr_contact_def.F90.

◆ gnt

real(kind=kreal), dimension(2), save mcontactdef::gnt

1:current average penetration; 2:current relative tangent displacement

Definition at line 26 of file fstr_contact_def.F90.

◆ kcatcont

integer, parameter mcontactdef::kcatcont = 3

Lagrange multiplier held (STICK or SLIP)

Definition at line 42 of file fstr_contact_def.F90.

◆ kcatfree

integer, parameter mcontactdef::kcatfree = 1

contact state category: states sharing a category contribute to the matrix in the same way

no projection

Definition at line 40 of file fstr_contact_def.F90.

◆ kcatnear

integer, parameter mcontactdef::kcatnear = 2

projection only, no Lagrange multiplier

Definition at line 41 of file fstr_contact_def.F90.

◆ kcsnagata

integer, parameter mcontactdef::kcsnagata = 1

Definition at line 52 of file fstr_contact_def.F90.

◆ kcsnone

integer, parameter mcontactdef::kcsnone = 0

contact smoothing type

Definition at line 51 of file fstr_contact_def.F90.

◆ kctforoutput

integer, parameter mcontactdef::kctforoutput = 2

compute contact force for output (CONT_NFORCE/CONT_FRIC)

Definition at line 71 of file fstr_contact_def.F90.

◆ kctforresidual

integer, parameter mcontactdef::kctforresidual = 1

purpose flag for contact force calculation

compute contact force for residual (conMATB)

Definition at line 70 of file fstr_contact_def.F90.

◆ max_n_intp

integer, parameter mcontactdef::max_n_intp = 128

upper bound of integration points per SURF-SURF slave segment

Definition at line 63 of file fstr_contact_def.F90.

◆ sparsity_neighbor

integer, parameter mcontactdef::sparsity_neighbor = 1

register current master + neighbors (fewer matrix rebuilds)

Definition at line 60 of file fstr_contact_def.F90.

◆ sparsity_none

integer, parameter mcontactdef::sparsity_none = 0

sparsity expansion mode (per contact pair, set by !CONTACT EXPANSION=)

register current master only

Definition at line 59 of file fstr_contact_def.F90.