|
SURFEX v7.3
General documentation of Surfex
|
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
1.8.0