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_const, only: &
72  use scale_ocean_phy_slab, only: &
75  use scale_ocean_phy_file, only: &
78  implicit none
79 
80  character(len=*), intent(in) :: ocean_type
81  !---------------------------------------------------------------------------
82 
83  select case( ocean_type )
84  case( 'CONST' )
85  call ocean_phy_const_setup( ocean_type )
87  case( 'SLAB' )
88  call ocean_phy_slab_setup( ocean_type )
90  case( 'FILE' )
91  call ocean_phy_file_setup( ocean_type )
93  case default
94  write(*,*) 'xxx invalid Ocean type(', trim(ocean_type), '). CHECK!'
95  call prc_mpistop
96  end select
97 
98  return
99  end subroutine ocean_phy_setup
100 
101 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 OCEAN / Physics Constant model
module grid index
module OCEAN / Physics Slab model
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.
subroutine, public ocean_phy_const(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.
subroutine, public ocean_phy_const_setup(OCEAN_TYPE)
Setup.