Commit 644c18ef authored by Knut's avatar Knut

Merge branch 'use_gotm' into nonnegsalt

parents 50a175dc 3b82c40c
......@@ -48,7 +48,7 @@
! !OUTPUT PARAMETERS:
REALTYPE,dimension(E2DFIELD),intent(out) :: ru,rv
REALTYPE,dimension(E2DFIELD),intent(out),target,optional :: zub,zvb
REALTYPE,dimension(:,:),pointer,intent(out),optional :: taubmax
REALTYPE,dimension(:,:),pointer,intent(in),optional :: taubmax
!
! !REVISION HISTORY:
! Original author(s): Karsten Bolding & Hans Burchard
......
......@@ -96,7 +96,7 @@
REALTYPE,dimension(E2DFIELD),intent(out) :: ru,rv
logical,intent(in),optional :: kwe !keyword-enforcer
REALTYPE,dimension(E2DFIELD),intent(out),target,optional :: zub,zvb
REALTYPE,dimension(:,:),pointer,intent(out),optional :: taubmax
REALTYPE,dimension(:,:),pointer,intent(in),optional :: taubmax
end subroutine bottom_friction
! Temporary interface (should be read from module):
......
......@@ -206,7 +206,7 @@
zm = max( z(i ,j) , -H(i+1,j)+min( min_depth , D(i ,j) ) )
zx = ( zp - zm + (airp(i+1,j)-airp(i,j))*gammai ) / DXU
tausu = _HALF_ * ( tausx(i,j) + tausx(i+1,j) )
#ifdef _SLR_V26_
#ifndef _SLR_NOCLIP_
if (UEuler(i,j) .gt. _ZERO_) then
Slr = max( Slru(i,j) , _ZERO_ )
else
......@@ -387,7 +387,7 @@
zm = max( z(i,j ) , -H(i,j+1)+min( min_depth , D(i,j ) ) )
zy = ( zp - zm + (airp(i,j+1)-airp(i,j))*gammai ) / DYV
tausv = _HALF_ * ( tausy(i,j) + tausy(i,j+1) )
#ifdef _SLR_V26_
#ifndef _SLR_NOCLIP_
if (VEuler(i,j) .gt. _ZERO_) then
Slr = max( Slrv(i,j) , _ZERO_ )
else
......
......@@ -314,6 +314,130 @@
end subroutine postinit_variables_2d
!EOC
!-----------------------------------------------------------------------
!BOP
!
! !ROUTINE: register_2d_variables() - register GETM variables.
!
! !INTERFACE:
subroutine register_2d_variables(fm)
!
! !DESCRIPTION:
!
! !USES:
use field_manager
IMPLICIT NONE
!
! !INPUT PARAMETERS:
type (type_field_manager) :: fm
!
! !REVISION HISTORY:
! Original author(s): Karsten Bolding & Jorn Bruggeman
!
! !LOCAL VARIABLES:
logical :: used
integer,parameter :: rk = kind(_ONE_)
!EOP
!-----------------------------------------------------------------------
!BOC
LEVEL2 'register_2d_variables()'
!D(E2DFIELD)
!DU,DV
!z(E2DFIELD)
!zo(E2DFIELD)
!U(E2DFIELD)
!V(E2DFIELD)
!UEx(E2DFIELD)
!VEx(E2DFIELD)
!fU(E2DFIELD)
!fV(E2DFIELD)
!ru(E2DFIELD)
!rv(E2DFIELD)
!Uint(E2DFIELD)
!Vint(E2DFIELD)
!Uinto(E2DFIELD)
!Vinto(E2DFIELD)
!res_du(E2DFIELD)
!res_u(E2DFIELD)
!res_dv(E2DFIELD)
!res_v(E2DFIELD)
!kbk
!SlUx(E2DFIELD)
!SlVx(E2DFIELD)
!Slru(E2DFIELD)
!Slrv(E2DFIELD)
!zub(E2DFIELD)
!zvb(E2DFIELD)
!zub0(E2DFIELD)
!zvb0(E2DFIELD)
!An(E2DFIELD)
!AnX(E2DFIELD)
!fwf(E2DFIELD)
!fwf_int(E2DFIELD)
!EWbdy(jmax),ENbdy(imax),EEbdy(jmax),ESbdy(imax)
! category - 2d
call fm%register('z', 'm', 'sea surface elevation', standard_name='sea surface elevation', fill_value=-9999.0_rk, data2d=z(_2D_W_), category="2d", part_of_state=.true.)
call fm%register('zo', 'm', 'sea surface elevation', standard_name='sea surface elevation', fill_value=-9999.0_rk, data2d=zo(_2D_W_), category="2d", output_level=output_level_debug)
call fm%register('D', 'm', 'water depth', standard_name='water depth', fill_value=-10009.0_rk, data2d=D(_2D_W_), category="2d", part_of_state=.true.)
call fm%register('U', 'm2/s', 'transport in local x-direction', standard_name='', data2d=U(_2D_W_), category='2d', output_level=output_level_debug, part_of_state=.true.)
call fm%register('V', 'm2/s', 'transport in local y-direction', standard_name='', data2d=V(_2D_W_), category='2d', output_level=output_level_debug, part_of_state=.true.)
call fm%register('velx', 'm/s', 'velocity in global x-direction', standard_name='', data2d=velx(_2D_W_), category='2d', fill_value=-9999.0_rk, output_level=output_level_debug)
call fm%register('vely', 'm/s', 'velocity in global y-direction', standard_name='', data2d=vely(_2D_W_), category='2d', fill_value=-9999.0_rk, output_level=output_level_debug)
call fm%register('taubmax', 'm2/s2', 'max. bottom stress', standard_name='', category='2d', fill_value=-9999.0_rk, output_level=output_level_debug, used=used)
if (.not. calc_taubmax) calc_taubmax = used
if (do_numerical_analyses_2d) then
call fm%register('numdis_2d', 'W/kg', 'numerical dissipation', standard_name='', category='2d', output_level=output_level_debug)
call fm%register('phydis_2d', 'W/kg', 'physical dissipation' , standard_name='', category='2d', output_level=output_level_debug)
end if
return
end subroutine register_2d_variables
!EOC
!-----------------------------------------------------------------------
!BOP
!
! !ROUTINE: finalize_register_2d_variables() - send optional variables.
!
! !INTERFACE:
subroutine finalize_register_2d_variables(fm)
!
! !DESCRIPTION:
!
! !USES:
use field_manager
IMPLICIT NONE
!
! !INPUT PARAMETERS:
type (type_field_manager) :: fm
!
! !REVISION HISTORY:
! Original author(s): Karsten Bolding & Jorn Bruggeman
!
! !LOCAL VARIABLES:
!EOP
!-----------------------------------------------------------------------
!BOC
LEVEL1 'finalize_register_2d_variables()'
if (associated(taubmax)) then
call fm%send_data('taubmax', taubmax(_2D_W_))
end if
if (do_numerical_analyses_2d) then
call fm%send_data('numdis_2d', numdis_2d(_2D_W_))
call fm%send_data('phydis_2d', phydis_2d(_2D_W_))
end if
return
end subroutine finalize_register_2d_variables
!EOC
!-----------------------------------------------------------------------
!BOP
!
......
......@@ -73,6 +73,9 @@
if (rc /= 0) stop 'init_3d: Error allocating memory (sf)'
#endif
allocate(zc(I3DFIELD),stat=rc) ! 3D field for cell center coordinates
if (rc /= 0) stop 'init_3d: Error allocating memory (zc)'
allocate(ho(I3DFIELD),stat=rc) ! 3D field for old box height (z-column)
if (rc /= 0) stop 'init_3d: Error allocating memory (ho)'
......
......@@ -22,6 +22,7 @@
#ifdef STRUCTURE_FRICTION
REALTYPE, dimension(:,:,:), allocatable :: sf
#endif
REALTYPE, dimension(:,:,:), allocatable, target :: zc
REALTYPE, dimension(:,:,:), allocatable, target :: hn,hvel,hun,hvn
REALTYPE, dimension(:,:,:), allocatable :: ho,huo,hvo
REALTYPE, dimension(:,:,:), allocatable, target :: zwn,zcn
......
......@@ -43,6 +43,7 @@
! !PUBLIC DATA MEMBERS:
public init_getm_fabm, postinit_getm_fabm, do_getm_fabm, model, output_none
public init_getm_fabm_fields
public register_fabm_variables, finalize_register_fabm_variables
integer, public :: fabm_init_method=0
character(len=PATH_MAX) :: fabm_init_file
integer :: fabm_init_format, fabm_field_no
......@@ -393,6 +394,129 @@ end interface
return
end subroutine init_getm_fabm_fields
!EOC
!-----------------------------------------------------------------------
!BOP
!
! !ROUTINE: register_fabm_variables() - register FABM variables.
!
! !INTERFACE:
subroutine register_fabm_variables(fm)
!
! !DESCRIPTION:
!
! !USES:
use field_manager
IMPLICIT NONE
!
! !INPUT PARAMETERS:
type (type_field_manager) :: fm
!
! !REVISION HISTORY:
! Original author(s): Karsten Bolding & Jorn Bruggeman
!
! !LOCAL VARIABLES:
integer :: i,output_level
logical :: in_output
!EOP
!-----------------------------------------------------------------------
!BOC
if (.not. fabm_calc) return
LEVEL2 'register_fabm_variables()'
do i=1,size(model%state_variables)
output_level = output_level_default
if (model%state_variables(i)%output==output_none) output_level = output_level_debug
call fm%register(model%state_variables(i)%name, model%state_variables(i)%units, &
model%state_variables(i)%long_name, minimum=model%state_variables(i)%minimum, maximum=model%state_variables(i)%maximum, &
fill_value=model%state_variables(i)%missing_value, dimensions=(/id_dim_z/), data3d=fabm_pel(_3D_W_,i), category='fabm'//model%state_variables(i)%target%owner%get_path(), output_level=output_level)
end do
do i=1,size(model%bottom_state_variables)
output_level = output_level_default
if (model%bottom_state_variables(i)%output==output_none) output_level = output_level_debug
call fm%register(model%bottom_state_variables(i)%name, model%bottom_state_variables(i)%units, &
model%bottom_state_variables(i)%long_name, minimum=model%bottom_state_variables(i)%minimum, &
maximum=model%bottom_state_variables(i)%maximum, fill_value=model%bottom_state_variables(i)%missing_value, &
data2d=fabm_ben(_2D_W_,i), category='fabm'//model%bottom_state_variables(i)%target%owner%get_path(), output_level=output_level)
end do
do i=1,size(model%diagnostic_variables)
output_level = output_level_default
if (model%diagnostic_variables(i)%output==output_none) output_level = output_level_debug
call fm%register(model%diagnostic_variables(i)%name, model%diagnostic_variables(i)%units, &
model%diagnostic_variables(i)%long_name, minimum=model%diagnostic_variables(i)%minimum, maximum=model%diagnostic_variables(i)%maximum, &
fill_value=model%diagnostic_variables(i)%missing_value, dimensions=(/id_dim_z/), data3d=fabm_diag(_3D_W_,i), category='fabm'//model%diagnostic_variables(i)%target%owner%get_path(), output_level=output_level, used=in_output)
if (in_output) model%diagnostic_variables(i)%save = .true.
end do
do i=1,size(model%horizontal_diagnostic_variables)
output_level = output_level_default
if (model%horizontal_diagnostic_variables(i)%output==output_none) output_level = output_level_debug
call fm%register(model%horizontal_diagnostic_variables(i)%name, model%horizontal_diagnostic_variables(i)%units, &
model%horizontal_diagnostic_variables(i)%long_name, minimum=model%horizontal_diagnostic_variables(i)%minimum, maximum=model%horizontal_diagnostic_variables(i)%maximum, &
fill_value=model%horizontal_diagnostic_variables(i)%missing_value, data2d=fabm_diag_hz(_2D_W_,i), category='fabm'//model%horizontal_diagnostic_variables(i)%target%owner%get_path(), output_level=output_level, used=in_output)
if (in_output) model%horizontal_diagnostic_variables(i)%save = .true.
end do
if (do_numerical_analyses_3d) then
do i=1,size(model%state_variables)
call fm%register('nummix_'//trim(model%state_variables(i)%name), &
'('//trim(model%state_variables(i)%units)//')**2/s', &
'numerical mixing of '//trim(model%state_variables(i)%long_name), &
dimensions=(/id_dim_z/), &
category='fabm'//model%state_variables(i)%target%owner%get_path(), &
output_level=output_level_debug)
call fm%register('phymix_'//trim(model%state_variables(i)%name), &
'('//trim(model%state_variables(i)%units)//')**2/s', &
'physical mixing of '//trim(model%state_variables(i)%long_name), &
dimensions=(/id_dim_z/), &
category='fabm'//model%state_variables(i)%target%owner%get_path(), &
output_level=output_level_debug)
end do
end if
return
end subroutine register_fabm_variables
!EOC
!-----------------------------------------------------------------------
!BOP
!
! !ROUTINE: finalize_register_fabm_variables() - send optional variables.
!
! !INTERFACE:
subroutine finalize_register_fabm_variables(fm)
!
! !DESCRIPTION:
!
! !USES:
use field_manager
IMPLICIT NONE
!
! !INPUT PARAMETERS:
type (type_field_manager) :: fm
!
! !REVISION HISTORY:
! Original author(s): Karsten Bolding & Jorn Bruggeman
!
! !LOCAL VARIABLES:
integer :: i
!EOP
!-----------------------------------------------------------------------
!BOC
LEVEL1 'finalize_register_fabm_variables()'
if (fabm_calc) then
if (do_numerical_analyses_3d) then
do i=1,size(model%state_variables)
call fm%send_data('nummix_'//trim(model%state_variables(i)%name), nummix_fabm_pel(_3D_W_,i))
call fm%send_data('phymix_'//trim(model%state_variables(i)%name), phymix_fabm_pel(_3D_W_,i))
end do
end if
end if
return
end subroutine finalize_register_fabm_variables
!EOC
!-----------------------------------------------------------------------
!BOP
!
......
......@@ -36,6 +36,7 @@
#ifdef STRUCTURE_FRICTION
REALTYPE :: sf(I3DFIELD)
#endif
REALTYPE :: zc(I3DFIELD)
REALTYPE :: ho(I3DFIELD)
REALTYPE,dimension(I3DFIELD),target :: hn,hvel,hun,hvn
REALTYPE,dimension(I3DFIELD),target :: zwn,zcn
......
......@@ -107,7 +107,7 @@
k=kumin(i,j)
rrdraghm1 = rru(i,j) / hun(i,j,k)
rdragDm1 = ru (i,j) / Dun(i,j)
#ifdef _SLR_V26_
#ifndef _SLR_NOCLIP_
Slru(i,j) = rrdraghm1*uuEuler (i,j,k) &
- rdragDm1 *UEulerAdv(i,j)
#else
......@@ -143,7 +143,7 @@
k=kvmin(i,j)
rrdraghm1 = rrv(i,j) / hvn(i,j,k)
rdragDm1 = rv (i,j) / Dvn(i,j)
#ifdef _SLR_V26_
#ifndef _SLR_NOCLIP_
Slrv(i,j) = rrdraghm1*vvEuler (i,j,k) &
- rdragDm1 *VEulerAdv(i,j)
#else
......
This diff is collapsed.
......@@ -70,6 +70,7 @@
!
!
! !USES:
use variables_3d, only: zc
use getm_timers, only: tic, toc,TIM_COORDS
IMPLICIT NONE
!
......@@ -178,6 +179,15 @@ stop
call mirror_bdy_3d(hvn,V_TAG)
#endif
! KK-TODO: remove because we already have zcn
! calculate the z-coordinate of the cell centers
! references to mean sea level
zc(:,:,0)=-H(:,:)
zc(:,:,1)=-H(:,:) + 0.5*hn(:,:,1)
do k=2,kmax
zc(:,:,k)=zc(:,:,k-1)+0.5*(hn(:,:,k-1)+hn(:,:,k))
end do
#ifdef SLICE_MODEL
do i=imin,imax
do k=kvmin(i,2),kmax
......
......@@ -79,11 +79,6 @@ if(GETM_USE_FABM)
endif(GETM_USE_FABM)
option(GETM_USE_FLEXIBLE_OUTPUT "Use new output manager" ON)
if(GETM_USE_FLEXIBLE_OUTPUT)
add_definitions(-D_FLEXIBLE_OUTPUT_)
endif()
option(GETM_USE_STRUCTURE_FRICTION "Include structure friction" OFF)
if(GETM_USE_STRUCTURE_FRICTION)
add_definitions(-DSTRUCTURE_FRICTION)
......@@ -362,6 +357,7 @@ add_library(output OBJECT
output/diagnostic_variables.F90
output/ncdf_out.F90
output/nesting.F90
output/output_processing.F90
output/output.F90
)
......@@ -393,9 +389,9 @@ add_library(waves OBJECT
add_dependencies(domain futils)
add_dependencies(pool domain futils)
add_dependencies(meteo futils domain)
add_dependencies(waves futils domain pool meteo)
add_dependencies(les futils domain)
add_dependencies(2d domain pool waves les)
add_dependencies(waves futils domain pool meteo util)
add_dependencies(les futils domain util)
add_dependencies(2d domain pool waves les util)
add_dependencies(3d meteo domain pool waves 2d les)
add_dependencies(output futils domain waves 2d 3d meteo)
add_dependencies(ncdf futils domain waves les output)
......@@ -411,13 +407,10 @@ find_path(GOTM_BASE src/gotm/gotm.F90 DOC "Path to GOTM source directory.")
if(GOTM_BASE)
set(GOTM_BUILD_LIBRARIES_ONLY ON)
set(GOTM_USE_FABM ${GETM_USE_FABM} CACHE BOOL "Include support for Framework for Aquatic Biogeochemical Models (fabm.net)" FORCE)
set(GOTM_USE_FLEXIBLE_OUTPUT ${GETM_USE_FLEXIBLE_OUTPUT} CACHE BOOL "Use new output manager" FORCE)
add_subdirectory(${GOTM_BASE}/src gotm)
set(GOTM_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/gotm/modules)
set(GOTM_LIBRARIES turbulence util)
if(GETM_USE_FLEXIBLE_OUTPUT)
set(GOTM_LIBRARIES ${GOTM_LIBRARIES} output_manager)
endif()
set(GOTM_LIBRARIES turbulence util output_manager)
#KB set(GOTM_LIBRARIES ${GOTM_LIBRARIES} output_manager)
if(GETM_USE_FABM)
set(GOTM_LIBRARIES ${GOTM_LIBRARIES} gotm_fabm)
set_property(TARGET 3d getm APPEND PROPERTY INCLUDE_DIRECTORIES $<TARGET_PROPERTY:gotm_fabm,INTERFACE_INCLUDE_DIRECTORIES>)
......@@ -434,6 +427,8 @@ else()
set_property(TARGET 3d getm APPEND PROPERTY INCLUDE_DIRECTORIES "${FABM_INCLUDE_DIRS}")
endif()
endif()
set_property(TARGET waves APPEND PROPERTY INCLUDE_DIRECTORIES "${GOTM_INCLUDE_DIRS}")
set_property(TARGET les APPEND PROPERTY INCLUDE_DIRECTORIES "${GOTM_INCLUDE_DIRS}")
set_property(TARGET 2d APPEND PROPERTY INCLUDE_DIRECTORIES "${GOTM_INCLUDE_DIRS}")
set_property(TARGET 3d getm APPEND PROPERTY INCLUDE_DIRECTORIES "${GOTM_INCLUDE_DIRS}")
set_property(TARGET output APPEND PROPERTY INCLUDE_DIRECTORIES "${GOTM_INCLUDE_DIRS}")
......
......@@ -127,10 +127,7 @@ ifdef GOTM_PREFIX
GOTMLIBDIR = $(GOTM_PREFIX)/lib
LINKDIRS += -L$(GOTMLIBDIR)
ifeq ($(GETM_FLEXIBLE_OUTPUT),true)
DEFINES += -D_FLEXIBLE_OUTPUT_
EXTRA_LIBS += -loutput_manager
endif
ifeq ($(FABM),true)
EXTRA_LIBS += -lgotm_fabm
endif
......
......@@ -6,13 +6,6 @@ find_path(GOTM_PREFIX
DOC "Installation prefix for General Ocean Turbulence Models - gotm.net"
)
# Find GOTM output_manager library
if(GETM_USE_FLEXIBLE_OUTPUT)
find_library(GOTM_OUTMAN NAMES output_manager
HINTS ${GOTM_PREFIX}/lib
DOC "GOTM output_manager library")
endif(GETM_USE_FLEXIBLE_OUTPUT)
# Find GOTM/FABM coupling library if USE_FABM
if(GETM_USE_FABM)
find_library(GOTM_FABM NAMES gotm_fabm
......@@ -25,12 +18,17 @@ find_library(GOTM_TURBULENCE NAMES turbulence
HINTS ${GOTM_PREFIX}/lib
DOC "GOTM turbulence library")
# Find GOTM output_manager library
find_library(GOTM_OUTMAN NAMES output_manager
HINTS ${GOTM_PREFIX}/lib
DOC "GOTM output_manager library")
# Find GOTM utility library
find_library(GOTM_UTIL NAMES util
HINTS ${GOTM_PREFIX}/lib
DOC "GOTM utility library")
set(GOTM_LIBRARIES ${GOTM_OUTMAN} ${GOTM_FABM} ${GOTM_TURBULENCE} ${GOTM_UTIL})
set(GOTM_LIBRARIES ${GOTM_FABM} ${GOTM_TURBULENCE} ${GOTM_OUTMAN} ${GOTM_UTIL})
# Store configurable path of GOTM include directory
find_path(GOTM_INCLUDE_DIRS
......@@ -39,7 +37,7 @@ find_path(GOTM_INCLUDE_DIRS
DOC "GOTM include directories"
)
mark_as_advanced(GOTM_LIBRARIES GOTM_INCLUDE_DIRS GOTM_TURBULENCE GOTM_UTIL GOTM_FABM GOTM_OUTMAN)
mark_as_advanced(GOTM_LIBRARIES GOTM_INCLUDE_DIRS GOTM_TURBULENCE GOTM_OUTMAN GOTM_UTIL GOTM_FABM)
# Process default arguments (QUIET, REQUIRED)
include(FindPackageHandleStandardArgs)
......
......@@ -1711,7 +1711,7 @@ if (abort) call ESMF_Finalize(endflag=ESMF_END_ABORT)
if (abort) call ESMF_Finalize(endflag=ESMF_END_ABORT)
call ESMF_GridCompSet(getmComp,grid=getmGrid3D,rc=rc)
call ESMF_GridCompSet(getmComp,gridList=(/getmGrid3D,getmGrid2D/),rc=rc)
abort = ESMF_LogFoundError(rc,line=__LINE__,file=FILENAME)
if (abort) call ESMF_Finalize(endflag=ESMF_END_ABORT)
......
......@@ -235,25 +235,25 @@
if (rigid_lid) LEVEL2 'using rigid lid'
if ( runtype .ge. 2 ) then
select case (vert_cord)
case(_SIGMA_COORDS_)
LEVEL2 'Using sigma coordinates'
case(_Z_COORDS_)
LEVEL2 'Using z-level coordinates'
case(_GENERAL_COORDS_)
LEVEL2 'Using general vertical coordinates'
case (_HYBRID_COORDS_) ! hybrid vertical coordinates
LEVEL2 'using hybrid vertical coordinates'
STDERR 'domain: hybrid_coordinates not coded yet'
stop
case (_ADAPTIVE_COORDS_) ! adaptive vertical coordinates
LEVEL2 'using adaptive vertical coordinates'
case default
call getm_error("init_domain()", &
"A non valid vertical coordinate system has been chosen");
end select
allocate(ga(0:kmax),stat=rc)
if (rc /= 0) stop 'init_domain: Error allocating memory (ga)'
select case (vert_cord)
case(_SIGMA_COORDS_)
LEVEL2 'Using sigma coordinates'
case(_Z_COORDS_)
LEVEL2 'Using z-level coordinates'
case(_GENERAL_COORDS_)
LEVEL2 'Using general vertical coordinates'
case (_HYBRID_COORDS_) ! hybrid vertical coordinates
LEVEL2 'using hybrid vertical coordinates'
STDERR 'domain: hybrid_coordinates not coded yet'
stop
case (_ADAPTIVE_COORDS_) ! adaptive vertical coordinates
LEVEL2 'using adaptive vertical coordinates'
case default
call getm_error("init_domain()", &
"A non valid vertical coordinate system has been chosen");
end select
allocate(ga(0:kmax),stat=rc)
if (rc /= 0) stop 'init_domain: Error allocating memory (ga)'
end if
! Calculation masks
......
......@@ -77,6 +77,8 @@
! This is for do_input and do_output
integer, parameter :: TIM_INPUT = 90 ! input
integer, parameter :: TIM_OUTPUT = 92 ! output
integer, parameter :: TIM_FLEX_OUTPUT = 95 ! output_manager
integer, parameter :: TIM_OUTPUT_PROC = 96 ! output_processing
! These catch stuff that are *also* measured somewhere else:
integer, parameter :: TIM_ADV = 100 ! 2d advection
integer, parameter :: TIM_ADVH = 101 ! 2d advection halo parts
......@@ -193,6 +195,8 @@
timernames(TIM_METEO) = 'do_meteo'
timernames(TIM_INPUT) = 'do_input'
timernames(TIM_OUTPUT) = 'do_output'
timernames(TIM_FLEX_OUTPUT) = 'output_manager_save'
timernames(TIM_OUTPUT_PROC) = 'do_output_processing'
#ifdef GETM_PARALLEL
timernames(TIM_MOMENTUMH) = ' momentum-halo'
......
......@@ -22,9 +22,7 @@
#endif
use register_all_variables, only: fm
use output, only: clean_output
#if defined(_FLEXIBLE_OUTPUT_)
use output_manager
#endif
use kurt_parallel, only: clean_parallel
IMPLICIT NONE
!
......@@ -63,9 +61,7 @@
if( .not. dryrun ) then
call clean_output(runtype,loop)
end if
#if defined(_FLEXIBLE_OUTPUT_)
call output_manager_clean()
#endif
call fm%finalize()
......
......@@ -107,8 +107,8 @@
#ifdef NO_SLR
LEVEL1 'NO_SLR'
#endif
#ifdef _SLR_V26_
LEVEL1 '_SLR_V26_'
#ifdef _SLR_NOCLIP_
LEVEL1 '_SLR_NOCLIP_'
#endif
#ifdef _DELAY_SLOW_IP_
LEVEL1 '_DELAY_SLOW_IP_'
......@@ -185,9 +185,6 @@
#ifdef _NCDF_SAVE_DOUBLE_
LEVEL1 '_NCDF_SAVE_DOUBLE_'
#endif
#ifdef _FLEXIBLE_OUTPUT_
LEVEL1 '_FLEXIBLE_OUTPUT_'
#endif
STDERR LINE
......
......@@ -10,12 +10,11 @@
! !DESCRIPTION:
!
! !USES:
use output_processing