su_aerw.F90 Source File


This file depends on

sourcefile~~su_aerw.f90~~EfferentGraph sourcefile~su_aerw.f90 su_aerw.F90 sourcefile~yomgem.f90 yomgem.F90 sourcefile~su_aerw.f90->sourcefile~yomgem.f90 sourcefile~yomlun.f90 yomlun.F90 sourcefile~su_aerw.f90->sourcefile~yomlun.f90 sourcefile~yoephy.f90 yoephy.F90 sourcefile~su_aerw.f90->sourcefile~yoephy.f90 sourcefile~yoeaersrc.f90 yoeaersrc.F90 sourcefile~su_aerw.f90->sourcefile~yoeaersrc.f90 sourcefile~yomhook_dummy.f90 yomhook_dummy.F90 sourcefile~su_aerw.f90->sourcefile~yomhook_dummy.f90 sourcefile~yom_ygfl.f90 yom_ygfl.F90 sourcefile~su_aerw.f90->sourcefile~yom_ygfl.f90 sourcefile~yoedbug.f90 yoedbug.F90 sourcefile~su_aerw.f90->sourcefile~yoedbug.f90 sourcefile~yomgc.f90 yomgc.F90 sourcefile~su_aerw.f90->sourcefile~yomgc.f90 sourcefile~yomleg.f90 yomleg.F90 sourcefile~su_aerw.f90->sourcefile~yomleg.f90 sourcefile~yoeaeratm.f90 yoeaeratm.F90 sourcefile~su_aerw.f90->sourcefile~yoeaeratm.f90 sourcefile~yomcst.f90 yomcst.F90 sourcefile~su_aerw.f90->sourcefile~yomcst.f90 sourcefile~parkind1.f90 parkind1.F90 sourcefile~su_aerw.f90->sourcefile~parkind1.f90 sourcefile~yomgem.f90->sourcefile~parkind1.f90 sourcefile~yomlun.f90->sourcefile~parkind1.f90 sourcefile~yomlun_ifsaux.f90 yomlun_ifsaux.F90 sourcefile~yomlun.f90->sourcefile~yomlun_ifsaux.f90 sourcefile~yoephy.f90->sourcefile~parkind1.f90 sourcefile~yoeaersrc.f90->sourcefile~parkind1.f90 sourcefile~yom_ygfl.f90->sourcefile~parkind1.f90 sourcefile~yoedbug.f90->sourcefile~parkind1.f90 sourcefile~yomgc.f90->sourcefile~parkind1.f90 sourcefile~yomleg.f90->sourcefile~parkind1.f90 sourcefile~yoeaeratm.f90->sourcefile~parkind1.f90 sourcefile~yomcst.f90->sourcefile~parkind1.f90 sourcefile~yomlun_ifsaux.f90->sourcefile~parkind1.f90

Contents

Source Code


Source Code

SUBROUTINE SU_AERW

!**** *SU_AERW*   - DEFINES INDICES AND PARAMETERS FOR VARIOUS AEROSOL VARIABLES

!     PURPOSE.
!     --------
!           INITIALIZE YOEAERATM, YOEAERSRC, YOEAERSNK, THE MODULES THAT CONTAINS INDICES
!           ALLOWING TO GET THE AEROSOL PARAMETERS RELEVANT FOR THE PROGNOSTIC AEROSOL
!           CONFIGURATION.

!**   INTERFACE.
!     ----------
!        *CALL* *SU_AERW

!        EXPLICIT ARGUMENTS :
!        --------------------
!        NONE

!        IMPLICIT ARGUMENTS :
!        --------------------
!        YOEAERW

!     METHOD.
!     -------
!        SEE DOCUMENTATION

!     EXTERNALS.
!     ----------

!     REFERENCE.
!     ----------
!        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS

!     AUTHOR.
!     -------
!        JEAN-JACQUES MORCRETTE *ECMWF*

!     MODIFICATIONS.
!     --------------
!        ORIGINAL : 2005-07-08

!     ------------------------------------------------------------------

USE PARKIND1  ,ONLY : JPIM     ,JPRB
USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK

USE YOEAERATM, ONLY : LAERGBUD, LAERSCAV ,LAERSEDIM, LAERSURF, LAER6SDIA, &
 & LAERCLIMG, LAERCLIMZ, LAERCLIST, LAERDRYDP, LAERNGAT, LAERPRNT, &
 & REPSCAER , INDBG

