Skip to content

Commit

Permalink
Merge pull request #387 from ywkawai/feature/support_ifx
Browse files Browse the repository at this point in the history
Feature/support ifx
  • Loading branch information
ywkawai authored Jan 5, 2025
2 parents ca22ab4 + 64eb360 commit 8c1fb63
Show file tree
Hide file tree
Showing 21 changed files with 351 additions and 122 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ program test_field3d
type(MeshField3D), target :: dudx
type(MeshField3D), target :: dudy
type(MeshField3D), target :: dudz
integer :: HST_ID(5)
integer, save :: HST_ID(5)

type(MeshFieldCommCubeDom3D) :: fields_comm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,10 @@ program test_field_cubedspheredom2d
character(len=H_short), parameter :: q_VARNAME = "q"
character(len=H_short), parameter :: q_DESC = "q"
character(len=H_short), parameter :: q_UNITS = "K"
integer :: HST_ID(3)
integer, save :: HST_ID(3)

type(MeshFieldCommCubedSphereDom2D) :: fields_comm
type(MeshFieldContainer) :: field_list(1)
type(MeshFieldContainer), save :: field_list(1)

integer :: n
type(LocalMesh2D), pointer :: lcmesh
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,10 @@ program test_field_cubedspheredom3d
character(len=H_short), parameter :: q_VARNAME = "q"
character(len=H_short), parameter :: q_DESC = "q"
character(len=H_short), parameter :: q_UNITS = "K"
integer :: HST_ID(1)
integer, save :: HST_ID(1)

type(MeshFieldCommCubedSphereDom3D) :: fields_comm
type(MeshFieldContainer) :: field_list(1)
type(MeshFieldContainer), save :: field_list(1)

integer :: n
type(LocalMesh3D), pointer :: lcmesh
Expand Down
4 changes: 2 additions & 2 deletions FElib/test/FE/field_linedom1d/test_field_linedom1d.f90
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,10 @@ program test_field1d
character(len=H_short), parameter :: q_VARNAME = "q"
character(len=H_short), parameter :: q_DESC = "q"
character(len=H_short), parameter :: q_UNITS = "K"
integer :: HST_ID(1)
integer, save :: HST_ID(1)

type(MeshFieldComm1D) :: fields_comm
type(MeshFieldContainer) :: field_list(1)
type(MeshFieldContainer), save :: field_list(1)

type(LocalMesh1D), pointer :: lcmesh
integer :: n
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,10 @@ program test_field2d
character(len=H_short), parameter :: q_VARNAME = "q"
character(len=H_short), parameter :: q_DESC = "q"
character(len=H_short), parameter :: q_UNITS = "K"
integer :: HST_ID(1)
integer, save :: HST_ID(1)

type(MeshFieldCommRectDom2D) :: fields_comm
type(MeshFieldContainer) :: field_list(1)
type(MeshFieldContainer), save :: field_list(1)

integer :: n
type(LocalMesh2D), pointer :: lcmesh
Expand Down
2 changes: 1 addition & 1 deletion FElib/test/FE/profile_calperf/test_profile_calperf.f90
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ program test_profile_calperf

type(MeshCubeDom3D), target :: mesh

type(MeshField3D), target :: q(5)
type(MeshField3D), save, target :: q(5)

type(MeshFieldCommCubeDom3D) :: fields_comm

Expand Down
4 changes: 2 additions & 2 deletions FElib/test/common/sparsemat/test_sparsemat.f90
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ program test_sparsemat
implicit none

integer, parameter :: N = 5
real(RP) :: A(N,N)
real(RP), save :: A(N,N)
type(SparseMat) :: Acsr
type(SparseMat) :: Aell
real(RP) :: x(N), b(N), b_ans(N)
real(RP), save :: x(N), b(N), b_ans(N)
integer :: i, j
!----------------------------------------

Expand Down
6 changes: 3 additions & 3 deletions FElib/test/common/timeint_rk/test_timeint_rk.f90
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ program test_timeint_rk
integer, parameter :: save_error_dstep2 = 8

