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.
2021WP/KNL-01_Sibylle_RK3_stage1 (diff) – NEMO

Changes between Version 9 and Version 10 of 2021WP/KNL-01_Sibylle_RK3_stage1


Ignore:
Timestamp:
2021-03-01T19:28:48+01:00 (3 years ago)
Author:
techene
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • 2021WP/KNL-01_Sibylle_RK3_stage1

    v9 v10  
    7777=== Implementation details 
    7878 
    79 ''' Code preparation r14418 '''[[BR]] 
    80 3D velocity can be a pointer 
     79''' Code preparation  '''[[BR]] 
     80r14418 Allow an advective velocity to be passed as an argument. [[BR]] 
     813D velocity can be a pointer. 
    8182{{{ 
    8283OCE 
     
    133134}}} 
    134135 
    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. 
     136Results 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 
     143r14428 Allow vertical advection to be de-activated with an optionnal input argument : no_zad. [[BR]] 
     144 
     1453D velocity added as an input argument of advective routines passed through dyn_adv 
     146{{{ 
     147OCE 
     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 
     189Gurvan added a loop optimisation for dynzad.F90 
     190{{{ 
     191OCE 
     192 |--DYN 
     193     |-- dynzad.F90 
     194All the loops are now gather in a single one.   
     195 
     196}}} 
     197 
     198 
     199''' Baroclinic mode ''' 
     200 
    136201=== Documentation updates 
    137202