USE YOEAERSRC, ONLY : JKBIN, JKTYP, LEPAERO  , &
 & NBINAER, NINDAER , NMAXTAER, NTAER  , NTYPAER, RGELAV , RGEMUV , &
 & RDGLAV , RDGMUV  , RCLONV  , RSLONV , RDCLONV, RDSLONV, LAEREXTR, &
 & RSSFLX , RLATVOL , RLONVOL , NDDUST

USE YOEPHY   , ONLY : LE4ALB

USE YOEDBUG  , ONLY : KSTPDBG

USE YOMCST   , ONLY : RPI
USE YOMGC    , ONLY : GELAM
USE YOMGEM   , ONLY : NGPTOT
USE YOMLEG   , ONLY : RMU
! Ce qui concerne NULNAM commente par MPL le 15.04.09
!USE YOMLUN   , ONLY : NULNAM, NULOUT
USE YOMLUN   , ONLY : NULOUT

USE YOM_YGFL, ONLY : NAERO

IMPLICIT NONE

INTEGER(KIND=JPIM) :: IAER, ICAER, ITAER
INTEGER(KIND=JPIM) :: J, JAER, JL

REAL(KIND=JPRB) :: ZHOOK_HANDLE
!     ----------------------------------------------------------------

#include "posnam.intfb.h"

#include "su_aerp.intfb.h"
#include "su_aerop.intfb.h"
!      ----------------------------------------------------------------

#include "naeaer.h"

!      ----------------------------------------------------------------
IF (LHOOK) CALL DR_HOOK('SU_AERW',0,ZHOOK_HANDLE)

!*         1.       DEFAULT VALUES OF PARAMETERS
!                   ----------------------------

print *,'DANS SU_AERW'
NBINAER(:) = (/ 3, 3, 2, 2, 1, 1, 1, 1, 1 /)

NMAXTAER=9
NTYPAER(:) = 0
JKBIN(:) = 0
JKTYP(:) = 0

LEPAERO=.FALSE.
LAERCLIMG=.FALSE.
LAERCLIMZ=.FALSE.
LAERCLIST=.FALSE.
LAERDRYDP=.FALSE.
LAEREXTR=.FALSE.
LAERGBUD=.FALSE.
LAERNGAT=.FALSE.
LAERPRNT=.FALSE.
LAERSCAV=.FALSE.
LAERSEDIM=.FALSE.
LAERSURF=.FALSE.
LAER6SDIA=.FALSE.
INDBG=1
NTAER  =0
NDDUST =2

! the 9 types and assumed number of bins are:
!  NTYPAER    bins  type
!     1       1- 3  sea-salt  0.03 - 0.5 -  5  - 20 microns
!     2       4- 6  dust      0.03 - 0.5 - 0.9 - 20 microns
!     3       7- 8  POM	    hydrophilic, hydrophobic
!     4       9-10  BC	    hydrophilic, hydrophobic
!     5      11     sulfate
!     6      12     fly ash
!     7      13     pseudo-prognostic stratospheric aerosols
!     8      14     pseudo-prognostic volcanic aerosols
!     9      15     prognostic stratospheric aerosols
 
DO JAER=1,NMAXTAER
  NTYPAER(JAER)=0
ENDDO

RLATVOL=-999._JPRB
RLONVOL=-999._JPRB
RGELAV =-999._JPRB
RGEMUV =-999._JPRB
RDGLAV = 999._JPRB
RDGMUV = 999._JPRB
RCLONV =-999._JPRB
RSLONV =-999._JPRB
RDCLONV= 999._JPRB
RDSLONV= 999._JPRB
DO J=1,3
  KSTPDBG(J)=-999
ENDDO

REPSCAER=1.E-15_JPRB

!     ------------------------------------------------------------------

!*         2.       READ VALUES OF PROGNOSTIC AEROSOL CONFIGURATION
!                   -----------------------------------------------
! Ce qui concerne NAEAER commente par MPL le 15.04.09
!IF(NAERO > 0) THEN
! CALL POSNAM(NULNAM,'NAEAER')
! READ (NULNAM,NAEAER)
!ENDIF

IF (.NOT.LE4ALB) THEN
  NDDUST=2
ENDIF
!     ------------------------------------------------------------------

!*       3.    INITIALIZE PROGNOSTIC AEROSOL PHYSICAL AND OPTICAL PARAMETERS
!              -------------------------------------------------------------

  CALL SU_AERP
