modsurfdata.f90 Source File


Files dependent on this one

sourcefile~~modsurfdata.f90~~AfferentGraph sourcefile~modsurfdata.f90 modsurfdata.f90 sourcefile~modboundary.f90 modboundary.f90 sourcefile~modboundary.f90->sourcefile~modsurfdata.f90 sourcefile~modinlet.f90 modinlet.f90 sourcefile~modboundary.f90->sourcefile~modinlet.f90 sourcefile~moddriver.f90 moddriver.f90 sourcefile~modboundary.f90->sourcefile~moddriver.f90 sourcefile~modfielddump.f90 modfielddump.f90 sourcefile~modfielddump.f90->sourcefile~modsurfdata.f90 sourcefile~modforces.f90 modforces.f90 sourcefile~modforces.f90->sourcefile~modsurfdata.f90 sourcefile~modibm.f90 modibm.f90 sourcefile~modibm.f90->sourcefile~modsurfdata.f90 sourcefile~modinlet.f90->sourcefile~modsurfdata.f90 sourcefile~modsave.f90 modsave.f90 sourcefile~modinlet.f90->sourcefile~modsave.f90 sourcefile~modsave.f90->sourcefile~modsurfdata.f90 sourcefile~modstartup.f90 modstartup.f90 sourcefile~modstartup.f90->sourcefile~modsurfdata.f90 sourcefile~modstartup.f90->sourcefile~modboundary.f90 sourcefile~modstartup.f90->sourcefile~modforces.f90 sourcefile~modstartup.f90->sourcefile~modinlet.f90 sourcefile~modsubgrid.f90 modsubgrid.f90 sourcefile~modstartup.f90->sourcefile~modsubgrid.f90 sourcefile~modthermodynamics.f90 modthermodynamics.f90 sourcefile~modstartup.f90->sourcefile~modthermodynamics.f90 sourcefile~modstartup.f90->sourcefile~moddriver.f90 sourcefile~modpois.f90 modpois.f90 sourcefile~modstartup.f90->sourcefile~modpois.f90 sourcefile~modstatistics.f90 modstatistics.f90 sourcefile~modstatistics.f90->sourcefile~modsurfdata.f90 sourcefile~modstatsdump.f90 modstatsdump.f90 sourcefile~modstatsdump.f90->sourcefile~modsurfdata.f90 sourcefile~modstatsdump.f90->sourcefile~modstatistics.f90 sourcefile~modstatsdump.f90->sourcefile~modsubgrid.f90 sourcefile~modsubgrid.f90->sourcefile~modsurfdata.f90 sourcefile~modsubgrid.f90->sourcefile~modboundary.f90 sourcefile~modthermodynamics.f90->sourcefile~modsurfdata.f90 sourcefile~advec_2nd.f90 advec_2nd.f90 sourcefile~advec_2nd.f90->sourcefile~modibm.f90 sourcefile~moddriver.f90->sourcefile~modsave.f90 sourcefile~modpois.f90->sourcefile~modboundary.f90 sourcefile~program.f90 program.f90 sourcefile~program.f90->sourcefile~modboundary.f90 sourcefile~program.f90->sourcefile~modfielddump.f90 sourcefile~program.f90->sourcefile~modforces.f90 sourcefile~program.f90->sourcefile~modibm.f90 sourcefile~program.f90->sourcefile~modsave.f90 sourcefile~program.f90->sourcefile~modstartup.f90 sourcefile~program.f90->sourcefile~modstatsdump.f90 sourcefile~program.f90->sourcefile~modsubgrid.f90 sourcefile~program.f90->sourcefile~modthermodynamics.f90 sourcefile~program.f90->sourcefile~modpois.f90

Contents

Source Code


Source Code

!> \file modsurfdata.f90
!! Variable definitions and auxilary routines for the surface model

