ShapeFunctionClass Module

##################################################### #####################################################

##################################################### #####################################################

##################################################### #####################################################

################################################## ##################################################

################################################## ##################################################

################################################## ##################################################

################################################## ##################################################

################################################## ##################################################

################################################## ##################################################

###################################### ######################################

###################################### ######################################

###################################### ######################################

###################################### ######################################

###################################### ######################################

###################################### ######################################

###################################### ######################################

###################################### ######################################

###################################### ######################################



Contents


Derived Types

type, public :: ShapeFunction_

Components

TypeVisibility AttributesNameInitial
real(kind=real64), public, allocatable:: Nmat(:)
real(kind=real64), public, allocatable:: dNdgzi(:,:)
real(kind=real64), public, allocatable:: dNdgzidgzi(:,:)
real(kind=real64), public, allocatable:: gzi(:)
real(kind=real64), public, allocatable:: GaussPoint(:,:)
real(kind=real64), public, allocatable:: GaussIntegWei(:)
real(kind=real64), public, allocatable:: Jmat(:,:)
real(kind=real64), public, allocatable:: JmatInv(:,:)
real(kind=real64), public, allocatable:: ElemCoord(:,:)
real(kind=real64), public, allocatable:: ElemCoord_n(:,:)
real(kind=real64), public, allocatable:: du(:,:)
real(kind=real64), public :: detJ
integer(kind=int32), public :: NumOfNode
integer(kind=int32), public :: NumOfOrder
integer(kind=int32), public :: NumOfDim =0
integer(kind=int32), public :: NumOfGp =0
integer(kind=int32), public :: GpID
integer(kind=int32), public :: ierr
integer(kind=int32), public :: currentGpID
integer(kind=int32), public :: ElementID
logical, public :: ReducedIntegration =.false.
logical, public :: Empty =.true.
character(len=70), public :: ElemType
character(len=60), public :: ErrorMsg

Type-Bound Procedures

procedure, public :: init => initShapeFunction
procedure, public :: update => updateShapeFunction
procedure, public :: SetType => SetShapeFuncType
procedure, public :: GetAll => GetAllShapeFunc
procedure, public :: get => GetAllShapeFunc
procedure, public :: getOnlyNvec => GetShapeFunction
procedure, public :: Deallocate => DeallocateShapeFunction
procedure, public :: getType => getShapeFuncType
procedure, public :: GetGaussPoint
procedure, public :: export => exportShapeFunction
procedure, public :: remove => removeShapeFunction
procedure, public :: save => saveShapeFunction
procedure, public :: open => openShapeFunction
procedure, public :: getNvec => getNvecShapeFunction

Functions

public function getNvecShapeFunction(obj, x, y, z) result(nvec)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(in) :: obj
real(kind=real64), intent(in), optional :: x
real(kind=real64), intent(in), optional :: y
real(kind=real64), intent(in), optional :: z

Return Value real(kind=real64), allocatable, (:)


Subroutines

public subroutine openShapeFunction(obj, path, name)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj
character(len=*), intent(in) :: path
character(len=*), intent(in), optional :: name

public subroutine saveShapeFunction(obj, path, name)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj
character(len=*), intent(in) :: path
character(len=*), intent(in), optional :: name

public subroutine removeShapeFunction(obj)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj

public subroutine initShapeFunction(obj, ElemType)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj
character(len=*), intent(in), optional :: ElemType

public subroutine updateShapeFunction(obj, ElemType, NodCoord, ElemNod, ElemID, GpID)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj
character(len=*), intent(in), optional :: ElemType
real(kind=real64), intent(in) :: NodCoord(:,:)
integer(kind=int32), intent(in) :: ElemNod(:,:)
integer(kind=int32), intent(in) :: ElemID
integer(kind=int32), intent(in) :: GpID

public subroutine SetShapeFuncType(obj, NumOfDim, NumOfNodePerElem, ReducedIntegration)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj
integer(kind=int32), intent(in), optional :: NumOfDim
integer(kind=int32), intent(in), optional :: NumOfNodePerElem
logical, intent(in), optional :: ReducedIntegration

public subroutine getShapeFuncType(obj, NumOfDim, NumOfNodePerElem)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj
integer(kind=int32), intent(in) :: NumOfDim
integer(kind=int32), intent(in) :: NumOfNodePerElem

public subroutine GetAllShapeFunc(obj, elem_id, nod_coord, nod_coord_n, elem_nod, OptionalNumOfNode, OptionalNumOfOrder, OptionalNumOfDim, OptionalNumOfGp, OptionalGpID, ReducedIntegration, NumOfDim, NumOfNodePerElem)

call GetShapeFuncDer2(obj)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj
integer(kind=int32), intent(in), optional :: elem_id
real(kind=real64), intent(in), optional :: nod_coord(:,:)
real(kind=real64), intent(in), optional :: nod_coord_n(:,:)
integer(kind=int32), intent(in), optional :: elem_nod(:,:)
integer(kind=int32), intent(in), optional :: OptionalNumOfNode
integer(kind=int32), intent(in), optional :: OptionalNumOfOrder
integer(kind=int32), intent(in), optional :: OptionalNumOfDim
integer(kind=int32), intent(in), optional :: OptionalNumOfGp
integer(kind=int32), intent(in), optional :: OptionalGpID
logical, intent(in), optional :: ReducedIntegration
integer(kind=int32), intent(in), optional :: NumOfDim
integer(kind=int32), intent(in), optional :: NumOfNodePerElem

public subroutine DeallocateShapeFunction(obj)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj

public subroutine GetGaussPoint(obj)

Triangular or Tetrahedral

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj

include "./GetGaussPoint.f90"

public subroutine SetGaussPoint(obj)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj

public subroutine GetShapeFunction(obj)

######################################################################### ####### ####### ####### + (1) ####### ####### ####### ####### ####### ######################################################################### ######################################################################### ####### ####### ####### +-----------------------+ ####### ####### (1) (2) ####### ####### ####### #########################################################################

Read more…

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj

public subroutine GetShapeFuncDer1(obj)

######################################################################### ####### ####### ####### + (1) ####### ####### ####### ####### ####### ######################################################################### ######################################################################### ####### ####### ####### +-----------------------+ ####### ####### (1) (2) ####### ####### ####### #########################################################################

Read more…

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj

public subroutine GetShapeFuncDer2(obj)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj

public subroutine GetElemCoord(obj, nod_coord, elem_nod, elem_id)

print *, obj%ElemCoord(j,1:m)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj
real(kind=real64), intent(in) :: nod_coord(:,:)
integer(kind=int32), intent(in) :: elem_nod(:,:)
integer(kind=int32), intent(in) :: elem_id

public subroutine GetElemCoord_n(obj, nod_coord_n, elem_nod, elem_id)

print *, obj%ElemCoord_n(j,1:m)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj
real(kind=real64), intent(in) :: nod_coord_n(:,:)
integer(kind=int32), intent(in) :: elem_nod(:,:)
integer(kind=int32), intent(in) :: elem_id

public subroutine getdu(obj)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj

public subroutine GetJmat(obj)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj

public subroutine exportShapeFunction(obj, restart, path)

Arguments

Type IntentOptional AttributesName
class(ShapeFunction_), intent(inout) :: obj
logical, intent(in), optional :: restart
character(len=*), intent(in) :: path