print *,'SU_AERW: apres SU_AERP'
  CALL SU_AEROP
print *,'SU_AERW: apres SU_AEROP'

IF (LEPAERO) THEN

! define a composite index for each bin of each different aerosol type to be used
! in source, sedimentation and deposition routines
 
  ICAER=0
  DO JAER=1,NMAXTAER
    IF (NTYPAER(JAER) /= 0) THEN
      NTAER=NTAER+1
      ITAER=NTYPAER(JAER)
      DO IAER=1,ITAER
        ICAER=ICAER+1
        NINDAER(ICAER)=JAER*10+IAER
        JKTYP(ICAER)=JAER
        JKBIN(ICAER)=IAER
      ENDDO
    ENDIF
  ENDDO

!-- if volcanic aerosols, define the model coordinates

  IF (NTYPAER(9) /= 0) THEN
    RGEMUV=(RLATVOL+90._JPRB)*RPI/180._JPRB
    RGELAV=RLONVOL*RPI/180._JPRB
    RCLONV=COS(RGELAV)
    RSLONV=SIN(RGELAV)
    DO J=1,NGPTOT-1
      IF (RGELAV > GELAM(J) .AND. RGELAV <= GELAM(J+1) .AND. &
        & RGEMUV < RMU(JL) .AND. RGEMUV >= RMU(JL+1) ) THEN
        RDGMUV=ABS( RMU(J+1) - RMU(J))
        RDGLAV=ABS( GELAM(J+1)-GELAM(J) )
        RDSLONV=ABS( SIN(GELAM(JL+1))-SIN(GELAM(JL)) )
        RDCLONV=ABS( COS(GELAM(JL+1))-COS(GELAM(JL)) )
      ENDIF
    ENDDO
  ENDIF  

!      ----------------------------------------------------------------

!*       4.    PRINT FINAL VALUES.
!              -------------------

  WRITE(UNIT=NULOUT,FMT='('' LEPAERO = '',L5 &
   & ,'' NTAER   = '',I2 ,'' NDDUST = '',I1,/&
   & ,'' NTYPAER = '',9I3,/ &
   & ,'' NBINAER = '',9I3,/ &
   & ,'' JKTYP   = '',15I3,/&
   & ,'' JKBIN   = '',15I3  &
   & )')&
   & LEPAERO,NTAER,(NTYPAER(JAER),JAER=1,9),(NBINAER(JAER),JAER=1,9), &
   & (JKTYP(JAER),JAER=1,15),(JKBIN(JAER),JAER=1,15)
  WRITE(UNIT=NULOUT,FMT='('' LAERGBUD = '',L3 &
   & ,'' LAERNGAT = '',L3 &
   & ,'' LAERDRYDP= '',L3 &
   & ,'' LAERSEDIM= '',L3 &
   & ,'' LAERSCAV = '',L3 &
   & ,'' LAER6SDIA= '',L3 &
   & ,'' LAERCLIMZ= '',L3 &
   & ,'' LAERCLIMG= '',L3 &
   & ,'' LAERCLIST= '',L3 &
   & )')&
   & LAERGBUD,LAERNGAT, LAERDRYDP,LAERSEDIM,LAERSCAV,LAER6SDIA,LAERCLIMZ,LAERCLIMG,LAERCLIST
  WRITE(UNIT=NULOUT,FMT='('' RSSFLX= '',10E10.3)') RSSFLX
  IF (NTYPAER(9) /= 0) THEN
    WRITE(UNIT=NULOUT,FMT='('' RLATVOL= '',F5.2 &
     & ,'' RLONVOL= '',F6.2,'' RGEMUV= '',F6.4,'' RGELAV= '',F6.4 &
     & ,'' RCLONV = '',F6.4,'' RSLONV= '',F6.4,'' RDGMUV= '',F6.4 &
     & ,'' RDGLAV = '',F6.4,'' RDCLONV= '',F6.4,'' RDSLONV= '',F6.4 &
     & )')&
     & RLATVOL,RLONVOL,RGEMUV,RGELAV,RCLONV,RSLONV,RDGMUV,RDGLAV,RDCLONV,RDSLONV
  ENDIF
ENDIF

!     ----------------------------------------------------------------
IF (LHOOK) CALL DR_HOOK('SU_AERW',1,ZHOOK_HANDLE)
END SUBROUTINE SU_AERW