integer, parameter :: error_array_size = 100
real(RP) :: answer(error_array_size)
real(RP) :: error1_mem(error_array_size)
real(RP) :: error2_mem(error_array_size)
real(RP), save :: answer(error_array_size)
real(RP), save :: error1_mem(error_array_size)
real(RP), save :: error2_mem(error_array_size)

!-------------------------------

Expand Down
3 changes: 0 additions & 3 deletions model/atm_nonhydro3d/util/regrid_tool/prg_regrid_tool.F90
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@ program regrid_tool
integer :: myrank ! my rank (execution)
logical :: ismaster ! master process? (execution)

logical :: do_output
integer :: vid
integer :: istep

Expand Down Expand Up @@ -219,8 +218,6 @@ subroutine initialize()
end if

!-
do_output = .true.

LOG_INFO("regrid_tool",*) 'Setup has been finished.'
if( IO_L ) call flush(IO_FID_LOG)

Expand Down
48 changes: 26 additions & 22 deletions sample/advdiff1d/test_advdiff1d.f90
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,12 @@ program test_advdiff1d
get_upwind_pos1d => fieldutil_get_upwind_pos1d, &
get_profile1d_tracer => fieldutil_get_profile1d_tracer


!-----------------------------------------------------------------------------
implicit none

integer :: NeGX = 8
integer, parameter :: NLocalMeshPerPrc = 1

! The type of initial q (sin, gaussian-hill, cosine-bell, top-hat)
character(len=H_SHORT) :: InitShapeName
real(RP) :: InitShapeParams(2)
real(RP), save :: InitShapeParams(2)
! The type of specified velocify field (constant)
real(RP) :: ADV_VEL
! The coefficient of diffusion
Expand All @@ -60,47 +56,39 @@ program test_advdiff1d
real(RP), parameter :: dom_xmax = +1.0_RP

type(LineElement) :: refElem
integer :: PolyOrder
logical, parameter :: DumpedMassMatFlag = .false.
type(sparsemat) :: Dx, Sx, Lift
integer, parameter :: PolyOrderErrorCheck = 6

type(MeshLineDom1D), target :: mesh
type(MeshField1D), target :: q, qexact
type(MeshField1D), target :: dqdx
type(MeshField1D), target :: u
type(MeshFieldComm1D) :: fields_comm
type(MeshFieldComm1D) :: auxvars_comm
type(MeshFieldContainer) :: field_list(2)
type(MeshFieldContainer) :: auxvars_list(1)
type(MeshFieldContainer), save :: field_list(2)
type(MeshFieldContainer), save :: auxvars_list(1)

integer :: HST_ID(2)
integer, save :: HST_ID(2)

integer :: n, k, p
type(LocalMesh1D), pointer :: lcmesh

character(len=H_SHORT) :: TINTEG_SCHEME_TYPE
type(timeint_rk), allocatable :: tinteg_lc(:)
integer :: nowstep
integer :: rkstage
integer :: tintbuf_ind
integer, parameter :: RKVAR_Q = 1
real(RP) :: tsec_

integer :: PolyOrderErrorCheck
real(RP), allocatable :: IntrpMat(:,:)
real(RP) :: intw_intrp(PolyOrderErrorCheck)
real(RP) :: x_intrp(PolyOrderErrorCheck)

real(RP), allocatable :: intw_intrp(:)
real(RP), allocatable :: x_intrp(:)
integer :: nstep_eval_error
!-------------------------------------------------------

call init()
call set_initcond()

field_list(1)%field1d => q
field_list(2)%field1d => u
auxvars_list(1)%field1d => dqdx

do nowstep=1, TIME_NSTEP
do rkstage=1, tinteg_lc(1)%nstage
!* Exchange halo data
Expand Down Expand Up @@ -369,19 +357,25 @@ subroutine set_initcond()
end subroutine set_initcond

subroutine init()

use scale_calendar, only: CALENDAR_setup
use scale_time_manager, only: TIME_manager_Init
use scale_file_history_meshfield, only: FILE_HISTORY_meshfield_setup
use scale_file_history, only: FILE_HISTORY_reg
implicit none

