1 | 92,103c92,104
|
---|
2 | < mc=FLT(ng)%Findex(0)
|
---|
3 | < IF (FLT(ng)%Findex(0).gt.0) THEN
|
---|
4 | < CALL hindices (ng, LBi, UBi, LBj, UBj, &
|
---|
5 | < & IstrR, Iend+1, JstrR, Jend+1, &
|
---|
6 | < & GRID(ng)%angler, &
|
---|
7 | < & GRID(ng)%lonr, &
|
---|
8 | < & GRID(ng)%latr, &
|
---|
9 | < & 1, mc, 1, 1, &
|
---|
10 | < & 1, mc, 1, 1, &
|
---|
11 | < & FLT(ng)%Flon, &
|
---|
12 | < & FLT(ng)%Flat, &
|
---|
13 | < & Iflt, Jflt, spv, .FALSE.)
|
---|
14 | ---
|
---|
15 | > IF (Lfloats(ng)) THEN
|
---|
16 | > mc=FLT(ng)%Findex(0)
|
---|
17 | > IF (FLT(ng)%Findex(0).gt.0) THEN
|
---|
18 | > CALL hindices (ng, LBi, UBi, LBj, UBj, &
|
---|
19 | > & IstrR, Iend+1, JstrR, Jend+1, &
|
---|
20 | > & GRID(ng)%angler, &
|
---|
21 | > & GRID(ng)%lonr, &
|
---|
22 | > & GRID(ng)%latr, &
|
---|
23 | > & 1, mc, 1, 1, &
|
---|
24 | > & 1, mc, 1, 1, &
|
---|
25 | > & FLT(ng)%Flon, &
|
---|
26 | > & FLT(ng)%Flat, &
|
---|
27 | > & Iflt, Jflt, spv, .FALSE.)
|
---|
28 | 105,106c106,107
|
---|
29 | < CALL mp_collect (ng, model, mc, spv, Iflt)
|
---|
30 | < CALL mp_collect (ng, model, mc, spv, Jflt)
|
---|
31 | ---
|
---|
32 | > CALL mp_collect (ng, model, mc, spv, Iflt)
|
---|
33 | > CALL mp_collect (ng, model, mc, spv, Jflt)
|
---|
34 | 108,114c109,116
|
---|
35 | < DO i=1,mc
|
---|
36 | < l=FLT(ng)%Findex(i)
|
---|
37 | < FLT(ng)%Tinfo(ixgrd,l)=MIN(MAX(0.5_r8,Iflt(i)), &
|
---|
38 | < & REAL(Lm(ng),r8)+0.5_r8)
|
---|
39 | < FLT(ng)%Tinfo(iygrd,l)=MIN(MAX(0.5_r8,Jflt(i)), &
|
---|
40 | < & REAL(Mm(ng),r8)+0.5_r8)
|
---|
41 | < END DO
|
---|
42 | ---
|
---|
43 | > DO i=1,mc
|
---|
44 | > l=FLT(ng)%Findex(i)
|
---|
45 | > FLT(ng)%Tinfo(ixgrd,l)=MIN(MAX(0.5_r8,Iflt(i)), &
|
---|
46 | > & REAL(Lm(ng),r8)+0.5_r8)
|
---|
47 | > FLT(ng)%Tinfo(iygrd,l)=MIN(MAX(0.5_r8,Jflt(i)), &
|
---|
48 | > & REAL(Mm(ng),r8)+0.5_r8)
|
---|
49 | > END DO
|
---|
50 | > END IF
|
---|
51 | 122,131c124,135
|
---|
52 | < DO l=1,Nfloats(ng)
|
---|
53 | < IF ((Xstr.le.FLT(ng)%Tinfo(ixgrd,l)).and. &
|
---|
54 | < & (FLT(ng)%Tinfo(ixgrd,l).lt.Xend).and. &
|
---|
55 | < & (Ystr.le.FLT(ng)%Tinfo(iygrd,l)).and. &
|
---|
56 | < & (FLT(ng)%Tinfo(iygrd,l).lt.Yend)) THEN
|
---|
57 | < MyThread(l)=.TRUE.
|
---|
58 | < ELSE
|
---|
59 | < MyThread(l)=.FALSE.
|
---|
60 | < END IF
|
---|
61 | < END DO
|
---|
62 | ---
|
---|
63 | > IF (Lfloats(ng)) THEN
|
---|
64 | > DO l=1,Nfloats(ng)
|
---|
65 | > IF ((Xstr.le.FLT(ng)%Tinfo(ixgrd,l)).and. &
|
---|
66 | > & (FLT(ng)%Tinfo(ixgrd,l).lt.Xend).and. &
|
---|
67 | > & (Ystr.le.FLT(ng)%Tinfo(iygrd,l)).and. &
|
---|
68 | > & (FLT(ng)%Tinfo(iygrd,l).lt.Yend)) THEN
|
---|
69 | > MyThread(l)=.TRUE.
|
---|
70 | > ELSE
|
---|
71 | > MyThread(l)=.FALSE.
|
---|
72 | > END IF
|
---|
73 | > END DO
|
---|
74 | > END IF
|
---|
75 | 147,165c151,162
|
---|
76 | < FLT(ng)%Fz0(l)=spv
|
---|
77 | < IF (MyThread(l)) THEN
|
---|
78 | < zfloat=FLT(ng)%Tinfo(izgrd,l)
|
---|
79 | < FLT(ng)%Fz0(l)=zfloat ! Save original value
|
---|
80 | < Kflt(l)=zfloat
|
---|
81 | < IF (zfloat.le.0.0_r8) THEN
|
---|
82 | < i=INT(FLT(ng)%Tinfo(ixgrd,l)) ! Fractional positions
|
---|
83 | < j=INT(FLT(ng)%Tinfo(iygrd,l)) ! are still in this cell
|
---|
84 | < IF (zfloat.lt.GRID(ng)%z_w(i,j,0)) THEN
|
---|
85 | < zfloat=GRID(ng)%z_w(i,j,0)+5.0_r8
|
---|
86 | < FLT(ng)%Fz0(l)=zfloat
|
---|
87 | < END IF
|
---|
88 | < FLT(ng)%Tinfo(izgrd,l)=REAL(N(ng),r8)
|
---|
89 | < DO k=N(ng),1,-1
|
---|
90 | < IF ((GRID(ng)%z_w(i,j,k)-zfloat)* &
|
---|
91 | < & (zfloat-GRID(ng)%z_w(i,j,k-1)).ge.0.0_r8) THEN
|
---|
92 | < Kflt(l)=REAL(k-1,r8)+ &
|
---|
93 | < & (zfloat-GRID(ng)%z_w(i,j,k-1))/ &
|
---|
94 | < & GRID(ng)%Hz(i,j,k)
|
---|
95 | ---
|
---|
96 | > IF (Lfloats(ng)) THEN
|
---|
97 | > FLT(ng)%Fz0(l)=spv
|
---|
98 | > IF (MyThread(l)) THEN
|
---|
99 | > zfloat=FLT(ng)%Tinfo(izgrd,l)
|
---|
100 | > FLT(ng)%Fz0(l)=zfloat ! Save original value
|
---|
101 | > Kflt(l)=zfloat
|
---|
102 | > IF (zfloat.le.0.0_r8) THEN
|
---|
103 | > i=INT(FLT(ng)%Tinfo(ixgrd,l)) ! Fractional positions
|
---|
104 | > j=INT(FLT(ng)%Tinfo(iygrd,l)) ! are still in this cell
|
---|
105 | > IF (zfloat.lt.GRID(ng)%z_w(i,j,0)) THEN
|
---|
106 | > zfloat=GRID(ng)%z_w(i,j,0)+5.0_r8
|
---|
107 | > FLT(ng)%Fz0(l)=zfloat
|
---|
108 | 167c164,175
|
---|
109 | < END DO
|
---|
110 | ---
|
---|
111 | > FLT(ng)%Tinfo(izgrd,l)=REAL(N(ng),r8)
|
---|
112 | > DO k=N(ng),1,-1
|
---|
113 | > IF ((GRID(ng)%z_w(i,j,k)-zfloat)* &
|
---|
114 | > & (zfloat-GRID(ng)%z_w(i,j,k-1)).ge.0.0_r8) THEN
|
---|
115 | > Kflt(l)=REAL(k-1,r8)+ &
|
---|
116 | > & (zfloat-GRID(ng)%z_w(i,j,k-1))/ &
|
---|
117 | > & GRID(ng)%Hz(i,j,k)
|
---|
118 | > END IF
|
---|
119 | > END DO
|
---|
120 | > END IF
|
---|
121 | > ELSE
|
---|
122 | > Kflt(l)=spv
|
---|
123 | 169,171d176
|
---|
124 | < ELSE
|
---|
125 | < Kflt(l)=spv
|
---|
126 | < END IF
|
---|
127 | 173c178
|
---|
128 | < FLT(ng)%Tinfo(izgrd,l)=0.0_r8
|
---|
129 | ---
|
---|
130 | > FLT(ng)%Tinfo(izgrd,l)=0.0_r8
|
---|
131 | 174a180
|
---|
132 | > END IF
|
---|
133 | 178,179c184,187
|
---|
134 | < CALL mp_collect (ng, model, Nfloats(ng), spv, FLT(ng)%Fz0)
|
---|
135 | < CALL mp_collect (ng, model, Nfloats(ng), spv, Kflt)
|
---|
136 | ---
|
---|
137 | > IF (Lfloats(ng)) THEN
|
---|
138 | > CALL mp_collect (ng, model, Nfloats(ng), spv, FLT(ng)%Fz0)
|
---|
139 | > CALL mp_collect (ng, model, Nfloats(ng), spv, Kflt)
|
---|
140 | > END IF
|
---|
141 | 181,183c189,193
|
---|
142 | < DO l=1,Nfloats(ng)
|
---|
143 | < FLT(ng)%Tinfo(izgrd,l)=Kflt(l)
|
---|
144 | < END DO
|
---|
145 | ---
|
---|
146 | > IF (Lfloats(ng)) THEN
|
---|
147 | > DO l=1,Nfloats(ng)
|
---|
148 | > FLT(ng)%Tinfo(izgrd,l)=Kflt(l)
|
---|
149 | > END DO
|
---|
150 | > END IF
|
---|