- Timestamp:
- 2012-11-19T16:24:13+01:00 (11 years ago)
- Location:
- branches/2012/dev_NOC_2012_rev3555
- Files:
-
- 4 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_NOC_2012_rev3555/DOC/TexFiles/Chapters/Chap_SBC.tex
r3294 r3607 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_NOC_2012_rev3555/NEMOGCM/CONFIG/cfg.txt
r3295 r3607 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 NST_SRC 10 ORCA2_SAS_LIM3 OPA_SRC SAS_SRC LIM_SRC_3 NST_SRC -
branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r3294 r3607 76 76 !! 77 77 !! ** Method : Read the namsbc namelist and set derived parameters 78 !! Call init routines for all other SBC modules that have one 78 79 !! 79 80 !! ** Action : - read namsbc parameters … … 200 201 ENDIF 201 202 203 !!---------------------------------------------------------------------- 204 !! Other SBC modules to initialise come here 205 !!---------------------------------------------------------------------- 206 207 CALL sbc_ssm_init 208 202 209 IF( nn_ice == 4 ) CALL cice_sbc_init (nsbc) 203 210 ! 211 !!---------------------------------------------------------------------- 204 212 END SUBROUTINE sbc_init 205 213 -
branches/2012/dev_NOC_2012_rev3555/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90
r3294 r3607 27 27 PUBLIC sbc_ssm ! routine called by step.F90 28 28 29 LOGICAL, SAVE :: l_ssm_mean = .FALSE. ! keep track of whether means have been read 30 ! from restart file 31 29 32 !! * Substitutions 30 33 # include "domzgr_substitute.h90" … … 54 57 !!--------------------------------------------------------------------- 55 58 ! ! ---------------------------------------- ! 56 IF( nn_fsbc == 1 ) THEN ! 59 IF( nn_fsbc == 1 ) THEN ! Instantaneous surface fields ! 57 60 ! ! ---------------------------------------- ! 58 IF( kt == nit000 ) THEN59 IF(lwp) WRITE(numout,*)60 IF(lwp) WRITE(numout,*) 'sbc_ssm : sea surface mean fields, nn_fsbc=1 : instantaneous values'61 IF(lwp) WRITE(numout,*) '~~~~~~~ '62 ENDIF63 !64 61 ssu_m(:,:) = ub(:,:,1) 65 62 ssv_m(:,:) = vb(:,:,1) … … 73 70 ! 74 71 ELSE 75 ! ! ---------------------------------------- !76 IF( kt == nit000 ) THEN ! Initialisation: 1st time-step!77 ! ! ---------------------------------------- !72 ! ! ----------------------------------------------- ! 73 IF( kt == nit000 && .NOT. l_ssm_mean ) THEN ! Initialisation: 1st time-step, no input means ! 74 ! ! ----------------------------------------------- ! 78 75 IF(lwp) WRITE(numout,*) 79 IF(lwp) WRITE(numout,*) 'sbc_ssm : sea surface mean fields' 80 ! 81 IF( ln_rstart .AND. iom_varid( numror, 'nn_fsbc', ldstop = .FALSE. ) > 0 ) THEN 82 CALL iom_get( numror , 'nn_fsbc', zf_sbc ) ! sbc frequency of previous run 83 CALL iom_get( numror, jpdom_autoglo, 'ssu_m' , ssu_m ) ! sea surface mean velocity (T-point) 84 CALL iom_get( numror, jpdom_autoglo, 'ssv_m' , ssv_m ) ! " " velocity (V-point) 85 CALL iom_get( numror, jpdom_autoglo, 'sst_m' , sst_m ) ! " " temperature (T-point) 86 CALL iom_get( numror, jpdom_autoglo, 'sss_m' , sss_m ) ! " " salinity (T-point) 87 CALL iom_get( numror, jpdom_autoglo, 'ssh_m' , ssh_m ) ! " " height (T-point) 88 ! 89 IF( zf_sbc /= REAL( nn_fsbc, wp ) ) THEN ! nn_fsbc has changed between 2 runs 90 IF(lwp) WRITE(numout,*) '~~~~~~~ restart with a change in the frequency of mean ', & 91 & 'from ', zf_sbc, ' to ', nn_fsbc 92 zcoef = REAL( nn_fsbc - 1, wp ) / zf_sbc 93 ssu_m(:,:) = zcoef * ssu_m(:,:) 94 ssv_m(:,:) = zcoef * ssv_m(:,:) 95 sst_m(:,:) = zcoef * sst_m(:,:) 96 sss_m(:,:) = zcoef * sss_m(:,:) 97 ssh_m(:,:) = zcoef * ssh_m(:,:) 98 ELSE 99 IF(lwp) WRITE(numout,*) '~~~~~~~ mean fields read in the ocean restart file' 100 ENDIF 101 ELSE 102 IF(lwp) WRITE(numout,*) '~~~~~~~ mean fields initialised to instantaneous values' 103 zcoef = REAL( nn_fsbc - 1, wp ) 104 ssu_m(:,:) = zcoef * ub(:,:,1) 105 ssv_m(:,:) = zcoef * vb(:,:,1) 106 sst_m(:,:) = zcoef * tsn(:,:,1,jp_tem) 107 sss_m(:,:) = zcoef * tsn(:,:,1,jp_sal) 108 ! ! removed inverse barometer ssh when Patm forcing is used 109 IF( ln_apr_dyn ) THEN ; ssh_m(:,:) = zcoef * ( sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) ) 110 ELSE ; ssh_m(:,:) = zcoef * sshn(:,:) 111 ENDIF 112 76 IF(lwp) WRITE(numout,*) '~~~~~~~ mean fields initialised to instantaneous values' 77 zcoef = REAL( nn_fsbc - 1, wp ) 78 ssu_m(:,:) = zcoef * ub(:,:,1) 79 ssv_m(:,:) = zcoef * vb(:,:,1) 80 sst_m(:,:) = zcoef * tsn(:,:,1,jp_tem) 81 sss_m(:,:) = zcoef * tsn(:,:,1,jp_sal) 82 ! ! removed inverse barometer ssh when Patm forcing is used 83 IF( ln_apr_dyn ) THEN ; ssh_m(:,:) = zcoef * ( sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) ) 84 ELSE ; ssh_m(:,:) = zcoef * sshn(:,:) 113 85 ENDIF 114 86 ! ! ---------------------------------------- ! … … 165 137 END SUBROUTINE sbc_ssm 166 138 139 SUBROUTINE sbc_ssm_init 140 !!---------------------------------------------------------------------- 141 !! *** ROUTINE sbc_ssm_init *** 142 !! 143 !! ** Purpose : Initialisation of the sbc data 144 !! 145 !! ** Action : - read parameters 146 !!---------------------------------------------------------------------- 147 REAL(wp) :: zcoef ! local scalar 148 !!---------------------------------------------------------------------- 149 150 IF( nn_fsbc == 1 ) THEN 151 ! 152 IF(lwp) WRITE(numout,*) 153 IF(lwp) WRITE(numout,*) 'sbc_ssm : sea surface mean fields, nn_fsbc=1 : instantaneous values' 154 IF(lwp) WRITE(numout,*) '~~~~~~~ ' 155 ! 156 ELSE 157 ! 158 IF(lwp) WRITE(numout,*) 159 IF(lwp) WRITE(numout,*) 'sbc_ssm : sea surface mean fields' 160 IF(lwp) WRITE(numout,*) '~~~~~~~ ' 161 ! 162 IF( ln_rstart .AND. iom_varid( numror, 'nn_fsbc', ldstop = .FALSE. ) > 0 ) THEN 163 l_ssm_mean = .TRUE. 164 CALL iom_get( numror , 'nn_fsbc', zf_sbc ) ! sbc frequency of previous run 165 CALL iom_get( numror, jpdom_autoglo, 'ssu_m' , ssu_m ) ! sea surface mean velocity (T-point) 166 CALL iom_get( numror, jpdom_autoglo, 'ssv_m' , ssv_m ) ! " " velocity (V-point) 167 CALL iom_get( numror, jpdom_autoglo, 'sst_m' , sst_m ) ! " " temperature (T-point) 168 CALL iom_get( numror, jpdom_autoglo, 'sss_m' , sss_m ) ! " " salinity (T-point) 169 CALL iom_get( numror, jpdom_autoglo, 'ssh_m' , ssh_m ) ! " " height (T-point) 170 ! 171 IF( zf_sbc /= REAL( nn_fsbc, wp ) ) THEN ! nn_fsbc has changed between 2 runs 172 IF(lwp) WRITE(numout,*) '~~~~~~~ restart with a change in the frequency of mean ', & 173 & 'from ', zf_sbc, ' to ', nn_fsbc 174 zcoef = REAL( nn_fsbc - 1, wp ) / zf_sbc 175 ssu_m(:,:) = zcoef * ssu_m(:,:) 176 ssv_m(:,:) = zcoef * ssv_m(:,:) 177 sst_m(:,:) = zcoef * sst_m(:,:) 178 sss_m(:,:) = zcoef * sss_m(:,:) 179 ssh_m(:,:) = zcoef * ssh_m(:,:) 180 ELSE 181 IF(lwp) WRITE(numout,*) '~~~~~~~ mean fields read in the ocean restart file' 182 ENDIF 183 ENDIF 184 ENDIF 185 ! 186 END SUBROUTINE sbc_ssm_init 187 167 188 !!====================================================================== 168 189 END MODULE sbcssm
Note: See TracChangeset
for help on using the changeset viewer.