[1974] | 1 | MODULE calcstormfract_mod |
---|
| 2 | |
---|
| 3 | IMPLICIT NONE |
---|
| 4 | |
---|
| 5 | CONTAINS |
---|
| 6 | !======================================================================= |
---|
| 7 | ! ROCKET DUST STORM - Defining dust storm fraction of the mesh |
---|
| 8 | !======================================================================= |
---|
| 9 | ! before calling radiative transfer |
---|
| 10 | ! SUBGRID PARAMETRIZATION |
---|
| 11 | ! ----------------------------------------------------------------------- |
---|
| 12 | ! Author : T. Bertrand 2014-05 |
---|
| 13 | ! Institution : Laboratoire de Meteorologie Dynamique (LMD) Paris, France |
---|
| 14 | ! ----------------------------------------------------------------------- |
---|
| 15 | ! defining the fraction of the mesh containing the rocket dust storm. |
---|
| 16 | ! file using the fraction: aeropacity.F, before calling radiative transfer |
---|
| 17 | ! the radiative transfer is performed in the mesh without the storm and in the mesh with the storm |
---|
| 18 | ! the fraction is used to calculate the true opacity of dust within the storm |
---|
| 19 | |
---|
| 20 | SUBROUTINE calcstormfract(ngrid,nlayer,nq,pq,totstormfract) |
---|
| 21 | |
---|
| 22 | use tracer_mod, only: igcm_stormdust_mass |
---|
| 23 | |
---|
| 24 | implicit none |
---|
| 25 | |
---|
| 26 | !-------------------------------------------------------- |
---|
| 27 | ! Input Variables |
---|
| 28 | !-------------------------------------------------------- |
---|
| 29 | |
---|
| 30 | INTEGER, INTENT(IN) :: ngrid ! number of horizontal grid points |
---|
| 31 | INTEGER, INTENT(IN) :: nlayer ! number of vertical grid points |
---|
| 32 | INTEGER, INTENT(IN) :: nq ! number of tracer species |
---|
| 33 | REAL, INTENT(IN) :: pq(ngrid,nlayer,nq) ! advected field nq |
---|
| 34 | |
---|
| 35 | !-------------------------------------------------------- |
---|
| 36 | ! Output Variables |
---|
| 37 | !-------------------------------------------------------- |
---|
| 38 | |
---|
| 39 | REAL, INTENT(OUT) :: totstormfract(ngrid) ! fraction of the mesh containing the dust storm |
---|
| 40 | |
---|
| 41 | !-------------------------------------------------------- |
---|
| 42 | ! Local variables |
---|
| 43 | !-------------------------------------------------------- |
---|
| 44 | |
---|
| 45 | REAL, PARAMETER :: mmr_ref=5.e-4 ! mass reference mixing ratio (corresponding |
---|
| 46 | ! to the tau=10 reference OMEGA local dust storm) |
---|
| 47 | REAL, PARAMETER :: fracmax=0.6 ! maximal fraction of the storm |
---|
| 48 | REAL, PARAMETER :: fracmin=1.e-2 ! minimal fraction of the storm |
---|
| 49 | INTEGER ig |
---|
| 50 | |
---|
| 51 | ! ********************************************************************** |
---|
| 52 | ! Definition of stormfraction |
---|
| 53 | ! ********************************************************************** |
---|
| 54 | |
---|
| 55 | DO ig=1, ngrid |
---|
| 56 | totstormfract(ig)=abs(maxval(pq(ig,2:nlayer, & !why from 2nd layer? |
---|
| 57 | & igcm_stormdust_mass)))/mmr_ref |
---|
| 58 | totstormfract(ig)=max(totstormfract(ig),fracmin) |
---|
| 59 | totstormfract(ig)=min(totstormfract(ig),fracmax) |
---|
| 60 | ENDDO |
---|
| 61 | |
---|
| 62 | END SUBROUTINE calcstormfract |
---|
| 63 | |
---|
| 64 | END MODULE calcstormfract_mod |
---|