135 | | Results should be exactly the same as the ones from from the trunk. It was not the case for an OVERFLOW. The use of ln_wAimp=T changes ww at the truncature in diawri.F90, and that produces a small error. This has been corrected. |
| 136 | Results should be exactly the same as the ones from from the trunk. It was not the case for an OVERFLOW. The use of ln_wAimp=T changes ww at the truncature in diawri.F90, and that produces a small error. This has been corrected.[[BR]] |
| 137 | |
| 138 | |
| 139 | |
| 140 | |
| 141 | |
| 142 | |
| 143 | r14428 Allow vertical advection to be de-activated with an optionnal input argument : no_zad. [[BR]] |
| 144 | |
| 145 | 3D velocity added as an input argument of advective routines passed through dyn_adv |
| 146 | {{{ |
| 147 | OCE |
| 148 | |--DYN |
| 149 | |-- dynadv.F90 |
| 150 | SUBROUTINE dyn_adv( kt, Kbb, Kmm, puu, pvv, Krhs, pau, pav, paw, no_zad ) |
| 151 | ... |
| 152 | CALL dyn_adv_cen2( kt , Kmm, puu, pvv, Krhs, pau, pav, paw, no_zad ) ! 2nd order centered scheme |
| 153 | CALL dyn_adv_ubs ( kt , Kbb, Kmm, puu, pvv, Krhs, pau, pav, paw, no_zad ) ! 3rd order UBS scheme (UP3) |
| 154 | |-- dynadv_cen2.F90 |
| 155 | SUBROUTINE dyn_adv_cen2( kt, Kmm, puu, pvv, Krhs, pau, pav, paw, no_zad ) |
| 156 | ... |
| 157 | IF( PRESENT( no_zad ) ) THEN !== No vertical advection ==! (except if linear free surface) |
| 158 | IF( ln_linssh ) THEN ! linear free surface: advection through the surface z=0 |
| 159 | DO_2D( 0, 0, 0, 0 ) |
| 160 | zzu = 0.5_wp * ( e1e2t(ji,jj) * zpt_w(ji,jj,1) + e1e2t(ji+1,jj) * zpt_w(ji+1,jj,1) ) * puu(ji,jj,1,Kmm) |
| 161 | zzv = 0.5_wp * ( e1e2t(ji,jj) * zpt_w(ji,jj,1) + e1e2t(ji,jj+1) * zpt_w(ji,jj+1,1) ) * pvv(ji,jj,1,Kmm) |
| 162 | puu(ji,jj,1,Krhs) = puu(ji,jj,1,Krhs) - zzu * r1_e1e2u(ji,jj) & |
| 163 | & / e3u(ji,jj,1,Kmm) |
| 164 | pvv(ji,jj,1,Krhs) = pvv(ji,jj,1,Krhs) - zzv * r1_e1e2v(ji,jj) & |
| 165 | & / e3v(ji,jj,1,Kmm) |
| 166 | END_2D |
| 167 | ENDIF |
| 168 | ! |
| 169 | ELSE !== Vertical advection ==! |
| 170 | ... |
| 171 | |-- dynadv_ubs.F90 |
| 172 | SUBROUTINE dyn_adv_ubs( kt, Kbb, Kmm, puu, pvv, Krhs, pau, pav, paw, no_zad ) |
| 173 | ... |
| 174 | IF( PRESENT( no_zad ) ) THEN !== No vertical advection ==! (except if linear free surface) |
| 175 | IF( ln_linssh ) THEN ! linear free surface: advection through the surface z=0 |
| 176 | DO_2D( 0, 0, 0, 0 ) |
| 177 | zzu = 0.5_wp * ( e1e2t(ji,jj) * zpt_w(ji,jj,1) + e1e2t(ji+1,jj) * zpt_w(ji+1,jj,1) ) * puu(ji,jj,1,Kmm) |
| 178 | zzv = 0.5_wp * ( e1e2t(ji,jj) * zpt_w(ji,jj,1) + e1e2t(ji,jj+1) * zpt_w(ji,jj+1,1) ) * pvv(ji,jj,1,Kmm) |
| 179 | puu(ji,jj,1,Krhs) = puu(ji,jj,1,Krhs) - zzu * r1_e1e2u(ji,jj) & |
| 180 | & / e3u(ji,jj,1,Kmm) |
| 181 | pvv(ji,jj,1,Krhs) = pvv(ji,jj,1,Krhs) - zzv * r1_e1e2v(ji,jj) & |
| 182 | & / e3v(ji,jj,1,Kmm) |
| 183 | END_2D |
| 184 | ENDIF |
| 185 | ! |
| 186 | ELSE !== Vertical advection ==! |
| 187 | }}} |
| 188 | |
| 189 | Gurvan added a loop optimisation for dynzad.F90 |
| 190 | {{{ |
| 191 | OCE |
| 192 | |--DYN |
| 193 | |-- dynzad.F90 |
| 194 | All the loops are now gather in a single one. |
| 195 | |
| 196 | }}} |
| 197 | |
| 198 | |
| 199 | ''' Baroclinic mode ''' |
| 200 | |