!>
!! Variable definitions and auxilary routines for surface model
!>
!! This routine should have no dependency on any other routine, save perhaps modglobal or modfields.
!!  \author Thijs Heus, MPI-M
!!  \todo Documentation
!!  \par Revision list
!  This file is part of DALES.
!
! DALES is free software; you can redistribute it and/or modify
! it under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 3 of the License, or
! (at your option) any later version.
!
! DALES is distributed in the hope that it will be useful,
! but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
! GNU General Public License for more details.
!
! You should have received a copy of the GNU General Public License
! along with this program.  If not, see <http://www.gnu.org/licenses/>.
!
!  Copyright 1993-2009 Delft University of Technology, Wageningen University, Utrecht University, KNMI
!


!!whole module should be removed and variables moved


module modsurfdata

! implicit none

SAVE
  ! Surface properties
  real, allocatable :: tskin      (:,:) !<  Skin temperature [K]
  real, allocatable :: qskin      (:,:) !<  Skin specific humidity [kg/kg]
  real              :: ps       = -1    !<  Surface pressure [Pa]

  ! Surface energy balance
  logical           :: lmostlocal  = .false.  !<  Switch to apply MOST locally to get local Obukhov length
  real, allocatable :: obl   (:,:)      !<  Obukhov length [m]
  real              :: oblav =   0.001           !<  Spatially averaged obukhov length [m]
  real, allocatable :: Cm    (:,:)      !<  Drag coefficient for momentum [-]
  real, allocatable :: Cs    (:,:)      !<  Drag coefficient for scalars [-]
  real, allocatable :: ustar (:,:)      !<  Friction velocity [m/s]
  real, allocatable :: thlflux (:,:)    !<  Kinematic temperature flux [K m/s]
  real, allocatable :: qtflux  (:,:)    !<  Kinematic specific humidity flux [kg/kg m/s]
  real, allocatable :: svflux  (:,:,:)  !<  Kinematic scalar flux [- m/s]

  ! Surface gradients of prognostic variables
  real, allocatable :: dudz  (:,:)      !<  U-wind gradient in surface layer [1/s]
  real, allocatable :: dvdz  (:,:)      !<  V-wind gradient in surface layer [1/s]
  real, allocatable :: dqtdz (:,:)      !<  Specific humidity gradient in surface layer [kg/kg/m]
  real, allocatable :: dthldz(:,:)      !<  Liquid water potential temperature gradient in surface layer [K/m]

  ! Surface properties in case of prescribed conditions (previous isurf 2, 3 and 4)
  real              :: thls     = -1.    !<  Surface liquid water potential temperature [K]
  real              :: thl_top  = -1.    !<  Surface liquid water potential temperature [K] at top wall

  real              :: qts     = -1.         !<  Surface specific humidity [kg/kg]
  real              :: qt_top  = -1.     !<  Top value of specific humidity [kg/kg]

  real              :: thvs    = -1.         !<  Surface virtual temperature [K]

  real, allocatable :: svs   (:)        !<  Surface scalar concentration [-]
  real, allocatable :: sv_top (:)       ! top scalar concentration concentrations

  real              :: z0    = -1.       !<  Surface roughness length [m]
  real              :: z0h   = -1.      !<  Surface roughness for heat [m]
  ! prescribed surface fluxes
  real              :: Cmav             !<  Average drag coefficient for momentum [-]
  real              :: Csav             !<  Average drag coefficient for scalars [-]
  real              :: horvel           !<  Average horizontal velocity at first level


  real              :: wtsurf = -1.      !<  Prescribed kinematic temperature flux [K m/s]
  real              :: wttop  = 0.

  real              :: wqtop  = 0.
  real              :: wqsurf = -1.      !<  Prescribed kinematic moisture flux [kg/kg m/s]

  real, allocatable :: wsvsurf(:) !<  Prescribed surface scalar(n) flux [- m/s]
  real, allocatable :: wsvtop(:)
  real :: wsvsurfdum(1:99) = 0. !<  Dummy variables as nsv allocated variable
  real :: wsvtopdum(1:99)  = 0.


end module modsurfdata