123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- !#################################################################
- !
- ! Purpose:
- ! --------
- !
- ! This module contains all subroutines needed for dry deposition calculations.
- ! The mean purpose is to perform on a high resolution of 1x1 degree:
- !
- ! 0. allocate the vd on the model resolution
- !
- ! 1. read fields needed for further calculations in subroutines:
- !
- ! 2. calculate the tracer independent friction velocity, aerodynamic
- ! and sub-laminar resistance
- !
- ! 3. calculate fields needed for resistance calculations
- !
- ! 4. the tracer dependent vd
- !
- ! 5. coarsen the vd
- !
- ! 6. apply the coarsened deposition velocities to concentration field rm
- !
- ! 7. deallocate vd
- !
- ! Reference:
- ! ---------
- ! general documentationon ECMWF fields can be found on:
- ! http://www.ecmwf.int/research/ifsdocs/PHYSICS/
- ! ---------
- ! Authors:
- ! -------
- ! original code by Laurens Ganzeveld and Ad Jeuken (1997)
- ! revised and adapted for use in TM5 and use of ECMWF data
- ! by F. Dentener and M. Krol (2003)
- !
- ! 24 Jan 2012 - P. Le Sager - modified for mpi lat-lon domain decomposition
- !
- !### macro's #####################################################
- !
- #define TRACEBACK write (gol,'("in ",a," (",a,", line",i5,")")') rname, __FILE__, __LINE__; call goErr
- #define IF_NOTOK_RETURN(action) if (status/=0) then; TRACEBACK; action; return; end if
- #define IF_ERROR_RETURN(action) if (status> 0) then; TRACEBACK; action; return; end if
- !
- #include "tm5.inc"
- !
- !#################################################################
- module dry_deposition
- use GO , only : gol, goPr, goErr
- implicit none
- ! --- in/out ----------------------
- private
- public :: Dry_Deposition_Init, Dry_Deposition_Done
- public :: dd_surface_fields
- ! --- const -----------------------
-
- character(len=*), parameter :: mname = 'dry_deposition'
- contains
- subroutine Dry_Deposition_Init( status )
- ! --- in/out ------------------------------------
-
- integer, intent(out) :: status
-
- ! --- const -------------------------------------
-
- character(len=*), parameter :: rname = mname//'/Dry_Deposition_Init'
-
- ! --- local -------------------------------------
- ! ok
- status = 0
- end subroutine Dry_Deposition_Init
-
- subroutine Dry_Deposition_Done( status )
- ! --- in/out ------------------------------------
-
- integer, intent(out) :: status
-
- ! --- const -------------------------------------
-
- character(len=*), parameter :: rname = mname//'/Dry_Deposition_Done'
-
- ! ok
- status = 0
- end subroutine Dry_Deposition_Done
- subroutine dd_surface_fields( status )
- ! --- in/out -----------------------------
-
- integer, intent(out) :: status
- ! --- const -------------------------------
-
- character(len=*), parameter :: rname = 'dd_surface_fields'
- ! --- local ------------------------------
- ! ok
- status = 0
- end subroutine dd_surface_fields
-
- end module dry_deposition
|