Changeset 4978 for branches/2014/dev_r4765_CNRS_agrif
- Timestamp:
- 2014-12-08T17:03:48+01:00 (9 years ago)
- Location:
- branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/NST_SRC/agrif_oce.F90
r4954 r4978 33 33 REAL(wp), PUBLIC :: visc_dyn !: sponge coeff. for dynamics 34 34 35 LOGICAL , PUBLIC :: spongedoneT = .FALSE. !: tracer sponge layer indicator 36 LOGICAL , PUBLIC :: spongedoneU = .FALSE. !: dynamics sponge layer indicator 37 LOGICAL , PUBLIC :: lk_agrif_fstep = .TRUE. !: if true: first step 35 LOGICAL , PUBLIC :: spongedoneT = .FALSE. !: tracer sponge layer indicator 36 LOGICAL , PUBLIC :: spongedoneU = .FALSE. !: dynamics sponge layer indicator 37 LOGICAL , PUBLIC :: lk_agrif_fstep = .TRUE. !: if true: first step 38 LOGICAL , PUBLIC :: lk_agrif_doupd = .TRUE. !: if true: send update from current grid 39 LOGICAL , PUBLIC :: lk_agrif_debug = .FALSE. !: if true: print debugging info 38 40 39 41 LOGICAL , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tabspongedone_tsn -
branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/NST_SRC/agrif_opa_update.F90
r4875 r4978 29 29 CONTAINS 30 30 31 SUBROUTINE Agrif_Update_Tra( kt)31 RECURSIVE SUBROUTINE Agrif_Update_Tra( ) 32 32 !!--------------------------------------------- 33 33 !! *** ROUTINE Agrif_Update_Tra *** 34 34 !!--------------------------------------------- 35 INTEGER, INTENT(in) :: kt 36 !!--------------------------------------------- 37 ! 38 IF((Agrif_NbStepint() .NE. (Agrif_irhot()-1)).AND.(kt /= 0)) RETURN 39 #if defined TWO_WAY 35 ! 36 IF (Agrif_Root().OR.(.NOT.lk_agrif_doupd)) RETURN 37 ! 38 #if defined TWO_WAY 39 IF (lwp.AND.lk_agrif_debug) Write(*,*) 'Update tracers from grid Number',Agrif_Fixed(), 'nbcline', nbcline 40 40 41 Agrif_UseSpecialValueInUpdate = .TRUE. 41 42 Agrif_SpecialValueFineGrid = 0. … … 56 57 ! 57 58 Agrif_UseSpecialValueInUpdate = .FALSE. 59 ! 60 ! Do recursive update: 61 CALL Agrif_ChildGrid_To_ParentGrid() 62 CALL Agrif_Update_Tra() 63 CALL Agrif_ParentGrid_To_ChildGrid() 64 ! 58 65 #endif 59 66 ! 60 67 END SUBROUTINE Agrif_Update_Tra 61 68 62 SUBROUTINE Agrif_Update_Dyn( kt)69 RECURSIVE SUBROUTINE Agrif_Update_Dyn( ) 63 70 !!--------------------------------------------- 64 71 !! *** ROUTINE Agrif_Update_Dyn *** 65 72 !!--------------------------------------------- 66 INTEGER, INTENT(in) :: kt 67 !!--------------------------------------------- 68 ! 69 IF ((Agrif_NbStepint() .NE. (Agrif_irhot()-1)).AND.(kt /= 0)) Return 73 ! 74 IF (Agrif_Root().OR.(.NOT.lk_agrif_doupd)) RETURN 75 ! 70 76 #if defined TWO_WAY 77 IF (lwp.AND.lk_agrif_debug) Write(*,*) 'Update momentum from grid Number',Agrif_Fixed(), 'nbcline', nbcline 78 71 79 Agrif_UseSpecialValueInUpdate = .FALSE. 72 80 Agrif_SpecialValueFineGrid = 0. … … 133 141 ! 134 142 #endif 143 ! 144 ! Do recursive update: 145 CALL Agrif_ChildGrid_To_ParentGrid() 146 CALL Agrif_Update_Dyn() 147 CALL Agrif_ParentGrid_To_ChildGrid() 148 ! 135 149 END SUBROUTINE Agrif_Update_Dyn 136 150 -
branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/NST_SRC/agrif_user.F90
r4954 r4978 280 280 ENDIF 281 281 ! 282 CALL Agrif_Update_tra(0) 283 CALL Agrif_Update_dyn(0) 282 ! Do update at initialisation because not done before writing restarts 283 ! This would indeed change boundary conditions values at initial time 284 ! hence produce restartability issues. 285 ! Note that update below is recursive (with lk_agrif_doupd=T): 286 ! 287 ! JC: I am not sure if Agrif_MaxLevel() is the "relative" 288 ! or the absolute maximum nesting level...TBC 289 IF ( Agrif_Level().EQ.Agrif_MaxLevel() ) THEN 290 ! NB: Do tracers first, dynamics after because nbcline incremented in dynamics 291 CALL Agrif_Update_tra() 292 CALL Agrif_Update_dyn() 293 ENDIF 294 ! 284 295 # if defined key_zdftke 285 296 IF( ln_agrif_tke ) THEN … … 377 388 ! CALL Agrif_Set_bc(un_sponge_id,(/-2*Agrif_irhox()-1,0/)) 378 389 ! CALL Agrif_Set_bc(vn_sponge_id,(/-2*Agrif_irhox()-1,0/)) 379 CALL Agrif_Set_bc(tsn_sponge_id,(/-nn_sponge_len*Agrif_irhox() ,0/))380 CALL Agrif_Set_bc(un_sponge_id ,(/-nn_sponge_len*Agrif_irhox() ,0/))381 CALL Agrif_Set_bc(vn_sponge_id ,(/-nn_sponge_len*Agrif_irhox() ,0/))390 CALL Agrif_Set_bc(tsn_sponge_id,(/-nn_sponge_len*Agrif_irhox()-1,0/)) 391 CALL Agrif_Set_bc(un_sponge_id ,(/-nn_sponge_len*Agrif_irhox()-1,0/)) 392 CALL Agrif_Set_bc(vn_sponge_id ,(/-nn_sponge_len*Agrif_irhox()-1,0/)) 382 393 383 394 CALL Agrif_Set_bc(sshn_id,(/0,0/)) … … 660 671 CALL Agrif_Set_bc(trn_id,(/0,1/)) 661 672 ! CALL Agrif_Set_bc(trn_sponge_id,(/-3*Agrif_irhox(),0/)) 662 CALL Agrif_Set_bc(trn_sponge_id,(/-nn_sponge_len*Agrif_irhox() ,0/))673 CALL Agrif_Set_bc(trn_sponge_id,(/-nn_sponge_len*Agrif_irhox()-1,0/)) 663 674 664 675 ! 5. Update type -
branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/OPA_SRC/step.F90
r4954 r4978 77 77 #if defined key_agrif 78 78 kstp = nit000 + Agrif_Nb_Step() 79 IF ( Agrif_Root() .and. lwp) Write(*,*) '---' 80 IF (lwp) Write(*,*) 'Grid Number',Agrif_Fixed(),' time step ',kstp 79 IF ( lk_agrif_debug ) THEN 80 IF ( Agrif_Root() .and. lwp) Write(*,*) '---' 81 IF (lwp) Write(*,*) 'Grid Number',Agrif_Fixed(),' time step ',kstp, 'int tstep',Agrif_NbStepint() 82 ENDIF 83 81 84 IF ( kstp == (nit000 + 1) ) lk_agrif_fstep = .FALSE. 85 86 IF ( Agrif_NbStepint() .EQ. (Agrif_irhot()-1)) THEN 87 lk_agrif_doupd = .TRUE. 88 ELSE 89 lk_agrif_doupd = .FALSE. 90 ENDIF 91 82 92 # if defined key_iomput 83 93 IF( Agrif_Nbstepint() == 0 ) CALL iom_swap( "nemo" ) … … 298 308 CALL ssh_swp( kstp ) ! swap of sea surface height 299 309 IF( lk_vvl ) CALL dom_vvl_sf_swp( kstp ) ! swap of vertical scale factors 300 301 #if defined key_agrif302 ! AGRIF update303 IF (.NOT.Agrif_Root()) THEN304 CALL Agrif_Update_Tra( kstp )! Update active tracers305 CALL Agrif_Update_Dyn( kstp )! Update momentum306 ENDIF307 #endif308 310 ! 309 311 IF( ln_diahsb ) CALL dia_hsb( kstp ) ! - ML - global conservation diagnostics 310 312 IF( lk_diaobs ) CALL dia_obs( kstp ) ! obs-minus-model (assimilation) diagnostics (call after dynamics update) 313 314 #if defined key_agrif 315 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 316 ! AGRIF update (TWO WAY) 317 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 318 IF ( Agrif_Level().EQ.Agrif_MaxLevel() ) THEN 319 CALL Agrif_Update_Tra() ! Update active tracers 320 CALL Agrif_Update_Dyn() ! Update momentum 321 ENDIF 322 #endif 311 323 312 324 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 348 360 ! 349 361 IF( nn_timing == 1 .AND. kstp == nit000 ) CALL timing_reset 350 ! 351 #if defined key_agrif 352 CALL Agrif_Integrate_ChildGrids( stp )353 #endif 362 ! 363 #if defined key_agrif 364 CALL Agrif_Integrate_ChildGrids( stp ) 365 #endif 354 366 ! 355 367 END SUBROUTINE stp
Note: See TracChangeset
for help on using the changeset viewer.