Changeset 3331
- Timestamp:
- 2012-03-19T15:52:27+01:00 (12 years ago)
- Location:
- branches/2012/dev_r3322_NOCS09_SAS
- Files:
-
- 73 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_r3322_NOCS09_SAS/DOC/TexFiles/Chapters/Chap_SBC.tex
r3294 r3331 431 431 (see the directory NEMOGCM/TOOLS/WEIGHTS). 432 432 433 % ------------------------------------------------------------------------------------------------------------- 434 % Standalone Surface Boundary Condition Scheme 435 % ------------------------------------------------------------------------------------------------------------- 436 \subsection [Standalone Surface Boundary Condition Scheme] {Standalone Surface Boundary Condition Scheme} 437 \label{SAS_iof} 438 439 In some circumstances it may be useful to avoid calculating the 3D temperature, salinity and velocity fields and 440 simply read them in from a previous run. For example: 441 442 \begin{enumerate} 443 \item Multiple runs of the model are required in code development to see the affect of different algorithms in 444 the bulk formulae. 445 \item The effect of different parameter sets in the ice model is to be examined. 446 \end{enumerate} 447 448 The StandAlone Surface scheme provides this utility. 449 A new copy of the model has to be compiled with a configuration based on ORCA2_SAS_LIM. 450 However no namelist parameters need be changed from the settings of the previous run (except perhaps nn{\_}date0) 451 In this configuration, a few routines in the standard model are overriden by new versions. 452 Routines replaced are: 453 454 \begin{enumerate} 455 \item nemogcm.F90 456 457 This routine initialises the rest of the model and repeatedly calls the stp time stepping routine (step.F90) 458 Since the ocean state is not calculated all associated initialisations have been removed. 459 \item step.F90 460 461 The main time stepping routine now only needs to call the sbc routine (and a few utility functions). 462 \item sbcmod.F90 463 464 This has been cut down and now only calculates surface forcing and the ice model required. New surface modules 465 that can function when only the surface level of the ocean state is defined can also be added (e.g. icebergs). 466 \item daymod.F90 467 468 No ocean restarts are read or written (though the ice model restarts are retained), so calls to restart functions 469 have been removed. This also means that the calendar cannot be controlled by time in a restart file, so the user 470 must make sure that nn{\_}date0 in the model namelist is correct for his or her purposes. 471 \item stpctl.F90 472 473 Since there is no free surface solver, references to it have been removed from stp_ctl. 474 \item diawri.F90 475 476 All 3D data have been removed from the output. The surface temperature, salinity and velocity components (which 477 have been read in) are written along with relevant forcing and ice data. 478 \end{enumerate} 479 480 One new routine has been added: 481 482 \begin{enumerate} 483 \item sbcsas.F90 484 This routine initialises the input files needed for reading temperature, salinity and velocity arrays at the surface. 485 These filenames are supplied in namelist namsbc{\_}sas. Unfortunately because of limitations with the \mdl{iom} module, 486 the full 3D fields from the mean files have to be read in and interpolated in time, before using just the top level. 487 Since fldread is used to read in the data, Interpolation on the Fly may be used to change input data resolution. 488 \end{enumerate} 433 489 434 490 % ================================================================ -
branches/2012/dev_r3322_NOCS09_SAS/NEMOGCM/CONFIG/cfg.txt
r3295 r3331 7 7 ORCA2_LIM OPA_SRC LIM_SRC_2 NST_SRC 8 8 ORCA2_OFF_PISCES OPA_SRC OFF_SRC TOP_SRC 9 ORCA2_SAS_LIM OPA_SRC SAS_SRC LIM_SRC_2 10 ORCA2_SAS_LIM3 OPA_SRC SAS_SRC LIM_SRC_3 -
branches/2012/dev_r3322_NOCS09_SAS/NEMOGCM/NEMO/SAS_SRC/nemogcm.F90
r3324 r3331 44 44 USE cla ! cross land advection (tra_cla routine) 45 45 USE domcfg ! domain configuration (dom_cfg routine) 46 USE daymod ! calendar 46 47 USE mppini ! shared/distributed memory setting (mpp_init routine) 47 48 USE domain ! domain initialization (dom_init routine) 48 USE obcini ! open boundary cond. initialization (obc_ini routine)49 USE bdyini ! open boundary cond. initialization (bdy_init routine)50 USE bdydta ! open boundary cond. initialization (bdy_dta_init routine)51 USE bdytides ! open boundary cond. initialization (tide_init routine)52 USE istate ! initial state setting (istate_init routine)53 USE ldfdyn ! lateral viscosity setting (ldfdyn_init routine)54 USE ldftra ! lateral diffusivity setting (ldftra_init routine)55 USE zdfini ! vertical physics setting (zdf_init routine)56 49 USE phycst ! physical constant (par_cst routine) 57 USE trdmod ! momentum/tracers trends (trd_mod_init routine)58 USE asmtrj ! writing out state trajectory59 USE diaptr ! poleward transports (dia_ptr_init routine)60 USE diadct ! sections transports (dia_dct_init routine)61 USE diaobs ! Observation diagnostics (dia_obs_init routine)62 50 USE step ! NEMO time-stepping (stp routine) 63 #if defined key_oasis364 USE cpl_oasis3 ! OASIS3 coupling65 #elif defined key_oasis466 USE cpl_oasis4 ! OASIS4 coupling (not working)67 #endif68 USE c1d ! 1D configuration69 USE step_c1d ! Time stepping loop for the 1D configuration70 #if defined key_top71 USE trcini ! passive tracer initialisation72 #endif73 51 USE lib_mpp ! distributed memory computing 74 52 #if defined key_iomput 75 53 USE mod_ioclient 76 54 #endif 55 USE sbcsas 77 56 78 57 IMPLICIT NONE … … 117 96 #if defined key_agrif 118 97 CALL Agrif_Declare_Var ! AGRIF: set the meshes 119 # if defined key_top120 CALL Agrif_Declare_Var_Top ! AGRIF: set the meshes121 # endif122 98 #endif 123 99 ! check that all process are still there... If some process have an error, … … 131 107 ! !-----------------------! 132 108 istp = nit000 133 #if defined key_c1d 134 DO WHILE ( istp <= nitend .AND. nstop == 0 ) 135 CALL stp_c1d( istp ) 136 istp = istp + 1 137 END DO 109 110 DO WHILE ( istp <= nitend .AND. nstop == 0 ) 111 #if defined key_agrif 112 CALL Agrif_Step( stp ) ! AGRIF: time stepping 138 113 #else 139 IF( lk_asminc ) THEN 140 IF( ln_bkgwri ) CALL asm_bkg_wri( nit000 - 1 ) ! Output background fields 141 IF( ln_trjwri ) CALL asm_trj_wri( nit000 - 1 ) ! Output trajectory fields 142 IF( ln_asmdin ) THEN ! Direct initialization 143 IF( ln_trainc ) CALL tra_asm_inc( nit000 - 1 ) ! Tracers 144 IF( ln_dyninc ) THEN 145 CALL dyn_asm_inc( nit000 - 1 ) ! Dynamics 146 IF ( ln_asmdin ) CALL ssh_wzv ( nit000 - 1 ) ! update vertical velocity 147 ENDIF 148 IF( ln_sshinc ) CALL ssh_asm_inc( nit000 - 1 ) ! SSH 149 ENDIF 150 ENDIF 151 152 DO WHILE ( istp <= nitend .AND. nstop == 0 ) 153 #if defined key_agrif 154 CALL Agrif_Step( stp ) ! AGRIF: time stepping 155 #else 156 CALL stp( istp ) ! standard time stepping 157 #endif 158 istp = istp + 1 159 IF( lk_mpp ) CALL mpp_max( nstop ) 160 END DO 161 #endif 162 163 IF( lk_diaobs ) CALL dia_obs_wri 164 114 CALL stp( istp ) ! standard time stepping 115 #endif 116 istp = istp + 1 117 IF( lk_mpp ) CALL mpp_max( nstop ) 118 END DO 165 119 ! !------------------------! 166 120 ! !== finalize the run ==! … … 175 129 #if defined key_agrif 176 130 CALL Agrif_ParentGrid_To_ChildGrid() 177 IF( lk_diaobs ) CALL dia_obs_wri178 131 IF( nn_timing == 1 ) CALL timing_finalize 179 132 CALL Agrif_ChildGrid_To_ParentGrid() … … 182 135 ! 183 136 CALL nemo_closefile 184 #if defined key_oasis3 || defined key_oasis4185 CALL cpl_prism_finalize ! end coupling and mpp communications with OASIS186 #else187 137 IF( lk_mpp ) CALL mppstop ! end mpp communications 188 #endif189 138 ! 190 139 END SUBROUTINE nemo_gcm … … 218 167 #if defined key_iomput 219 168 IF( Agrif_Root() ) THEN 220 # if defined key_oasis3 || defined key_oasis4221 CALL cpl_prism_init( ilocal_comm ) ! nemo local communicator given by oasis222 # endif223 169 CALL init_ioclient( ilocal_comm ) ! exchange io_server nemo local communicator with the io_server 224 170 ENDIF 225 171 narea = mynode( cltxt, numnam, nstop, ilocal_comm ) ! Nodes selection 226 172 #else 227 # if defined key_oasis3 || defined key_oasis4228 IF( Agrif_Root() ) THEN229 CALL cpl_prism_init( ilocal_comm ) ! nemo local communicator given by oasis230 ENDIF231 narea = mynode( cltxt, numnam, nstop, ilocal_comm ) ! Nodes selection (control print return in cltxt)232 # else233 173 ilocal_comm = 0 234 174 narea = mynode( cltxt, numnam, nstop ) ! Nodes selection (control print return in cltxt) 235 # endif236 175 #endif 237 176 narea = narea + 1 ! mynode return the rank of proc (0 --> jpnij -1 ) … … 277 216 WRITE(numout,*) ' Ocean General Circulation Model' 278 217 WRITE(numout,*) ' version 3.4 (2011) ' 218 WRITE(numout,*) ' StandAlone Surface version (SAS) ' 279 219 WRITE(numout,*) 280 220 WRITE(numout,*) … … 303 243 IF( nn_timing == 1 ) CALL timing_init 304 244 ! 305 ! 306 CALL 307 CALL 308 CALL 309 CALL 245 ! ! General initialization 246 CALL phy_cst ! Physical constants 247 CALL eos_init ! Equation of state 248 CALL dom_cfg ! Domain configuration 249 CALL dom_init ! Domain 310 250 311 251 IF( ln_nnogather ) CALL nemo_northcomms ! Initialise the northfold neighbour lists (must be done after the masks are defined) 312 252 313 253 IF( ln_ctl ) CALL prt_ctl_init ! Print control 314 315 IF( lk_obc ) CALL obc_init ! Open boundaries316 IF( lk_bdy ) CALL bdy_init ! Open boundaries initialisation317 IF( lk_bdy ) CALL bdy_dta_init ! Open boundaries initialisation of external data arrays318 IF( lk_bdy ) CALL tide_init ! Open boundaries initialisation of tidal harmonic forcing319 320 254 CALL flush(numout) 321 CALL dyn_nept_init ! simplified form of Neptune effect 322 CALL flush(numout) 323 324 CALL istate_init ! ocean initial state (Dynamics and tracers) 325 326 ! ! Ocean physics 327 CALL sbc_init ! Forcings : surface module 328 ! ! Vertical physics 329 CALL zdf_init ! namelist read 330 CALL zdf_bfr_init ! bottom friction 331 IF( lk_zdfric ) CALL zdf_ric_init ! Richardson number dependent Kz 332 IF( lk_zdftke ) CALL zdf_tke_init ! TKE closure scheme 333 IF( lk_zdfgls ) CALL zdf_gls_init ! GLS closure scheme 334 IF( lk_zdfkpp ) CALL zdf_kpp_init ! KPP closure scheme 335 IF( lk_zdftmx ) CALL zdf_tmx_init ! tidal vertical mixing 336 IF( lk_zdfddm .AND. .NOT. lk_zdfkpp ) & 337 & CALL zdf_ddm_init ! double diffusive mixing 338 ! ! Lateral physics 339 CALL ldf_tra_init ! Lateral ocean tracer physics 340 CALL ldf_dyn_init ! Lateral ocean momentum physics 341 IF( lk_ldfslp ) CALL ldf_slp_init ! slope of lateral mixing 342 343 ! ! Active tracers 344 CALL tra_qsr_init ! penetrative solar radiation qsr 345 CALL tra_bbc_init ! bottom heat flux 346 IF( lk_trabbl ) CALL tra_bbl_init ! advective (and/or diffusive) bottom boundary layer scheme 347 IF( ln_tradmp ) CALL tra_dmp_init ! internal damping trends 348 CALL tra_adv_init ! horizontal & vertical advection 349 CALL tra_ldf_init ! lateral mixing 350 CALL tra_zdf_init ! vertical mixing and after tracer fields 351 352 ! ! Dynamics 353 CALL dyn_adv_init ! advection (vector or flux form) 354 CALL dyn_vor_init ! vorticity term including Coriolis 355 CALL dyn_ldf_init ! lateral mixing 356 CALL dyn_hpg_init ! horizontal gradient of Hydrostatic pressure 357 CALL dyn_zdf_init ! vertical diffusion 358 CALL dyn_spg_init ! surface pressure gradient 359 360 ! ! Misc. options 361 IF( nn_cla == 1 ) CALL cla_init ! Cross Land Advection 255 256 CALL day_init ! model calendar (using both namelist and restart infos) 257 258 CALL sbc_sas_init ! initialise standalone scheme 259 CALL sbc_init ! Forcings : surface module 362 260 363 #if defined key_top 364 ! ! Passive tracers 365 CALL trc_init 366 #endif 367 ! ! Diagnostics 368 IF( lk_floats ) CALL flo_init ! drifting Floats 369 CALL iom_init ! iom_put initialization 370 IF( lk_diaar5 ) CALL dia_ar5_init ! ar5 diag 371 CALL dia_ptr_init ! Poleward TRansports initialization 372 IF( lk_diadct ) CALL dia_dct_init ! Sections tranports 373 CALL dia_hsb_init ! heat content, salt content and volume budgets 374 CALL trd_mod_init ! Mixed-layer/Vorticity/Integral constraints trends 375 IF( lk_diaobs ) THEN ! Observation & model comparison 376 CALL dia_obs_init ! Initialize observational data 377 CALL dia_obs( nit000 - 1 ) ! Observation operator for restart 378 ENDIF 379 ! ! Assimilation increments 380 IF( lk_asminc ) CALL asm_inc_init ! Initialize assimilation increments 261 CALL iom_init ! iom_put initialization 381 262 IF(lwp) WRITE(numout,*) 'Euler time step switch is ', neuler 382 263 ! … … 464 345 ENDIF 465 346 ! 466 IF( lk_c1d .AND. .NOT.lk_iomput ) CALL ctl_stop( 'nemo_ctl: The 1D configuration must be used ', &467 & 'with the IOM Input/Output manager. ' , &468 & 'Compile with key_iomput enabled' )469 !470 347 END SUBROUTINE nemo_ctl 471 348 … … 483 360 ! 484 361 IF( numstp /= -1 ) CLOSE( numstp ) ! time-step file 485 IF( numsol /= -1 ) CLOSE( numsol ) ! solver file486 362 IF( numnam /= -1 ) CLOSE( numnam ) ! oce namelist 487 363 IF( numnam_ice /= -1 ) CLOSE( numnam_ice ) ! ice namelist 488 364 IF( numevo_ice /= -1 ) CLOSE( numevo_ice ) ! ice variables (temp. evolution) 489 365 IF( numout /= 6 ) CLOSE( numout ) ! standard model output file 490 IF( numdct_vol /= -1 ) CLOSE( numdct_vol ) ! volume transports491 IF( numdct_heat /= -1 ) CLOSE( numdct_heat ) ! heat transports492 IF( numdct_salt /= -1 ) CLOSE( numdct_salt ) ! salt transports493 494 366 ! 495 367 numout = 6 ! redefine numout in case it is used after this point... … … 508 380 USE diawri , ONLY: dia_wri_alloc 509 381 USE dom_oce , ONLY: dom_oce_alloc 510 USE ldfdyn_oce, ONLY: ldfdyn_oce_alloc511 USE ldftra_oce, ONLY: ldftra_oce_alloc512 USE trc_oce , ONLY: trc_oce_alloc513 382 ! 514 383 INTEGER :: ierr … … 518 387 ierr = ierr + dia_wri_alloc () 519 388 ierr = ierr + dom_oce_alloc () ! ocean domain 520 ierr = ierr + ldfdyn_oce_alloc() ! ocean lateral physics : dynamics521 ierr = ierr + ldftra_oce_alloc() ! ocean lateral physics : tracers522 ierr = ierr + zdf_oce_alloc () ! ocean vertical physics523 !524 389 ierr = ierr + lib_mpp_alloc (numout) ! mpp exchanges 525 ierr = ierr + trc_oce_alloc () ! shared TRC / TRA arrays526 390 ! 527 391 IF( lk_mpp ) CALL mpp_sum( ierr )
Note: See TracChangeset
for help on using the changeset viewer.