FrontISTR  5.7.0
Large-scale structural analysis program with finit element method
msurfelement Module Reference

This module manages surface elements in 3D It provides basic definition of surface elements (trianglar and quadrilateral) and functions for fetching its neighborhood information. More...

Data Types

type  tsurfelement
 Structure to define surface group. More...
 

Functions/Subroutines

subroutine initialize_surf (eid, etype, nsurf, surf)
 Initializer. More...
 
subroutine finalize_surf (surf)
 Memory management subroutine. More...
 
subroutine write_surf (file, surf)
 Write out elemental surface. More...
 
subroutine find_surface_neighbor (surf, bktDB)
 Find neighboring surface elements. More...
 
integer(kind=kint) function next_position (surf, cpos)
 Tracing next contact position. More...
 
subroutine update_surface_reflen (surf, coord)
 Compute reference length of surface elements. More...
 
subroutine update_surface_box_info (surf, currpos)
 Update info of cubic box including surface elements. More...
 
logical function is_in_surface_box (surf, x0, exp_rate)
 Check if given point is within cubic box including surface element. More...
 
subroutine update_surface_bucket_info (surf, bktDB)
 Update bucket info for searching surface elements. More...
 

Variables

integer(kind=kint), parameter l_max_surface_node =20
 
integer(kind=kint), parameter l_max_elem_node = 100
 
integer(kind=kint), parameter l_max_elem_surf = 6
 
integer(kind=kint), parameter n_neighbor_max_init = 8
 

Detailed Description

This module manages surface elements in 3D It provides basic definition of surface elements (trianglar and quadrilateral) and functions for fetching its neighborhood information.

Function/Subroutine Documentation

◆ finalize_surf()

subroutine msurfelement::finalize_surf ( type(tsurfelement), intent(inout)  surf)

Memory management subroutine.

Parameters
[in,out]surfsurface element

Definition at line 69 of file surf_ele.f90.

Here is the caller graph for this function:

◆ find_surface_neighbor()

subroutine msurfelement::find_surface_neighbor ( type(tsurfelement), dimension(:), intent(inout)  surf,
type(bucketdb), intent(in)  bktDB 
)

Find neighboring surface elements.

Parameters
[in,out]surfsurface elements
[in]bktdbbucket info

Definition at line 88 of file surf_ele.f90.

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

◆ initialize_surf()

subroutine msurfelement::initialize_surf ( integer(kind=kint), intent(in)  eid,
integer(kind=kint), intent(in)  etype,
integer(kind=kint), intent(in)  nsurf,
type(tsurfelement), intent(inout)  surf 
)

Initializer.

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

Definition at line 38 of file surf_ele.f90.

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

◆ is_in_surface_box()

logical function msurfelement::is_in_surface_box ( type(tsurfelement), intent(inout)  surf,
real(kind=kreal), dimension(3), intent(in)  x0,
real(kind=kreal), intent(in)  exp_rate 
)

Check if given point is within cubic box including surface element.

Parameters
[in,out]surfcurrent surface element
[in]x0coordinate of slave node
[in]exp_rateexpansion rate (>1.0)

Definition at line 265 of file surf_ele.f90.

Here is the caller graph for this function:

◆ next_position()

integer(kind=kint) function msurfelement::next_position ( type(tsurfelement), intent(in)  surf,
real(kind=kreal), dimension(2), intent(in)  cpos 
)

Tracing next contact position.

Parameters
[in]surfcurrent surface element
[in]cposcurrent position(local coordinate)

Definition at line 157 of file surf_ele.f90.

◆ update_surface_box_info()

subroutine msurfelement::update_surface_box_info ( type(tsurfelement), dimension(:), intent(inout)  surf,
real(kind=kreal), dimension(:), intent(in)  currpos 
)

Update info of cubic box including surface elements.

Parameters
[in,out]surfsurface elements
[in]currposcurrent coordinate of all nodes

Definition at line 240 of file surf_ele.f90.

Here is the caller graph for this function:

◆ update_surface_bucket_info()

subroutine msurfelement::update_surface_bucket_info ( type(tsurfelement), dimension(:), intent(inout)  surf,
type(bucketdb), intent(inout)  bktDB 
)

Update bucket info for searching surface elements.

Parameters
[in,out]surfsurface elements
[in,out]bktdbbucket info

Definition at line 280 of file surf_ele.f90.

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

◆ update_surface_reflen()

subroutine msurfelement::update_surface_reflen ( type(tsurfelement), dimension(:), intent(inout)  surf,
real(kind=kreal), dimension(:), intent(in)  coord 
)

Compute reference length of surface elements.

Parameters
[in,out]surfsurface elements
[in]coordcurrent coordinate of all nodes

Definition at line 220 of file surf_ele.f90.

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

◆ write_surf()

subroutine msurfelement::write_surf ( integer(kind=kint), intent(in)  file,
type(tsurfelement), intent(in)  surf 
)

Write out elemental surface.

Parameters
[in]filefile number
[in]surfelemental surface

Definition at line 76 of file surf_ele.f90.

Here is the caller graph for this function:

Variable Documentation

◆ l_max_elem_node

integer(kind=kint), parameter msurfelement::l_max_elem_node = 100

Definition at line 13 of file surf_ele.f90.

◆ l_max_elem_surf

integer(kind=kint), parameter msurfelement::l_max_elem_surf = 6

Definition at line 14 of file surf_ele.f90.

◆ l_max_surface_node

integer(kind=kint), parameter msurfelement::l_max_surface_node =20

Definition at line 12 of file surf_ele.f90.

◆ n_neighbor_max_init

integer(kind=kint), parameter msurfelement::n_neighbor_max_init = 8

Definition at line 16 of file surf_ele.f90.