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