module DamClass use sim implicit none type ::Dam_ type(FEMDomain_) :: FEMDomain contains procedure, public :: create => createDam procedure, public :: show => showDam end type contains ! ########################################## subroutine createDam(obj, x_num, y_num, z_num, x_len, y_len, z_len, top, margin, inclineRate) class(Dam_), intent(inout) :: obj real(real64), optional, intent(in) :: x_len, y_len, z_len, top, margin, inclineRate real(real64)::hmin integer(int32), optional, intent(in) :: x_num, y_num, z_num call obj%FEMDomain%create(meshtype="Dam3D", x_num=x_num, y_num=y_num, x_len=x_len, y_len=z_len, thickness=y_len, & division=z_num, top=top, margin=margin, inclineRate=inclineRate) call obj%FEMDomain%rotate(x=3.14159265350d0/2.0d0) hmin = minval(obj%FEMDomain%Mesh%NodCoord(:, 3)) call obj%FEMDomain%move(z=-hmin) hmin = minval(obj%FEMDomain%Mesh%NodCoord(:, 2)) call obj%FEMDomain%move(y=-hmin) end subroutine ! ########################################## ! ########################################## subroutine showDam(obj) class(Dam_), intent(inout) :: obj call obj%FEMDomain%gmsh() end subroutine showDam ! ########################################## end module