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 |
---|