SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/dslt_init_modes.F90
Go to the documentation of this file.
00001 !     #########
00002 SUBROUTINE DSLT_INIT_MODES (KEQ, KSV_BEG, KSV_END, OVARSIG, ORGFIX, &
00003                             KMDEBEG, KMDE)
00004 !!    ###########################################
00005 !!
00006 !!*** *DSLT_INIT_MODES*
00007 !!
00008 !!    PURPOSE
00009 !!    -------
00010 !!    Find the number of dust modes to be transported
00011 !!    Each mode needs 3 moments to be described, so logically, the number of modes is
00012 !!    The number of dust tracers divided by 3
00013 !!     
00014 !!
00015 !!    REFERENCE
00016 !!    ---------
00017 !!    Modified dst_init_names (march 2005)    
00018 !!
00019 !!    AUTHOR
00020 !!    ------
00021 !!    Alf Grini <alf.grini@cnrm.meteo.fr>
00022 !!
00023 !!    MODIFICATIONS
00024 !!    -------------
00025 !!
00026 !!    EXTERNAL
00027 !!    --------
00028 !!
00029 !!    IMPLICIT ARGUMENTS
00030 !!    ------------------
00031 !-------------------------------------------------------------------------------
00032 !
00033 !*       0.     DECLARATIONS
00034 !               ------------
00035 !
00036 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00037 USE PARKIND1  ,ONLY : JPRB
00038 !
00039 USE MODI_ABOR1_SFX
00040 !
00041 IMPLICIT NONE
00042 !
00043 !*      0.1    declarations of arguments
00044 !
00045 
00046 INTEGER,                         INTENT(IN) :: KEQ       ! number of dust variables
00047 INTEGER,                         INTENT(IN) :: KSV_BEG   ! First number of dust tracer
00048 INTEGER,                         INTENT(IN) :: KSV_END   ! Last number of dust tracer
00049 LOGICAL,                         INTENT(IN) :: OVARSIG   ! type of standard deviation (fixed or variable)
00050 LOGICAL,                         INTENT(IN) :: ORGFIX    ! type of mean radius
00051 INTEGER,                         INTENT(OUT) :: KMDEBEG  ! Place in scalar list of dustmass in first mode
00052 INTEGER,                         INTENT(OUT) :: KMDE     ! Number of dust modes
00053 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00054 
00055 
00056 !Check if you have a multiple of 3 dust related variables, and 
00057 !Set the number of modes to the number of dust related variables
00058 !divided by 3
00059 IF (LHOOK) CALL DR_HOOK('DSLT_INIT_MODES',0,ZHOOK_HANDLE)
00060 !
00061 KMDEBEG = KSV_BEG
00062 KMDE    = KSV_END - KSV_BEG + 1
00063 !
00064 IF (OVARSIG) THEN !case three moments by modes
00065   IF(MOD(KMDE,3).NE.0.) THEN
00066     CALL ABOR1_SFX('DST_INIT_MODES: (1) WRONG NUMBER OF DUST VARIABLES')
00067   ELSE
00068     KMDE = KMDE / 3
00069   ENDIF
00070 ELSE IF (.NOT.ORGFIX) THEN ! case two moment by modes
00071   IF(MOD(KMDE,2).ne.0.)THEN
00072    CALL ABOR1_SFX('DST_INIT_MODES: (1) WRONG NUMBER OF DUST VARIABLES')
00073   ELSE
00074     KMDE = KMDE / 2
00075   END IF
00076 END IF
00077 !
00078 IF (LHOOK) CALL DR_HOOK('DSLT_INIT_MODES',1,ZHOOK_HANDLE)
00079 !
00080 END SUBROUTINE DSLT_INIT_MODES