SURFEX v7.3
General documentation of Surfex
|
00001 SUBROUTINE COUPLING_SLT_n( & 00002 KI, &!I [nbr] number of sea points 00003 KSLT, &!I [nbr] number of sea points 00004 PWIND, &!I Wind velocity 00005 PSFSLT &!O [kg/m2/sec] flux of sea salt 00006 ) 00007 00008 !PURPOSE 00009 !------- 00010 ! Compute sea salt emission upon Vignatti et al, 2001 00011 ! 00012 !AUTHOR 00013 !------- 00014 ! P. Tulet 00015 ! 00016 USE MODD_CSTS, ONLY : XAVOGADRO, XPI 00017 USE MODD_SLT_SURF 00018 USE MODD_SLT_n 00019 ! 00020 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00021 USE PARKIND1 ,ONLY : JPRB 00022 ! 00023 IMPLICIT NONE 00024 ! 00025 !INPUT 00026 INTEGER, INTENT(IN) :: KI !I Number of sea points 00027 INTEGER, INTENT(IN) :: KSLT !I Number of sea salt emission variables 00028 REAL, DIMENSION(KI), INTENT(IN) :: PWIND !I wind velocity 00029 REAL, DIMENSION(KI,KSLT), INTENT(OUT) :: PSFSLT !Out: mole particles per mole air m/s *(MWdst/MWair*rhoair)(index #1) 00030 !Out: kg/m2/s (index #2) 00031 !Out: moles m6/moles air m/s *(MWdst/MWair*rhoair)(index #3) 00032 !LOCAL VARIABLES 00033 REAL,DIMENSION(KI,3) :: ZSFSLT_MDE ! sea salt flux from modes 00034 INTEGER :: JN, JI !Counter for sea salt modes 00035 REAL, DIMENSION(KI) :: DZSPEED 00036 INTEGER, DIMENSION(KI):: WCL 00037 REAL :: ZCONVERTFACM0_SLT 00038 REAL :: ZCONVERTFACM3_SLT 00039 REAL :: ZCONVERTFACM6_SLT 00040 ! 00041 !REAL, PARAMETER :: MASS1FLUX(0:40) = (/ & 00042 ! 0.000E+00, 2.483E-15, 2.591E-14, 1.022E-13, 2.707E-13, 5.761E-13, & 00043 ! 1.068E-12, 1.800E-12, 2.829E-12, 4.215E-12, 6.023E-12, 8.317E-12, & 00044 ! 1.117E-11, 1.464E-11, 1.882E-11, 2.378E-11, 2.959E-11, 3.633E-11, & 00045 ! 4.409E-11, 5.296E-11, 6.301E-11, 7.433E-11, 8.693E-11, 1.012E-10, & 00046 ! 1.168E-10, 1.342E-10, 1.532E-10, 1.741E-10, 1.970E-10, 2.219E-10, & 00047 ! 2.489E-10, 2.781E-10, 3.097E-10, 3.437E-10, 3.803E-10, 4.195E-10, & 00048 ! 4.616E-10, 5.065E-10, 5.544E-10, 6.054E-10, 6.711E-10 /) 00049 ! 00050 !REAL, PARAMETER :: MASS2FLUX(0:40) = (/ & 00051 ! 0.000E+00, 2.319E-13, 2.411E-12, 9.481E-12, 2.505E-11, 5.321E-11, & 00052 ! 9.850E-11, 1.658E-10, 2.602E-10, 3.874E-10, 5.529E-10, 7.628E-10, & 00053 ! 1.023E-09, 1.341E-09, 1.722E-09, 2.175E-09, 2.704E-09, 3.319E-09, & 00054 ! 4.026E-09, 4.832E-09, 5.746E-09, 6.776E-09, 7.925E-09, 9.214E-09, & 00055 ! 1.064E-08, 1.221E-08, 1.394E-08, 1.584E-08, 1.791E-08, 2.016E-08, & 00056 ! 2.261E-08, 2.526E-08, 2.812E-08, 3.120E-08, 3.451E-08, 3.806E-08, & 00057 ! 4.186E-08, 4.592E-08, 5.025E-08, 5.486E-08, 6.014E-08 /) 00058 ! 00059 !REAL, PARAMETER :: MASS3FLUX(0:40) = (/ 0.0, & 00060 ! 1.783E-12, 1.579E-11, 5.852E-11, 1.501E-10, 3.134E-10, 5.740E-10, & 00061 ! 9.597E-10, 1.500E-09, 2.227E-09, 3.175E-09, 4.378E-09, 5.872E-09, & 00062 ! 7.698E-09, 9.897E-09, 1.250E-08, 1.556E-08, 1.912E-08, 2.323E-08, & 00063 ! 2.792E-08, 3.325E-08, 3.927E-08, 4.608E-08, 5.356E-08, 6.194E-08, & 00064 ! 7.121E-08, 8.143E-08, 9.266E-08, 1.049E-07, 1.183E-07, 1.329E-07, & 00065 ! 1.487E-07, 1.658E-07, 1.843E-07, 2.041E-07, 2.255E-07, 2.484E-07, & 00066 ! 2.729E-07, 2.991E-07, 3.270E-07, 3.517E-07 /) 00067 00068 00069 REAL, PARAMETER :: NUMB1FLUX(0:40) = (/ 00070 0.000E+00, 3.004E+01, 3.245E+02, 1.306E+03, 3.505E+03, 7.542E+03, 00071 1.410E+04, 2.394E+04, 3.787E+04, 5.674E+04, 8.147E+04, 1.130E+05, 00072 1.523E+05, 2.005E+05, 2.586E+05, 3.278E+05, 4.091E+05, 5.037E+05, 00073 6.129E+05, 7.379E+05, 8.800E+05, 1.041E+06, 1.220E+06, 1.422E+06, 00074 1.646E+06, 1.893E+06, 2.166E+06, 2.466E+06, 2.794E+06, 3.152E+06, 00075 3.541E+06, 3.962E+06, 4.419E+06, 4.911E+06, 5.441E+06, 6.011E+06, 00076 6.621E+06, 7.274E+06, 7.972E+06, 8.716E+06, 8.801E+06 /) 00077 00078 REAL, PARAMETER :: NUMB2FLUX(0:40) = (/ 00079 0.000E+00, 1.934E+01, 2.068E+02, 8.271E+02, 2.211E+03, 4.741E+03, 00080 8.841E+03, 1.497E+04, 2.363E+04, 3.534E+04, 5.066E+04, 7.017E+04, 00081 9.447E+04, 1.242E+05, 1.600E+05, 2.025E+05, 2.525E+05, 3.106E+05, 00082 3.776E+05, 4.542E+05, 5.413E+05, 6.395E+05, 7.501E+05, 8.726E+05, 00083 1.009E+06, 1.160E+06, 1.327E+06, 1.509E+06, 1.709E+06, 1.927E+06, 00084 2.163E+06, 2.420E+06, 2.697E+06, 2.996E+06, 3.318E+06, 3.664E+06, 00085 4.034E+06, 4.430E+06, 4.852E+06, 5.303E+06, 5.740E+06 /) 00086 00087 REAL, PARAMETER :: NUMB3FLUX(0:40) = (/ 0.0, 00088 4.340E-01, 5.217E+00, 2.241E+01, 6.301E+01, 1.404E+02, 2.703E+02, 00089 4.699E+02, 7.584E+02, 1.157E+03, 1.687E+03, 2.373E+03, 3.240E+03, 00090 4.314E+03, 5.625E+03, 7.197E+03, 9.063E+03, 1.126E+04, 1.380E+04, 00091 1.674E+04, 2.011E+04, 2.393E+04, 2.827E+04, 3.311E+04, 3.853E+04, 00092 4.457E+04, 5.126E+04, 5.864E+04, 6.675E+04, 7.564E+04, 8.535E+04, 00093 9.592E+04, 1.074E+05, 1.198E+05, 1.333E+05, 1.478E+05, 1.633E+05, 00094 1.801E+05, 1.980E+05, 2.172E+05, 2.353E+05 /) 00095 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00096 !! 00097 !! MESONH carries the following units during transport: 00098 !! M0=#/molec_{air} 00099 !! M6=um6/molec_{air}*1.d6 00100 !! The surface model should have (for sea salt) 00101 !! M0=#/m3*[kg_{dst}/mole_{dst}/XAVOGADRO] 00102 !! M3=kg/m3 00103 !! M6=um6/m3 00104 !! REFERENCE 00105 !! --------- 00106 !! Tulet et al, ORILAM manuscript for transformation of modal parameters 00107 !! J. Geophys. Res., 110, D18201, doi:10.1029/2004JD005716 00108 ! 00109 !Initialize output which is total flux of sea salt (kg/m2/sec). 00110 IF (LHOOK) CALL DR_HOOK('COUPLING_SLT_N',0,ZHOOK_HANDLE) 00111 ! 00112 !Factor which is needed so that all gains normal units when leaving ground paramn 00113 ZCONVERTFACM0_SLT = XMOLARWEIGHT_SLT / XAVOGADRO !(kg_dst/mol_dst)/(molec/mol) 00114 !Factor which is needed for moment 6, there is a factor 1.d6 transported around in M6 in MESONH 00115 ZCONVERTFACM6_SLT = XMOLARWEIGHT_SLT / XAVOGADRO*1.d6 00116 ZCONVERTFACM3_SLT = 4./3.*XPI*XDENSITY_SLT / 1.d18 00117 ! 00118 PSFSLT(:,:)=0.d0 00119 ! 00120 IF (CEMISPARAM_SLT.eq."Vig01")THEN 00121 ! 00122 ! Vignatti et al. 2001 (in particles.cm-2.s-1) 00123 ZSFSLT_MDE(:,1) = 10**(0.09 *PWIND(:) + 0.283) ! fine mode 00124 ZSFSLT_MDE(:,2) = 10**(0.0422*PWIND(:) + 0.288) ! median mode 00125 ZSFSLT_MDE(:,3) = 10**(0.069 *PWIND(:) - 3.5) ! coarse mode 00126 ! convert into particles.m-2.s-1) 00127 ZSFSLT_MDE(:,1) = MAX(ZSFSLT_MDE(:,1) * 1E4, 1E-10) 00128 ZSFSLT_MDE(:,2) = MAX(ZSFSLT_MDE(:,2) * 1E4, 1E-10) 00129 ZSFSLT_MDE(:,3) = MAX(ZSFSLT_MDE(:,3) * 1E4, 1E-10) 00130 ! 00131 ELSE ! Use Schultz et al., 2004 00132 ! 00133 WCL(:) = INT(PWIND(:)) 00134 WCL(:) = MAX (0, MIN(WCL(:), 39)) 00135 ! 00136 DZSPEED(:) = MAX(0., MIN(PWIND(:) - FLOAT(WCL(:)), 1.)) 00137 ! 00138 ! Flux given in particles.m-2 s-1 00139 ! 00140 DO JI=1,KI 00141 !plm-gfortran 00142 ZSFSLT_MDE(JI,1) = NUMB1FLUX(WCL(JI)) + (NUMB1FLUX(WCL(JI)+1)-NUMB1FLUX(WCL(JI)))*DZSPEED(JI) 00143 ZSFSLT_MDE(JI,2) = NUMB2FLUX(WCL(JI)) + (NUMB2FLUX(WCL(JI)+1)-NUMB2FLUX(WCL(JI)))*DZSPEED(JI) 00144 ZSFSLT_MDE(JI,3) = NUMB3FLUX(WCL(JI)) + (NUMB3FLUX(WCL(JI)+1)-NUMB3FLUX(WCL(JI)))*DZSPEED(JI) 00145 !plm-gfortran 00146 ENDDO 00147 ! 00148 END IF 00149 ! 00150 DO JN=1,JPMODE_SLT 00151 ! 00152 IF (LVARSIG_SLT) THEN 00153 ! 00154 PSFSLT(:,1+(JN-1)*3) = ZSFSLT_MDE(:,JORDER_SLT(JN)) 00155 PSFSLT(:,2+(JN-1)*3) = PSFSLT(:,1+(JN-1)*3) * (XEMISRADIUS_SLT(JN)**3)*EXP(4.5 * LOG(XEMISSIG_SLT(JN))**2) 00156 PSFSLT(:,3+(JN-1)*3) = PSFSLT(:,1+(JN-1)*3) * (XEMISRADIUS_SLT(JN)**6)*EXP(18. * LOG(XEMISSIG_SLT(JN))**2) 00157 ! 00158 ! Conversion into fluxes 00159 PSFSLT(:,1+(JN-1)*3) = PSFSLT(:,1+(JN-1)*3) * ZCONVERTFACM0_SLT 00160 PSFSLT(:,2+(JN-1)*3) = PSFSLT(:,1+(JN-1)*3) * ZCONVERTFACM3_SLT 00161 PSFSLT(:,3+(JN-1)*3) = PSFSLT(:,3+(JN-1)*3) * ZCONVERTFACM6_SLT 00162 00163 ELSE IF (LRGFIX_SLT) THEN 00164 PSFSLT(:,JN) = ZSFSLT_MDE(:,JORDER_SLT(JN)) * (XEMISRADIUS_SLT(JN)**3)*EXP(4.5 * LOG(XEMISSIG_SLT(JN))**2) 00165 ! Conversion into fluxes 00166 PSFSLT(:,JN) = PSFSLT(:,JN) * ZCONVERTFACM3_SLT 00167 00168 ELSE 00169 PSFSLT(:,1+(JN-1)*2) = ZSFSLT_MDE(:,JORDER_SLT(JN)) 00170 PSFSLT(:,2+(JN-1)*2) = PSFSLT(:,1+(JN-1)*2) * (XEMISRADIUS_SLT(JN)**3)*EXP(4.5 * LOG(XEMISSIG_SLT(JN))**2) 00171 00172 ! Conversion into fluxes 00173 PSFSLT(:,1+(JN-1)*2) = PSFSLT(:,1+(JN-1)*2) * ZCONVERTFACM0_SLT 00174 PSFSLT(:,2+(JN-1)*2) = PSFSLT(:,1+(JN-1)*2) * ZCONVERTFACM3_SLT 00175 00176 ENDIF 00177 END DO 00178 00179 IF (LHOOK) CALL DR_HOOK('COUPLING_SLT_N',1,ZHOOK_HANDLE) 00180 END SUBROUTINE COUPLING_SLT_n