SCALE-RM
scale_ocean_phy.F90
Go to the documentation of this file.
1 !-------------------------------------------------------------------------------
9 !-------------------------------------------------------------------------------
11  !-----------------------------------------------------------------------------
12  !
13  !++ used modules
14  !
15  use scale_precision
16  use scale_stdio
17  use scale_prof
18  !-----------------------------------------------------------------------------
19  implicit none
20  private
21  !-----------------------------------------------------------------------------
22  !
23  !++ Public procedure
24  !
25  public :: ocean_phy_setup
26 
27  abstract interface
28  subroutine ocn( &
29  OCEAN_TEMP_t, &
30  OCEAN_TEMP, &
31  OCEAN_SFLX_WH, &
32  OCEAN_SFLX_prec, &
33  OCEAN_SFLX_evap, &
34  dt )
35  use scale_precision
37  implicit none
38 
39  real(RP), intent(out) :: ocean_temp_t (ia,ja)
40  real(RP), intent(in) :: ocean_temp (ia,ja)
41  real(RP), intent(in) :: ocean_sflx_wh (ia,ja)
42  real(RP), intent(in) :: ocean_sflx_prec(ia,ja)
43  real(RP), intent(in) :: ocean_sflx_evap(ia,ja)
44  real(DP), intent(in) :: dt
45  end subroutine ocn
46  end interface
47  procedure(ocn), pointer :: ocean_phy => null()
48  public :: ocean_phy
49 
50  !-----------------------------------------------------------------------------
51  !
52  !++ Public parameters & variables
53  !
54  !-----------------------------------------------------------------------------
55  !
56  !++ Private procedure
57  !
58  !-----------------------------------------------------------------------------
59  !
60  !++ Private parameters & variables
61  !
62  !-----------------------------------------------------------------------------
63 contains
64  !-----------------------------------------------------------------------------
66  subroutine ocean_phy_setup( OCEAN_TYPE )
67  use scale_process, only: &
69  use scale_ocean_phy_slab, only: &
72  use scale_ocean_phy_file, only: &
75  implicit none
76 
77  character(len=*), intent(in) :: OCEAN_TYPE
78  !---------------------------------------------------------------------------
79 
80  select case ( ocean_type )
81  case ( 'CONST' )
82  call ocean_phy_slab_setup( ocean_type )
84  case ( 'SLAB' )
85  call ocean_phy_slab_setup( ocean_type )
87  case ( 'FILE' )
88  call ocean_phy_file_setup( ocean_type )
90  case default
91  write(*,*) 'xxx invalid Ocean type(', trim(ocean_type), '). CHECK!'
92  call prc_mpistop
93  end select
94 
95  return
96  end subroutine ocean_phy_setup
97 
98 end module scale_ocean_phy
subroutine, public prc_mpistop
Abort MPI.
module STDIO
Definition: scale_stdio.F90:12
subroutine, public ocean_phy_slab_setup(OCEAN_TYPE)
Setup.
module grid index
module OCEAN / Physics Slab model
integer, public ia
of x whole cells (local, with HALO)
module PROCESS
subroutine, public ocean_phy_setup(OCEAN_TYPE)
Setup.
module OCEAN / Physics
subroutine, public ocean_phy_file(OCEAN_TEMP_t, OCEAN_TEMP, OCEAN_SFLX_WH, OCEAN_SFLX_prec, OCEAN_SFLX_evap, dt)
Slab ocean model.
module OCEAN / Physics File
module profiler
Definition: scale_prof.F90:10
module PRECISION
subroutine, public ocean_phy_slab(OCEAN_TEMP_t, OCEAN_TEMP, OCEAN_SFLX_WH, OCEAN_SFLX_prec, OCEAN_SFLX_evap, dt)
Slab ocean model.
procedure(ocn), pointer, public ocean_phy
subroutine, public ocean_phy_file_setup(OCEAN_TYPE)
Setup.
integer, public ja
of y whole cells (local, with HALO)