Skip to content
Snippets Groups Projects
Commit bccaefb2 authored by Daria Gladskikh's avatar Daria Gladskikh :ocean:
Browse files

papa meteo added

parent da1b6778
No related branches found
No related tags found
No related merge requests found
...@@ -61,6 +61,7 @@ set(SOURCES ...@@ -61,6 +61,7 @@ set(SOURCES
obl_run_cbl.f90 obl_run_cbl.f90
obl_run_cyclone.f90 obl_run_cyclone.f90
obl_run_papa_long_fluxes.f90 obl_run_papa_long_fluxes.f90
obl_run_papa_long_meteo.f90
obl_config.f90 obl_config.f90
vermix_inmom.f90 vermix_inmom.f90
) )
......
This diff is collapsed.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
...@@ -17518,8 +17518,3 @@ ...@@ -17518,8 +17518,3 @@
17518 0.0054 17518 0.0054
17519 -0.0238 17519 -0.0238
17520 -0.043 17520 -0.043
This diff is collapsed.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
...@@ -25,6 +25,7 @@ module obl_config ...@@ -25,6 +25,7 @@ module obl_config
integer, parameter :: obl_config_cbl = 3 !< CBL setup integer, parameter :: obl_config_cbl = 3 !< CBL setup
integer, parameter :: obl_config_cyclone = 4 !< cyclone setup integer, parameter :: obl_config_cyclone = 4 !< cyclone setup
integer, parameter :: obl_config_papa_long_fluxes = 5 !< Papa-station (fluxes) setup integer, parameter :: obl_config_papa_long_fluxes = 5 !< Papa-station (fluxes) setup
integer, parameter :: obl_config_papa_long_meteo = 6 !< Papa-station (fluxes) setup
character(len = 16), parameter :: obl_config_kato_tag = 'kato' character(len = 16), parameter :: obl_config_kato_tag = 'kato'
character(len = 16), parameter :: obl_config_papa_fluxes_tag = 'papa-fluxes' character(len = 16), parameter :: obl_config_papa_fluxes_tag = 'papa-fluxes'
...@@ -32,6 +33,7 @@ module obl_config ...@@ -32,6 +33,7 @@ module obl_config
character(len = 16), parameter :: obl_config_cbl_tag = 'cbl' character(len = 16), parameter :: obl_config_cbl_tag = 'cbl'
character(len = 16), parameter :: obl_config_cyclone_tag = 'cyclone' character(len = 16), parameter :: obl_config_cyclone_tag = 'cyclone'
character(len = 16), parameter :: obl_config_papa_long_fluxes_tag = 'papa-long-fluxes' character(len = 16), parameter :: obl_config_papa_long_fluxes_tag = 'papa-long-fluxes'
character(len = 16), parameter :: obl_config_papa_long_meteo_tag = 'papa-long-meteo'
!> @brief model enum def. !> @brief model enum def.
integer, parameter :: obl_model_pph = 0 !< pacanowski-philander integer, parameter :: obl_model_pph = 0 !< pacanowski-philander
...@@ -66,6 +68,8 @@ contains ...@@ -66,6 +68,8 @@ contains
id = obl_config_cyclone id = obl_config_cyclone
else if (trim(tag) == trim(obl_config_papa_long_fluxes_tag)) then else if (trim(tag) == trim(obl_config_papa_long_fluxes_tag)) then
id = obl_config_papa_long_fluxes id = obl_config_papa_long_fluxes
else if (trim(tag) == trim(obl_config_papa_long_meteo_tag)) then
id = obl_config_papa_long_meteo
end if end if
...@@ -89,6 +93,8 @@ contains ...@@ -89,6 +93,8 @@ contains
tag = obl_config_cyclone_tag tag = obl_config_cyclone_tag
else if (id == obl_config_papa_long_fluxes) then else if (id == obl_config_papa_long_fluxes) then
tag = obl_config_papa_long_fluxes_tag tag = obl_config_papa_long_fluxes_tag
else if (id == obl_config_papa_long_meteo) then
tag = obl_config_papa_long_meteo_tag
end if end if
end function end function
...@@ -141,6 +147,7 @@ contains ...@@ -141,6 +147,7 @@ contains
use obl_run_cbl, only : set_grid_cbl => set_grid use obl_run_cbl, only : set_grid_cbl => set_grid
use obl_run_cyclone, only : set_grid_cyclone => set_grid use obl_run_cyclone, only : set_grid_cyclone => set_grid
use obl_run_papa_long_fluxes, only : set_grid_papa_long_fluxes => set_grid use obl_run_papa_long_fluxes, only : set_grid_papa_long_fluxes => set_grid
use obl_run_papa_long_meteo, only : set_grid_papa_long_meteo => set_grid
type (gridDataType), intent(inout) :: grid type (gridDataType), intent(inout) :: grid
integer, intent(in) :: config_id integer, intent(in) :: config_id
...@@ -174,6 +181,10 @@ contains ...@@ -174,6 +181,10 @@ contains
call set_grid_papa_long_fluxes(grid) call set_grid_papa_long_fluxes(grid)
return return
endif endif
if (config_id == obl_config_papa_long_meteo) then
call set_grid_papa_long_meteo(grid)
return
endif
#ifdef USE_CONFIG_PARSER #ifdef USE_CONFIG_PARSER
block block
...@@ -212,6 +223,7 @@ contains ...@@ -212,6 +223,7 @@ contains
use obl_run_cbl, only : set_time_cbl => set_time use obl_run_cbl, only : set_time_cbl => set_time
use obl_run_cyclone, only : set_time_cyclone => set_time use obl_run_cyclone, only : set_time_cyclone => set_time
use obl_run_papa_long_fluxes, only : set_time_papa_long_fluxes => set_time use obl_run_papa_long_fluxes, only : set_time_papa_long_fluxes => set_time
use obl_run_papa_long_meteo, only : set_time_papa_long_meteo => set_time
real, intent(out) :: time_begin, time_end, dt real, intent(out) :: time_begin, time_end, dt
integer, intent(in) :: config_id integer, intent(in) :: config_id
...@@ -245,6 +257,10 @@ contains ...@@ -245,6 +257,10 @@ contains
call set_time_papa_long_fluxes(time_begin, time_end, dt) call set_time_papa_long_fluxes(time_begin, time_end, dt)
return return
endif endif
if (config_id == obl_config_papa_long_meteo) then
call set_time_papa_long_meteo(time_begin, time_end, dt)
return
endif
#ifdef USE_CONFIG_PARSER #ifdef USE_CONFIG_PARSER
block block
...@@ -286,6 +302,7 @@ contains ...@@ -286,6 +302,7 @@ contains
use obl_run_cbl, only : set_phys_cbl => set_phys use obl_run_cbl, only : set_phys_cbl => set_phys
use obl_run_cyclone, only : set_phys_cyclone => set_phys use obl_run_cyclone, only : set_phys_cyclone => set_phys
use obl_run_papa_long_fluxes, only : set_phys_papa_long_fluxes => set_phys use obl_run_papa_long_fluxes, only : set_phys_papa_long_fluxes => set_phys
use obl_run_papa_long_meteo, only : set_phys_papa_long_meteo => set_phys
integer, intent(in) :: config_id integer, intent(in) :: config_id
integer, intent(out) :: ierr integer, intent(out) :: ierr
...@@ -317,6 +334,10 @@ contains ...@@ -317,6 +334,10 @@ contains
call set_phys_papa_long_fluxes call set_phys_papa_long_fluxes
return return
endif endif
if (config_id == obl_config_papa_long_meteo) then
call set_phys_papa_long_meteo
return
endif
#ifdef USE_CONFIG_PARSER #ifdef USE_CONFIG_PARSER
block block
...@@ -371,6 +392,7 @@ contains ...@@ -371,6 +392,7 @@ contains
use obl_run_cbl, only : set_forcing_cbl => set_forcing use obl_run_cbl, only : set_forcing_cbl => set_forcing
use obl_run_cyclone, only : set_forcing_cyclone => set_forcing use obl_run_cyclone, only : set_forcing_cyclone => set_forcing
use obl_run_papa_long_fluxes, only : set_forcing_papa_long_fluxes => set_forcing use obl_run_papa_long_fluxes, only : set_forcing_papa_long_fluxes => set_forcing
use obl_run_papa_long_meteo, only : set_forcing_papa_long_meteo => set_forcing
integer, intent(in) :: config_id integer, intent(in) :: config_id
integer, intent(out) :: ierr integer, intent(out) :: ierr
...@@ -402,6 +424,11 @@ contains ...@@ -402,6 +424,11 @@ contains
call set_forcing_papa_long_fluxes call set_forcing_papa_long_fluxes
return return
endif endif
if (config_id == obl_config_papa_long_meteo) then
call set_forcing_papa_long_meteo
return
endif
!< assuming that forcing def. is optional !< assuming that forcing def. is optional
block block
...@@ -488,6 +515,7 @@ contains ...@@ -488,6 +515,7 @@ contains
use obl_run_cbl, only : set_initial_conditions_cbl => set_initial_conditions use obl_run_cbl, only : set_initial_conditions_cbl => set_initial_conditions
use obl_run_cyclone, only : set_initial_conditions_cyclone => set_initial_conditions use obl_run_cyclone, only : set_initial_conditions_cyclone => set_initial_conditions
use obl_run_papa_long_fluxes, only : set_initial_conditions_papa_long_fluxes => set_initial_conditions use obl_run_papa_long_fluxes, only : set_initial_conditions_papa_long_fluxes => set_initial_conditions
use obl_run_papa_long_meteo, only : set_initial_conditions_papa_long_meteo => set_initial_conditions
type (gridDataType), intent(in) :: grid type (gridDataType), intent(in) :: grid
...@@ -521,6 +549,10 @@ contains ...@@ -521,6 +549,10 @@ contains
call set_initial_conditions_papa_long_fluxes(grid) call set_initial_conditions_papa_long_fluxes(grid)
return return
endif endif
if (config_id == obl_config_papa_long_meteo) then
call set_initial_conditions_papa_long_meteo(grid)
return
endif
block block
!< *: will fail without configuration file !< *: will fail without configuration file
......
...@@ -62,6 +62,7 @@ program obl_main ...@@ -62,6 +62,7 @@ program obl_main
! = obl_config_papa_meteo: Papa-station (meteo) ! = obl_config_papa_meteo: Papa-station (meteo)
! = obl_config_cbl: convective boundary layer (Willis exp.) ! = obl_config_cbl: convective boundary layer (Willis exp.)
! = obl_config_cyclone: cyclone setup ! = obl_config_cyclone: cyclone setup
! = obl_config_papa_long_fluxes: Papa-station 2 years (fluxes)
integer :: obl_model_id ! --- OBL model def. integer :: obl_model_id ! --- OBL model def.
! = obl_model_pph: pacanowski-philander ! = obl_model_pph: pacanowski-philander
...@@ -83,6 +84,7 @@ program obl_main ...@@ -83,6 +84,7 @@ program obl_main
type(oblOutputStx) :: scm_output type(oblOutputStx) :: scm_output
!< time !< time
real*8 :: time_begin_real8, time_end_real8, time_current_real8
real :: time_begin, time_end, time_current real :: time_begin, time_end, time_current
real :: dt real :: dt
integer :: time_index integer :: time_index
...@@ -130,6 +132,8 @@ program obl_main ...@@ -130,6 +132,8 @@ program obl_main
!< = obl_config_papa_meteo !< = obl_config_papa_meteo
!< = obl_config_cbl !< = obl_config_cbl
!< = obl_config_cyclone !< = obl_config_cyclone
!< = obl_config_papa_long_fluxes
!< = obl_config_papa_long_meteo
obl_config_id = obl_config_kato obl_config_id = obl_config_kato
!< default closure = 4, k-epsilon !< default closure = 4, k-epsilon
...@@ -310,6 +314,11 @@ program obl_main ...@@ -310,6 +314,11 @@ program obl_main
endif endif
! ---------------------------------------------------------------------------- ! ----------------------------------------------------------------------------
time_begin_real8 = time_begin
time_current_real8 = time_begin
time_end_real8 = time_end
time_current = time_begin time_current = time_begin
time_index = 1 time_index = 1
do while (time_current < time_end ) do while (time_current < time_end )
...@@ -350,6 +359,8 @@ program obl_main ...@@ -350,6 +359,8 @@ program obl_main
!> advance time !> advance time
! ---------------------------------------------------------------------------- ! ----------------------------------------------------------------------------
time_index = time_index + 1 time_index = time_index + 1
time_current_real8 = time_current_real8 + dt
time_current = time_current + dt time_current = time_current + dt
! ---------------------------------------------------------------------------- ! ----------------------------------------------------------------------------
......
...@@ -58,7 +58,7 @@ module obl_run_papa_long_fluxes ...@@ -58,7 +58,7 @@ module obl_run_papa_long_fluxes
! ---------------------------------------------------------------------------- ! ----------------------------------------------------------------------------
!< in: [zpos, height, cz] !< in: [zpos, height, cz]
call set_uniform_grid(grid, -128.0, 128.0, 32) call set_uniform_grid(grid, -400.0, 400.0, 32)
end subroutine set_grid end subroutine set_grid
...@@ -70,8 +70,8 @@ module obl_run_papa_long_fluxes ...@@ -70,8 +70,8 @@ module obl_run_papa_long_fluxes
! ---------------------------------------------------------------------------- ! ----------------------------------------------------------------------------
time_begin = 0.0 * 3600.0 time_begin = 0.0 * 3600.0
time_end = 4600.0 * 3600.0 !17520.0 * 3600.0 time_end = 17520.0 * 3600.0 !17520.0 * 3600.0
dt = 1.0 dt = 10.0
end subroutine set_time end subroutine set_time
......
module obl_run_papa_long_meteo
!< @brief obl scm Papa-station 'meteo' setup
! --------------------------------------------------------------------------------
! TO DO:
! -- ***
! modules used
! --------------------------------------------------------------------------------
! directives list
! --------------------------------------------------------------------------------
implicit none
private
! public interface
! --------------------------------------------------------------------------------
public :: set_phys
public :: set_grid
public :: set_time
public :: set_forcing
public :: set_initial_conditions
! --------------------------------------------------------------------------------
! --------------------------------------------------------------------------------
character(len = 256), parameter :: path = 'papa-2014-long/'
! --------------------------------------------------------------------------------
contains
! --------------------------------------------------------------------------------
subroutine set_phys
!> @brief phys parameters setup
! ----------------------------------------------------------------------------
use obl_scm
! ----------------------------------------------------------------------------
!< coriolis frequency
f = 1.116 * 1e-4
!< SW extinction parameters
a_band_ratio = 0.67
a_extinction_coeff = 1.0
b_extinction_coeff = 1.0 / 17.0
sw_albedo = 0.3
end subroutine set_phys
! --------------------------------------------------------------------------------
subroutine set_grid(grid)
!> @brief grid parameters setup
! ----------------------------------------------------------------------------
use obl_grid
type (gridDataType), intent(inout) :: grid
! ----------------------------------------------------------------------------
!< in: [zpos, height, cz]
call set_uniform_grid(grid, 0.0, 128.0, 32)
end subroutine set_grid
! --------------------------------------------------------------------------------
subroutine set_time(time_begin, time_end, dt)
!> @brief time parameters setup
! ----------------------------------------------------------------------------
real, intent(out) :: time_begin, time_end, dt
! ----------------------------------------------------------------------------
time_begin = 0.0 * 3600.0
time_end = 17520.0 * 3600.0 !17520.0 * 3600.0
dt = 10.0
end subroutine set_time
! --------------------------------------------------------------------------------
subroutine set_forcing
!> @brief forcing setup
! ----------------------------------------------------------------------------
use obl_fluxes
use obl_tforcing
! ----------------------------------------------------------------------------
!< setting atmospheric forcing
! ----------------------------------------------------------------------------
!< using 'meteo' mode
is_meteo_setup = 1
call set_external_tforcing(Ua, 'meteo-forcing/'//trim(path)//'u-wind.dat')
call set_external_tforcing(Va, 'meteo-forcing/'//trim(path)//'v-wind.dat')
call set_const_tforcing(salin_flux_surf, 0.0)
call set_external_tforcing(Ta, 'meteo-forcing/'//trim(path)//'Tair.dat')
call set_external_tforcing(Pa, 'meteo-forcing/'//trim(path)//'Pair.dat')
call set_external_tforcing(RHa, 'meteo-forcing/'//trim(path)//'RHair.dat')
call set_external_tforcing(sw_flux_surf, 'meteo-forcing/'//trim(path)//'SW-down.dat')
call set_external_tforcing(lw_in_surf, 'meteo-forcing/'//trim(path)//'LW-down.dat')
!< normalize time in external forcing: hrs -> sec
call normalize_time_tforcing(Ua, 3600.0)
call normalize_time_tforcing(Va, 3600.0)
call normalize_time_tforcing(Ta, 3600.0)
call normalize_time_tforcing(Pa, 3600.0)
call normalize_time_tforcing(RHa, 3600.0)
call normalize_time_tforcing(sw_flux_surf, 3600.0)
call normalize_time_tforcing(lw_in_surf, 3600.0)
! ----------------------------------------------------------------------------
!< setting bottom forcing
! ----------------------------------------------------------------------------
call set_const_tforcing(hflux_bot, 0.0)
call set_const_tforcing(salin_flux_bot, 0.0)
call set_const_tforcing(tau_x_bot, 0.0)
call set_const_tforcing(tau_y_bot, 0.0)
! ----------------------------------------------------------------------------
end subroutine set_forcing
! --------------------------------------------------------------------------------
subroutine set_initial_conditions(grid)
!> @brief initial_conditions setup
! ----------------------------------------------------------------------------
use obl_state
use obl_init
use obl_grid
type (gridDataType), intent(in) :: grid
! ----------------------------------------------------------------------------
call set_external_profile(Theta, 'meteo-init/'//trim(path)//'Theta.dat', grid)
call set_external_profile(Salin, 'meteo-init/'//trim(path)//'Salin.dat', grid)
call set_const_profile(U, 0.0, grid)
call set_const_profile(V, 0.0, grid)
end subroutine set_initial_conditions
end module
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment