1 |
|
19998 |
SUBROUTINE cv3_inip() |
2 |
|
|
! ******************************************************************* |
3 |
|
|
! * * |
4 |
|
|
! CV3_INIP Input = choice of mixing probability laws * |
5 |
|
|
! Output = normalized coefficients of the probability laws. * |
6 |
|
|
! * * |
7 |
|
|
! written by : Jean-Yves Grandpeix, 06/06/2006, 19.39.27 * |
8 |
|
|
! modified by : * |
9 |
|
|
! ******************************************************************* |
10 |
|
|
! |
11 |
|
|
!---------------------------------------------- |
12 |
|
|
! INPUT (from Common YOMCST2 in "YOMCST2.h") : |
13 |
|
|
! iflag_mix |
14 |
|
|
! gammas |
15 |
|
|
! alphas |
16 |
|
|
! betas |
17 |
|
|
! Fmax |
18 |
|
|
! scut |
19 |
|
|
! |
20 |
|
|
!---------------------------------------------- |
21 |
|
|
! INPUT/OUTPUT (from and to Common YOMCST2 in "YOMCST2.h") : |
22 |
|
|
! qqa1 |
23 |
|
|
! qqa2 |
24 |
|
|
! |
25 |
|
|
!---------------------------------------------- |
26 |
|
|
! OUTPUT (to Common YOMCST2 in "YOMCST2.h") : |
27 |
|
|
! Qcoef1max |
28 |
|
|
! Qcoef2max |
29 |
|
|
! |
30 |
|
|
!---------------------------------------------- |
31 |
|
|
|
32 |
|
|
USE print_control_mod, ONLY: prt_level, lunout |
33 |
|
|
IMPLICIT NONE |
34 |
|
|
|
35 |
|
|
include "YOMCST2.h" |
36 |
|
|
|
37 |
|
|
!---------------------------------------------- |
38 |
|
|
! Local variables : |
39 |
|
|
CHARACTER (LEN=20) :: modname = 'cv3_inip' |
40 |
|
|
CHARACTER (LEN=80) :: abort_message |
41 |
|
|
|
42 |
|
|
REAL :: sumcoef |
43 |
|
|
REAL :: sigma, aire, pdf, mu, df |
44 |
|
|
REAL :: ff |
45 |
|
|
|
46 |
|
|
|
47 |
|
|
! -- Mixing probability distribution functions |
48 |
|
|
|
49 |
|
|
REAL qcoef1, qcoef2, qff, qfff, qmix, rmix, qmix1, rmix1, qmix2, rmix2, f |
50 |
|
|
|
51 |
|
|
qcoef1(f) = tanh(f/gammas) |
52 |
|
|
qcoef2(f) = (tanh(f/gammas)+gammas*log(cosh((1.-f)/gammas)/cosh(f/gammas))) |
53 |
|
|
qff(f) = max(min(f,1.), 0.) |
54 |
|
|
qfff(f) = min(qff(f), scut) |
55 |
|
|
qmix1(f) = (tanh((qff(f)-fmax)/gammas)+qcoef1max)/qcoef2max |
56 |
|
|
rmix1(f) = (gammas*log(cosh((qff(f)-fmax)/gammas))+qff(f)*qcoef1max)/ & |
57 |
|
|
qcoef2max |
58 |
|
|
qmix2(f) = -log(1.-qfff(f))/scut |
59 |
|
|
rmix2(f) = (qfff(f)+(1.-qff(f))*log(1.-qfff(f)))/scut |
60 |
|
|
qmix(f) = qqa1*qmix1(f) + qqa2*qmix2(f) |
61 |
|
|
rmix(f) = qqa1*rmix1(f) + qqa2*rmix2(f) |
62 |
|
|
|
63 |
|
|
! cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
64 |
|
|
|
65 |
|
|
|
66 |
|
|
! =========================================================================== |
67 |
|
|
! READ IN PARAMETERS FOR THE MIXING DISTRIBUTION |
68 |
|
|
! AND PASS THESE THROUGH A COMMON BLOCK TO SUBROUTINE CONVECT etc. |
69 |
|
|
! (Written by V.T.J. Phillips, 20-30/Jan/99) |
70 |
|
|
! =========================================================================== |
71 |
|
|
|
72 |
|
|
! line 1: a flag (0 or 1) to decide whether P(F) = 1 or the general P(F) |
73 |
|
|
! is to be |
74 |
|
|
! used, followed by SCUT, which is the cut-off value of F in CONVECT |
75 |
|
|
! line 2: blank |
76 |
|
|
! line 3: the coefficients for the linear combination of P(F)s to |
77 |
|
|
! make the general P(F) |
78 |
|
|
! line 4: blank |
79 |
|
|
! line 5: gammas, Fmax for the cosh^2 component of P(F) |
80 |
|
|
! line 6: blank |
81 |
|
|
! line 7: alphas for the 1st irrational P(F) |
82 |
|
|
! line 8: blank |
83 |
|
|
! line 9: betas for the 2nd irrational P(F) |
84 |
|
|
|
85 |
|
|
|
86 |
|
|
! c$$$ open(57,file='parameter_mix.data') |
87 |
|
|
! c$$$ |
88 |
|
|
! c$$$ read(57,*) iflag_mix, scut |
89 |
|
|
! c$$$ read(57,*) |
90 |
|
|
! c$$$ if(iflag_mix .gt. 0) then |
91 |
|
|
! c$$$ read(57,*) qqa1, qqa2 |
92 |
|
|
! c$$$ read(57,*) |
93 |
|
|
! c$$$ read(57,*) gammas, Fmax |
94 |
|
|
! c$$$ read(57,*) |
95 |
|
|
! c$$$ read(57,*) alphas |
96 |
|
|
! c$$$ endif |
97 |
|
|
! c$$$ close(57) |
98 |
|
|
|
99 |
|
|
|
100 |
✓✗ |
1 |
IF (iflag_mix>0) THEN |
101 |
|
|
|
102 |
|
|
! -- Normalize Pdf weights |
103 |
|
|
|
104 |
|
1 |
sumcoef = qqa1 + qqa2 |
105 |
|
1 |
qqa1 = qqa1/sumcoef |
106 |
|
1 |
qqa2 = qqa2/sumcoef |
107 |
|
|
|
108 |
|
1 |
qcoef1max = qcoef1(fmax) |
109 |
|
1 |
qcoef2max = qcoef2(fmax) |
110 |
|
|
|
111 |
|
1 |
sigma = 0. |
112 |
|
1 |
aire = 0.0 |
113 |
|
1 |
pdf = 0.0 |
114 |
|
1 |
mu = 0.0 |
115 |
|
|
df = 0.0001 |
116 |
|
|
|
117 |
|
|
! do ff = 0.0 + df, 1.0 - 2.*df, df |
118 |
|
1 |
ff = df |
119 |
✓✓ |
9999 |
DO WHILE (ff<=1.0-2.*df) |
120 |
|
9998 |
pdf = (qmix(ff+df)-qmix(ff))*(1.-ff)/df |
121 |
|
9998 |
aire = aire + (qmix(ff+df)-qmix(ff))*(1.-ff) |
122 |
|
9998 |
mu = mu + pdf*ff*df |
123 |
✗✓ |
9998 |
IF (prt_level>9) WRITE (lunout, *) pdf, qmix(ff), aire, ff |
124 |
|
9998 |
ff = ff + df |
125 |
|
|
END DO |
126 |
|
|
|
127 |
|
|
! do ff=0.0+df,1.0 - 2.*df,df |
128 |
|
1 |
ff = df |
129 |
✓✓ |
9999 |
DO WHILE (ff<=1.0-2.*df) |
130 |
|
9998 |
pdf = (qmix(ff+df)-qmix(ff))*(1.-ff)/df |
131 |
|
9998 |
sigma = sigma + pdf*(ff-mu)*(ff-mu)*df |
132 |
|
9998 |
ff = ff + df |
133 |
|
|
END DO |
134 |
|
1 |
sigma = sqrt(sigma) |
135 |
|
|
|
136 |
✗✓ |
1 |
IF (abs(aire-1.0)>0.02) THEN |
137 |
|
|
WRITE (lunout, *) 'WARNING:: AREA OF MIXING PDF IS::', aire |
138 |
|
|
abort_message = '' |
139 |
|
|
CALL abort_physic(modname, abort_message, 1) |
140 |
|
|
ELSE |
141 |
|
1 |
PRINT *, 'Area, mean & std deviation are ::', aire, mu, sigma |
142 |
|
|
END IF |
143 |
|
|
END IF ! (iflag_mix .gt. 0) |
144 |
|
|
|
145 |
|
1 |
RETURN |
146 |
|
|
END SUBROUTINE cv3_inip |