module ContactDiffusionClass use, intrinsic :: iso_fortran_env use MathClass use FEMIfaceClass use FEMDomainClass use FiniteDeformationClass implicit none type :: ContactDiffusion_ ! Modern type(FEMDomainp_),allocatable :: FEMDomains(:) type(LinearSolver_) :: solver integer(int32),allocatable :: contactlist(:,:) real(real64),allocatable :: YoungModulus(:) real(real64),allocatable :: PoissonRatio(:) real(real64),allocatable :: Density(:) real(real64),allocatable :: YoungModulusList(:,:) real(real64),allocatable :: PoissonRatioList(:,:) real(real64),allocatable :: DensityList(:,:) logical :: initialized = .false. real(real64) :: gravity(1:3) =[0.0d0, 0.0d0, -9.810d0] real(real64) :: penalty = 100000.0d0 contains procedure :: Init => InitializeContactDiffusion procedure :: setup => runContactDiffusion procedure :: fix => fixContactDiffusion procedure :: solve => solveContactDiffusion end type contains ! ############################################################### subroutine InitializeContactDiffusion(obj) class(ContactDiffusion_),intent(inout) :: obj end subroutine ! ############################################################### ! ############################################################### subroutine runContactDiffusion(obj) class(ContactDiffusion_),intent(inout) :: obj end subroutine ! ############################################################### ! ############################################################### subroutine fixContactDiffusion(obj) class(ContactDiffusion_),intent(inout) :: obj end subroutine ! ############################################################### ! ############################################################### subroutine solveContactDiffusion(obj) class(ContactDiffusion_),intent(inout) :: obj end subroutine ! ############################################################### end module ContactDiffusionClass