integer :: NeGX = 8
integer, parameter :: NLocalMeshPerPrc = 1
integer :: PolyOrder
logical, parameter :: DumpedMassMatFlag = .false.
character(len=H_SHORT) :: TINTEG_SCHEME_TYPE

namelist /PARAM_TEST/ &
NeGX, PolyOrder, &
TINTEG_SCHEME_TYPE, &
InitShapeName, InitShapeParams, &
ADV_VEL, &
DIFF_COEF, &
PolyOrderErrorCheck, &
nstep_eval_error

character(len=H_LONG) :: cnf_fname ! config file for launcher
Expand Down Expand Up @@ -412,7 +406,8 @@ subroutine init()
InitShapeParams = (/ 1.0_RP, 0.0_RP /)
ADV_VEL = 0.0_RP
DIFF_COEF = 0.0_RP
nstep_eval_error = 5
PolyOrderErrorCheck = 6
nstep_eval_error = 5
TINTEG_SCHEME_TYPE = 'ERK_SSP_3s3o'

rewind(IO_FID_CONF)
Expand Down Expand Up @@ -452,9 +447,13 @@ subroutine init()
call qexact%Init( "qexact", "1", mesh )
call dqdx%Init( "q", "1", mesh )
call u%Init( "u", "m/s", mesh )

call fields_comm%Init(2, 0, mesh)
call auxvars_comm%Init(1, 0, mesh)

field_list(1)%field1d => q
field_list(2)%field1d => u
auxvars_list(1)%field1d => dqdx

call FILE_HISTORY_meshfield_setup( mesh )
call FILE_HISTORY_reg( q%varname, "q", q%unit, HST_ID(1), dim_type='X')
call FILE_HISTORY_reg( qexact%varname, "qexact", q%unit, HST_ID(2), dim_type='X')
Expand All @@ -468,7 +467,12 @@ subroutine init()
end do

!------------------

! calculate the information about GL points, weights, and matrix for interpolation

allocate(IntrpMat(PolyOrderErrorCheck,PolyOrder+1))
allocate(intw_intrp(PolyOrderErrorCheck), x_intrp(PolyOrderErrorCheck))

IntrpMat(:,:) = refElem%GenIntGaussLegendreIntrpMat( PolyOrderErrorCheck, & ! (in)
intw_intrp, x_intrp ) ! (out)

Expand Down
6 changes: 3 additions & 3 deletions sample/advect1d/test_advect1d.f90
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ program test_advect1d
implicit none

character(len=H_SHORT) :: InitShapeName !< The type of initial profile (sin, gaussian-hill, cosine-bell, top-hat)
real(RP) :: InitShapeParams(2)
real(RP), save :: InitShapeParams(2)
integer :: InitGPMatPolyOrder
real(RP) :: ADV_VEL !< The constant speed of advection

Expand All @@ -61,8 +61,8 @@ program test_advect1d

type(MeshField1D), target :: q, u, qexact
type(MeshFieldComm1D) :: fields_comm
type(MeshFieldContainer) :: field_list(2)
integer :: HST_ID(2)
type(MeshFieldContainer), save :: field_list(2)
integer, save :: HST_ID(2)

integer :: nowstep
real(RP) :: tsec_
Expand Down
4 changes: 2 additions & 2 deletions sample/advect1d_fvm/test_advect1d.f90
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ program test_advect1d

! The type of initial q (sin, gaussian-hill, cosine-bell, top-hat)
character(len=H_SHORT) :: InitShapeName
real(RP) :: InitShapeParams(2)
real(RP), save :: InitShapeParams(2)
! The type of specified velocify field (constant)
real(RP) :: ADV_VEL

Expand All @@ -61,7 +61,7 @@ program test_advect1d
real(RP) :: tsec_
character(len=H_MID), parameter :: APPNAME = "advect1d with FVM"

integer :: HST_ID(2)
integer, save :: HST_ID(2)
real(RP), allocatable :: q(:,:,:)
real(RP), allocatable :: qexact(:,:,:)
real(RP), allocatable :: u(:,:,:)
Expand Down
26 changes: 15 additions & 11 deletions sample/advect2d/test_advect2d.f90
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,10 @@ program test_advect2d

