- Timestamp:
- 2010-10-11T13:09:49+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/SBC/sbcmod.F90
r2148 r2198 5 5 !!====================================================================== 6 6 !! History : 3.0 ! 2006-07 (G. Madec) Original code 7 !! 3.1 ! 2008-08 (S. Masson, E. Maisonnave, G. Madec) coupled interface7 !! 3.1 ! 2008-08 (S. Masson, A. Caubel, E. Maisonnave, G. Madec) coupled interface 8 8 !! 3.3 ! 2010-04 (M. Leclair, G. Madec) Forcing averaged over 2 time steps 9 !! 3.3 ! 2010-10 (S. Masson) add diurnal cycle 9 10 !!---------------------------------------------------------------------- 10 11 … … 13 14 !! sbc : surface ocean momentum, heat and freshwater boundary conditions 14 15 !!---------------------------------------------------------------------- 15 USE oce ! ocean dynamics and tracers 16 USE dom_oce ! ocean space and time domain 17 USE phycst ! physical constants 18 19 USE sbc_oce ! Surface boundary condition: ocean fields 20 USE sbc_ice ! Surface boundary condition: ice fields 21 USE sbcssm ! surface boundary condition: sea-surface mean variables 22 USE sbcana ! surface boundary condition: analytical formulation 23 USE sbcflx ! surface boundary condition: flux formulation 24 USE sbcblk_clio ! surface boundary condition: bulk formulation : CLIO 25 USE sbcblk_core ! surface boundary condition: bulk formulation : CORE 26 USE sbcice_if ! surface boundary condition: ice-if sea-ice model 27 USE sbcice_lim ! surface boundary condition: LIM 3.0 sea-ice model 28 USE sbcice_lim_2 ! surface boundary condition: LIM 2.0 sea-ice model 29 USE sbccpl ! surface boundary condition: coupled florulation 16 USE oce ! ocean dynamics and tracers 17 USE dom_oce ! ocean space and time domain 18 USE phycst ! physical constants 19 USE sbc_oce ! Surface boundary condition: ocean fields 20 USE sbc_ice ! Surface boundary condition: ice fields 21 USE sbcssm ! surface boundary condition: sea-surface mean variables 22 USE sbcana ! surface boundary condition: analytical formulation 23 USE sbcflx ! surface boundary condition: flux formulation 24 USE sbcblk_clio ! surface boundary condition: bulk formulation : CLIO 25 USE sbcblk_core ! surface boundary condition: bulk formulation : CORE 26 USE sbcice_if ! surface boundary condition: ice-if sea-ice model 27 USE sbcice_lim ! surface boundary condition: LIM 3.0 sea-ice model 28 USE sbcice_lim_2 ! surface boundary condition: LIM 2.0 sea-ice model 29 USE sbccpl ! surface boundary condition: coupled florulation 30 30 USE cpl_oasis3, ONLY:lk_cpl ! are we in coupled mode? 31 USE sbcssr ! surface boundary condition: sea surface restoring32 USE sbcrnf ! surface boundary condition: runoffs33 USE sbcfwb ! surface boundary condition: freshwater budget34 USE closea ! closed sea35 36 USE prtctl ! Print control (prt_ctl routine)37 USE restart ! ocean restart38 USE iom 39 USE in_out_manager ! I/O manager31 USE sbcssr ! surface boundary condition: sea surface restoring 32 USE sbcrnf ! surface boundary condition: runoffs 33 USE sbcfwb ! surface boundary condition: freshwater budget 34 USE closea ! closed sea 35 36 USE prtctl ! Print control (prt_ctl routine) 37 USE restart ! ocean restart 38 USE iom ! IOM library 39 USE in_out_manager ! I/O manager 40 40 41 41 IMPLICIT NONE … … 50 50 # include "domzgr_substitute.h90" 51 51 !!---------------------------------------------------------------------- 52 !! NEMO/OPA 3.3 , LOCEAN-IPSL(2010)52 !! NEMO/OPA 3.3 , NEMO-consortium (2010) 53 53 !! $Id$ 54 54 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 55 55 !!---------------------------------------------------------------------- 56 57 56 CONTAINS 58 57 … … 70 69 INTEGER :: icpt ! temporary integer 71 70 !! 72 NAMELIST/namsbc/ nn_fsbc, ln_ana , ln_flx, ln_blk_clio, ln_blk_core, ln_cpl, &73 & nn_ice , ln_dm2dc, ln_rnf, ln_ssr , nn_fwb, nn_ico_cpl71 NAMELIST/namsbc/ nn_fsbc, ln_ana , ln_flx, ln_blk_clio, ln_blk_core, ln_cpl , & 72 & nn_ice , ln_dm2dc, ln_rnf, ln_ssr , nn_fwb , nn_ico_cpl 74 73 !!---------------------------------------------------------------------- 75 74 … … 80 79 ENDIF 81 80 82 REWIND( numnam ) 81 REWIND( numnam ) ! Read Namelist namsbc 83 82 READ ( numnam, namsbc ) 84 83 85 ! overwrite namelist parameter using CPP key information 86 !!gm here no overwrite, test all option via namelist change: require more incore memory 87 !!gm IF( lk_sbc_cpl ) THEN ; ln_cpl = .TRUE. ; ELSE ; ln_cpl = .FALSE. ; ENDIF 88 89 IF( Agrif_Root() ) THEN 90 IF( lk_lim2 ) nn_ice = 2 91 IF( lk_lim3 ) nn_ice = 3 92 ENDIF 93 ! 94 IF( cp_cfg == 'gyre' ) THEN 84 ! ! overwrite namelist parameter using CPP key information 85 IF( Agrif_Root() ) THEN ! AGRIF zoom 86 IF( lk_lim2 ) nn_ice = 2 87 IF( lk_lim3 ) nn_ice = 3 88 ENDIF 89 IF( cp_cfg == 'gyre' ) THEN ! GYRE configuration 95 90 ln_ana = .TRUE. 96 91 nn_ice = 0 97 92 ENDIF 98 93 99 ! Control print 100 IF(lwp) THEN 94 IF(lwp) THEN ! Control print 101 95 WRITE(numout,*) ' Namelist namsbc (partly overwritten with CPP key setting)' 102 96 WRITE(numout,*) ' frequency update of sbc (and ice) nn_fsbc = ', nn_fsbc … … 117 111 ENDIF 118 112 113 ! ! Checks: 119 114 IF( .NOT. ln_rnf ) THEN ! no specific treatment in vicinity of river mouths 120 115 ln_rnf_mouth = .false. … … 139 134 & CALL ctl_stop( 'sea-ice model requires a bulk formulation or coupled configuration' ) 140 135 141 ! Choice of the Surface Boudary Condition (set nsbc) 136 IF( ln_dm2dc .AND. .NOT.( ln_flx .OR. ln_blk_core ) ) & 137 & CALL ctl_stop( 'diurnal cycle into qsr field from daily values requires a flux or core-bulk formulation' ) 138 139 IF( ln_dm2dc .AND. ( ( NINT(rday) / ( nn_fsbc * NINT(rdt) ) ) < 8 ) ) & 140 & CALL ctl_warn( 'diurnal cycle for qsr: the sampling of the diurnal cycle is too small...' ) 141 142 ! ! Choice of the Surface Boudary Condition (set nsbc) 142 143 icpt = 0 143 144 IF( ln_ana ) THEN ; nsbc = 1 ; icpt = icpt + 1 ; ENDIF ! analytical formulation … … 148 149 IF( cp_cfg == 'gyre') THEN ; nsbc = 0 ; ENDIF ! GYRE analytical formulation 149 150 IF( lk_esopa ) nsbc = -1 ! esopa test, ALL formulations 150 151 ! 151 152 IF( icpt /= 1 .AND. .NOT.lk_esopa ) THEN 152 153 WRITE(numout,*) … … 229 230 230 231 ! !== Misc. Options ==! 231 232 !!gm IF( ln_dm2dc ) CALL sbc_dcy( kt ) ! Daily mean qsr distributed over the Diurnal Cycle233 232 234 233 SELECT CASE( nn_ice ) ! Update heat and freshwater fluxes over sea-ice areas … … 293 292 CALL iom_put( "emp-rnf" , emp - rnf ) ! upward water flux 294 293 CALL iom_put( "emps-rnf", emps - rnf ) ! c/d water flux 295 CALL iom_put( "qns+qsr" , qns + qsr ) ! total heat flux (caution if ln_dm2dc=true, to be296 CALL iom_put( "qns" , qns ) ! solar heat flux moved after the call to iom_setkt)297 CALL iom_put( "qsr" , qsr ) ! solar heat flux moved after the call to iom_setkt)294 CALL iom_put( "qns+qsr" , qns + qsr ) ! total heat flux 295 CALL iom_put( "qns" , qns ) ! solar heat flux 296 CALL iom_put( "qsr" , qsr ) ! solar heat flux 298 297 IF( nn_ice > 0 ) CALL iom_put( "ice_cover", fr_i ) ! ice fraction 299 298 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.