New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 9979 for NEMO – NEMO

Changeset 9979 for NEMO


Ignore:
Timestamp:
2018-07-20T15:16:19+02:00 (6 years ago)
Author:
acc
Message:

Branch: dev_r9956_ENHANCE05_ZAD_AIMP. Fixes to dynzdf.F90 so that it gives the same results with or without ln_zad_Aimp set true if vertical velocity partitioning is disabled

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2018/dev_r9956_ENHANCE05_ZAD_AIMP/src/OCE/DYN/dynzdf.F90

    r9976 r9979  
    173173                        zWu  = 0.25_wp * (   wi(ji,jj,jk  ) + wi(ji+1,jj,jk  )   & 
    174174                           &               + wi(ji,jj,jk+1) + wi(ji+1,jj,jk+1)   ) 
    175                         zwi(ji,jj,jk) = - zdt * ( zzwi + MIN( zWu, 0._wp ) * z1_e3un ) 
    176                         zws(ji,jj,jk) = - zdt * ( zzws - MAX( zWu, 0._wp ) * z1_e3un ) 
     175                        zwi(ji,jj,jk) = - 1._wp * ( zzwi + MIN( zWu, 0._wp ) * z1_e3un ) 
     176                        zws(ji,jj,jk) = - 1._wp * ( zzws - MAX( zWu, 0._wp ) * z1_e3un ) 
    177177                        zwd(ji,jj,jk) = 1._wp + zdt * ( zzwi + zzws + ( - MAX( zWu, 0._wp ) + MIN( zWu, 0._wp ) ) * z1_e3un ) 
    178178                     END DO 
     
    190190                        zWu  = 0.25_wp * (   wi(ji,jj,jk  ) + wi(ji+1,jj,jk  )   & 
    191191                           &               + wi(ji,jj,jk+1) + wi(ji+1,jj,jk+1)   ) 
    192                         zwi(ji,jj,jk) = - zdt * ( zzwi + MIN( zWu, 0._wp ) * z1_e3un ) 
    193                         zws(ji,jj,jk) = - zdt * ( zzws - MAX( zWu, 0._wp ) * z1_e3un ) 
     192                        zwi(ji,jj,jk) = - 1._wp * ( zzwi + MIN( zWu, 0._wp ) * z1_e3un ) 
     193                        zws(ji,jj,jk) = - 1._wp * ( zzws - MAX( zWu, 0._wp ) * z1_e3un ) 
    194194                        zwd(ji,jj,jk) = 1._wp + zdt * ( zzwi + zzws + ( - MAX( zWu, 0._wp ) + MIN( zWu, 0._wp ) ) * z1_e3un ) 
    195195                     END DO 
     
    212212                        zwi(ji,jj,jk) = - zdt * ( zzwi +  MIN( zWui, 0._wp ) )  
    213213                        zws(ji,jj,jk) = - zdt * ( zzws -  MAX( zWus, 0._wp ) ) 
    214                         zwd(ji,jj,jk) = 1._wp + zdt * ( zzwi + zzws - MAX( zWui, 0._wp ) + MIN( zWus, 0._wp ) ) 
     214                        zwd(ji,jj,jk) = 1._wp + zzwi + zzws - zdt * ( MAX( zWui, 0._wp ) - MIN( zWus, 0._wp ) ) 
    215215                     END DO 
    216216                  END DO 
     
    227227                        zwi(ji,jj,jk) = - zdt * ( zzwi +  MIN( zWui, 0._wp ) )  
    228228                        zws(ji,jj,jk) = - zdt * ( zzws -  MAX( zWus, 0._wp ) ) 
    229                         zwd(ji,jj,jk) = 1._wp + zdt * ( zzwi + zzws - MAX( zWui, 0._wp ) + MIN( zWus, 0._wp ) ) 
     229                        zwd(ji,jj,jk) = 1._wp + zzwi + zzws - zdt * ( MAX( zWui, 0._wp ) - MIN( zWus, 0._wp ) ) 
    230230                     END DO 
    231231                  END DO 
     
    240240                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    241241                     ze3ua =  ( 1._wp - r_vvl ) * e3u_n(ji,jj,jk) + r_vvl * e3u_a(ji,jj,jk)   ! after scale factor at U-point 
    242                      zzwi = - zdt * ( avm(ji+1,jj,jk  ) + avm(ji,jj,jk  ) + akzu(ji,jj,jk  ) )   & 
     242                     zzwi = ( avm(ji+1,jj,jk  ) + avm(ji,jj,jk  ) + akzu(ji,jj,jk  ) )   & 
    243243                        &         / ( ze3ua * e3uw_a(ji,jj,jk  ) ) * wumask(ji,jj,jk  ) 
    244                      zzws = - zdt * ( avm(ji+1,jj,jk+1) + avm(ji,jj,jk+1) + akzu(ji,jj,jk+1) )   & 
     244                     zzws = ( avm(ji+1,jj,jk+1) + avm(ji,jj,jk+1) + akzu(ji,jj,jk+1) )   & 
    245245                        &         / ( ze3ua * e3uw_a(ji,jj,jk+1) ) * wumask(ji,jj,jk+1) 
    246                      zwi(ji,jj,jk) = zzwi 
    247                      zws(ji,jj,jk) = zzws 
    248                      zwd(ji,jj,jk) = 1._wp - zzwi - zzws 
     246                     zwi(ji,jj,jk) = - zdt * zzwi 
     247                     zws(ji,jj,jk) = - zdt * zzws 
     248                     zwd(ji,jj,jk) = 1._wp + zzwi + zzws 
    249249                  END DO 
    250250               END DO 
     
    255255                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    256256                     ze3ua =  ( 1._wp - r_vvl ) * e3u_n(ji,jj,jk) + r_vvl * e3u_a(ji,jj,jk)   ! after scale factor at U-point 
    257                      zzwi = - zdt * ( avm(ji+1,jj,jk  ) + avm(ji,jj,jk  ) ) / ( ze3ua * e3uw_a(ji,jj,jk  ) ) * wumask(ji,jj,jk  ) 
    258                      zzws = - zdt * ( avm(ji+1,jj,jk+1) + avm(ji,jj,jk+1) ) / ( ze3ua * e3uw_a(ji,jj,jk+1) ) * wumask(ji,jj,jk+1) 
    259                      zwi(ji,jj,jk) = zzwi 
    260                      zws(ji,jj,jk) = zzws 
    261                      zwd(ji,jj,jk) = 1._wp - zzwi - zzws 
     257                     zzwi = ( avm(ji+1,jj,jk  ) + avm(ji,jj,jk  ) ) / ( ze3ua * e3uw_a(ji,jj,jk  ) ) * wumask(ji,jj,jk  ) 
     258                     zzws = ( avm(ji+1,jj,jk+1) + avm(ji,jj,jk+1) ) / ( ze3ua * e3uw_a(ji,jj,jk+1) ) * wumask(ji,jj,jk+1) 
     259                     zwi(ji,jj,jk) = - zdt * zzwi 
     260                     zws(ji,jj,jk) = - zdt * zzws 
     261                     zwd(ji,jj,jk) = 1._wp + zzwi + zzws 
    262262                  END DO 
    263263               END DO 
     
    368368                        zWv  = 0.25_wp * (   wi(ji,jj,jk  ) + wi(ji,jj+1,jk  )   & 
    369369                           &               + wi(ji,jj,jk+1) + wi(ji,jj+1,jk+1)   ) 
    370                         zwi(ji,jj,jk) = - zdt * ( zzwi + MIN( zWv, 0._wp ) * z1_e3vn ) 
    371                         zws(ji,jj,jk) = - zdt * ( zzws - MAX( zWv, 0._wp ) * z1_e3vn ) 
     370                        zwi(ji,jj,jk) = - 1._wp * ( zzwi + MIN( zWv, 0._wp ) * z1_e3vn ) 
     371                        zws(ji,jj,jk) = - 1._wp * ( zzws - MAX( zWv, 0._wp ) * z1_e3vn ) 
    372372                        zwd(ji,jj,jk) = 1._wp + zdt * ( zzwi + zzws + ( - MAX( zWv, 0._wp ) + MIN( zWv, 0._wp ) ) * z1_e3vn ) 
    373373                     END DO 
     
    385385                        zWv  = 0.25_wp * (   wi(ji,jj,jk  ) + wi(ji,jj+1,jk  )   & 
    386386                           &               + wi(ji,jj,jk+1) + wi(ji,jj+1,jk+1)   ) 
    387                         zwi(ji,jj,jk) = - zdt * ( zzwi + MIN( zWv, 0._wp ) * z1_e3vn ) 
    388                         zws(ji,jj,jk) = - zdt * ( zzws - MAX( zWv, 0._wp ) * z1_e3vn ) 
     387                        zwi(ji,jj,jk) = - 1._wp * ( zzwi + MIN( zWv, 0._wp ) * z1_e3vn ) 
     388                        zws(ji,jj,jk) = - 1._wp * ( zzws - MAX( zWv, 0._wp ) * z1_e3vn ) 
    389389                        zwd(ji,jj,jk) = 1._wp + zdt * ( zzwi + zzws + ( - MAX( zWv, 0._wp ) + MIN( zWv, 0._wp ) ) * z1_e3vn ) 
    390390                     END DO 
     
    405405                        zWvi = 0.5_wp * ( wi(ji,jj,jk  ) + wi(ji,jj+1,jk  ) ) 
    406406                        zWvs = 0.5_wp * ( wi(ji,jj,jk+1) + wi(ji,jj+1,jk+1) ) 
    407                         zwi(ji,jj,jk) = - zdt * ( zzwi +  MIN( zWvi, 0._wp ) )  
    408                         zws(ji,jj,jk) = - zdt * ( zzws -  MAX( zWvs, 0._wp ) ) 
     407                        zwi(ji,jj,jk) = - 1._wp * ( zzwi +  MIN( zWvi, 0._wp ) )  
     408                        zws(ji,jj,jk) = - 1._wp * ( zzws -  MAX( zWvs, 0._wp ) ) 
    409409                        zwd(ji,jj,jk) = 1._wp + zdt * ( zzwi + zzws - MAX( zWvi, 0._wp ) + MIN( zWvs, 0._wp ) ) 
    410410                     END DO 
     
    420420                        zWvi = 0.5_wp * ( wi(ji,jj,jk  ) + wi(ji,jj+1,jk  ) ) 
    421421                        zWvs = 0.5_wp * ( wi(ji,jj,jk+1) + wi(ji,jj+1,jk+1) ) 
    422                         zwi(ji,jj,jk) = - zdt * ( zzwi +  MIN( zWvi, 0._wp ) )  
    423                         zws(ji,jj,jk) = - zdt * ( zzws -  MAX( zWvs, 0._wp ) ) 
     422                        zwi(ji,jj,jk) = - 1._wp * ( zzwi +  MIN( zWvi, 0._wp ) )  
     423                        zws(ji,jj,jk) = - 1._wp * ( zzws -  MAX( zWvs, 0._wp ) ) 
    424424                        zwd(ji,jj,jk) = 1._wp + zdt * ( zzwi + zzws - MAX( zWvi, 0._wp ) + MIN( zWvs, 0._wp ) ) 
    425425                     END DO 
Note: See TracChangeset for help on using the changeset viewer.