! The type of initial q (sin, gaussian-hill, cosine-bell, top-hat)
character(len=H_SHORT) :: InitShapeName
real(RP) :: InitShapeParams(4)
real(RP), save :: InitShapeParams(4)
! The type of specified velocify field (constant, rigid-body-rot)
character(len=H_SHORT) :: VelTypeName
real(RP) :: VelTypeParams(4)
real(RP), save :: VelTypeParams(4)

real(RP), parameter :: dom_xmin = 0.0_RP
real(RP), parameter :: dom_xmax = +1.0_RP
Expand All @@ -60,33 +60,31 @@ program test_advect2d

type(QuadrilateralElement) :: refElem
integer :: PolyOrder
logical, parameter :: LumpedMassMatFlag = .false.
logical :: InitCond_GalerkinProjFlag
integer, parameter :: PolyOrderErrorCheck = 6
type(sparsemat) :: Dx, Dy, Lift

type(MeshRectDom2D), target :: mesh
type(MeshField2D), target :: q, qexact
type(MeshField2D), target :: u, v
type(MeshFieldCommRectDom2D) :: fields_comm
type(MeshFieldContainer) :: field_list(3)
integer :: HST_ID(2)
type(MeshFieldContainer), save :: field_list(3)
integer, save :: HST_ID(2)

integer :: n, ke, p
type(LocalMesh2D), pointer :: lcmesh

character(len=H_SHORT) :: TINTEG_SCHEME_TYPE
type(timeint_rk), allocatable :: tinteg_lc(:)
integer :: nowstep
integer :: rkstage
integer :: tintbuf_ind
integer, parameter :: RKVAR_Q = 1
real(RP) :: tsec_

integer :: PolyOrderErrorCheck
real(RP), allocatable :: IntrpMat(:,:)
real(RP) :: intw_intrp(PolyOrderErrorCheck**2)
real(RP) :: x_intrp(PolyOrderErrorCheck**2)
real(RP) :: y_intrp(PolyOrderErrorCheck**2)
real(RP), allocatable :: intw_intrp(:)
real(RP), allocatable :: x_intrp(:)
real(RP), allocatable :: y_intrp(:)

integer :: nstep_eval_error
!-------------------------------------------------------
Expand Down Expand Up @@ -386,13 +384,17 @@ subroutine init()
use scale_file_history, only: FILE_HISTORY_reg

implicit none

logical, parameter :: LumpedMassMatFlag = .false.
character(len=H_SHORT) :: TINTEG_SCHEME_TYPE

namelist /PARAM_TEST/ &
NeGX, NeGY, PolyOrder, &
TINTEG_SCHEME_TYPE, &
InitShapeName, InitShapeParams, &
InitCond_GalerkinProjFlag, &
VelTypeName, VelTypeParams, &
PolyOrderErrorCheck, &
nstep_eval_error

character(len=H_LONG) :: cnf_fname ! config file for launcher
Expand Down Expand Up @@ -425,7 +427,8 @@ subroutine init()
VelTypeName = 'const'
InitCond_GalerkinProjFlag = .false.
VelTypeParams(:) = (/ 1.0_RP, 1.0_RP, 0.0_RP, 0.0_RP /)
nstep_eval_error = 5
PolyOrderErrorCheck = 6
nstep_eval_error = 5

rewind(IO_FID_CONF)
read(IO_FID_CONF,nml=PARAM_TEST,iostat=ierr)
Expand Down Expand Up @@ -482,6 +485,7 @@ subroutine init()

!---
allocate( IntrpMat(PolyOrderErrorCheck**2,(PolyOrder+1)**2) )
allocate( intw_intrp(PolyOrderErrorCheck**2), x_intrp(PolyOrderErrorCheck**2), y_intrp(PolyOrderErrorCheck**2) )
IntrpMat(:,:) = refElem%GenIntGaussLegendreIntrpMat( PolyOrderErrorCheck, & ! (in)
intw_intrp, x_intrp, y_intrp ) ! (out)

Expand Down
Loading

0 comments on commit 8c1fb63

Please sign in to comment.