Changeset 900
- Timestamp:
- 2008-04-22T20:13:41+02:00 (13 years ago)
- Location:
- trunk/NEMO
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/C1D_SRC/c1d.F90
r899 r900 1 MODULE ini1d1 MODULE c1d 2 2 !!====================================================================== 3 !! *** MODULE ini1D***4 !! Ocean state : 1D initialization3 !! *** MODULE c1d *** 4 !! Ocean domain : 1D configuration 5 5 !!===================================================================== 6 #if defined key_c1d 6 !! History : 2.0 ! 2004-09 (C. Ethe) Original code 7 !! 3.0 ! 2008-04 (G. Madec) adaptation to SBC 7 8 !!---------------------------------------------------------------------- 8 !! 'key_cf1d' 1D Configuration9 !!----------------------------------------------------------------------10 !! init_1d : initial mask11 !!----------------------------------------------------------------------12 !! * Modules used13 USE dom_oce ! ocean space and time domain14 USE phycst15 USE in_out_manager16 9 17 10 IMPLICIT NONE 18 11 PRIVATE 19 12 20 !! * Share Module variables 21 LOGICAL, PUBLIC, PARAMETER :: lk_c1d = .TRUE. !: 1D flag22 23 !! * Routine accessibility24 PUBLIC init_1d ! routine called by OPA.F90 13 #if defined key_c1d 14 LOGICAL, PUBLIC, PARAMETER :: lk_c1d = .TRUE. !: 1D config. flag activated 15 #else 16 LOGICAL, PUBLIC, PARAMETER :: lk_c1d = .FALSE. !: 1D config. flag de-activated 17 #endif 25 18 26 19 !!---------------------------------------------------------------------- 27 !! OPA 9.0 , LOCEAN-IPSL (2005) 28 !! $Header$ 29 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 30 !!---------------------------------------------------------------------- 31 32 CONTAINS 33 34 SUBROUTINE init_1d 35 !!---------------------------------------------------------------------- 36 !! *** ROUTINE init_1d *** 37 !! 38 !! ** Purpose : Re-Initialization of masks on 1D configuration 39 !! 40 !! ** Method : 41 !! 42 !! History : 43 !! 9.0 ! 04-09 (C. Ethe) 1D configuration 44 !!---------------------------------------------------------------------- 45 !! * Local declarations 46 !!---------------------------------------------------------------------- 47 48 IF(lwp) WRITE(numout,*) 49 IF(lwp) WRITE(numout,*) 'init_1d : masks on 1D configuration' 50 IF(lwp) WRITE(numout,*) '~~~~~~~~~' 51 52 ! set umask and vmask equal tmask in 1D configuration 53 umask(:,:,:) = tmask(:,:,:) 54 vmask(:,:,:) = tmask(:,:,:) 55 56 END SUBROUTINE init_1d 57 58 #else 59 !!---------------------------------------------------------------------- 60 !! Default key NO 1D Config 61 !!---------------------------------------------------------------------- 62 LOGICAL , PUBLIC, PARAMETER :: lk_c1d = .FALSE. !: internal damping flag 63 CONTAINS 64 SUBROUTINE init_1d ! Empty routine 65 66 END SUBROUTINE init_1d 67 #endif 68 20 !! NEMO/C1D 3.0 , LOCEAN-IPSL (2008) 21 !! $Id:$ 22 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 69 23 !!===================================================================== 70 END MODULE ini1d24 END MODULE c1d -
trunk/NEMO/C1D_SRC/diawri_c1d.F90
r899 r900 1 MODULE diawri 1d1 MODULE diawri_c1d 2 2 !!====================================================================== 3 !! *** MODULE diawri 1d ***3 !! *** MODULE diawri_c1d *** 4 4 !! Ocean diagnostics : write ocean output files 5 5 !!===================================================================== 6 !! History : 2.0 ! 2004-10 (C. Ethe) 1D Configuration 7 !! 3.0 ! 2008-04 (G. Madec) adaptation to SBC 8 !!---------------------------------------------------------------------- 6 9 #if defined key_c1d 7 10 !!---------------------------------------------------------------------- 8 !! 'key_c1d' 1D Configuration11 !! 'key_c1d' 1D Configuration 9 12 !!---------------------------------------------------------------------- 10 !! ----------------------------------------------------------------------11 !! * Modules used13 !! dia_wri_c1d : create the standart NetCDF output files 14 !!---------------------------------------------------------------------- 12 15 USE oce ! ocean dynamics and tracers 13 16 USE dom_oce ! ocean space and time domain … … 15 18 USE sbc_oce ! surface boundary condition: ocean 16 19 USE sbc_ice ! surface boundary condition: ice 20 USE sbcmod ! surface Boundary Codition 21 USE sbcssr ! surface boundary condition: restauring to SSS and or SST 17 22 USE zdftke ! TKE vertical mixing 18 23 USE zdfkpp ! KPP vertical mixing … … 26 31 USE diawri 27 32 USE zdfddm ! vertical physics: double diffusion 28 USE diahth ! thermocline diagnostics29 33 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 30 34 USE in_out_manager ! I/O manager 35 USE ioipsl 31 36 32 37 IMPLICIT NONE 33 38 PRIVATE 34 39 35 !! * Accessibility 36 PUBLIC dia_wri_1d ! routines called by step.F90 37 !! * Module variables 38 INTEGER :: & 39 nid_T, nz_T, nh_T, ndim_T, ndim_hT, & ! grid_T file 40 ndex(1) ! ??? 41 INTEGER, DIMENSION(jpi*jpj) :: & 42 ndex_hT 43 INTEGER, DIMENSION(jpi*jpj*jpk) :: & 44 ndex_T 40 PUBLIC dia_wri_c1d ! routines called by step.F90 41 42 INTEGER :: nid_T, nz_T, nh_T, ndim_T, ndim_hT, ndex(1) ! grid_T file 43 INTEGER, DIMENSION(jpi*jpj) :: ndex_hT 44 INTEGER, DIMENSION(jpi*jpj*jpk) :: ndex_T 45 45 46 46 !! * Substitutions 47 47 # include "zdfddm_substitute.h90" 48 48 !!---------------------------------------------------------------------- 49 !! OPA 9.0 , LOCEAN-IPSL (2005)49 !! NEMO/C1D 3.0 , LOCEAN-IPSL (2008) 50 50 !! $Id$ 51 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt51 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 52 52 !!---------------------------------------------------------------------- 53 53 54 54 CONTAINS 55 !!---------------------------------------------------------------------- 56 !! Default option NetCDF output file 57 !!---------------------------------------------------------------------- 58 !! dia_wri_1d : create the standart NetCDF output files 59 !! dia_wri_state_1d : create an output NetCDF file for a single 60 !! instantaeous ocean state and forcing fields 61 !!---------------------------------------------------------------------- 62 63 SUBROUTINE dia_wri_1d( kt, kindic ) 55 56 SUBROUTINE dia_wri_c1d( kt, kindic ) 64 57 !!--------------------------------------------------------------------- 65 !! *** ROUTINE dia_wri_ 1d ***58 !! *** ROUTINE dia_wri_c1d *** 66 59 !! 67 60 !! ** Purpose : Standard output of opa: dynamics and tracer fields … … 75 68 !! IF kindic =0, time step loop 76 69 !! IF kindic >0, output of fields before the time step loop 77 !!78 !! History :79 !! ! 91-03 (M.-A. Foujols) Original code80 !! ! 91-11 (G. Madec)81 !! ! 92-06 (M. Imbard) correction restart file82 !! ! 92-07 (M. Imbard) split into diawri and rstwri83 !! ! 93-03 (M. Imbard) suppress writibm84 !! ! 98-01 (C. Levy) NETCDF format using ioipsl INTERFACE85 !! ! 99-02 (E. Guilyardi) name of netCDF files + variables86 !! 8.5 ! 02-09 (G. Madec) F90: Free form and module87 !! 9.0 ! 04-10 (C. Ethe) 1D Configuration88 !! " ! 05-11 (V. Garnier) Surface pressure gradient organization89 70 !!---------------------------------------------------------------------- 90 !! * Modules used91 USE ioipsl92 93 !! * Arguments94 71 INTEGER, INTENT( in ) :: kt ! ocean time-step index 95 72 INTEGER, INTENT( in ) :: kindic ! 96 97 !! * Local declarations 98 LOGICAL :: ll_print = .FALSE. ! =T print and flush numout 99 CHARACTER (len=40) :: & 100 clhstnam, clop, clmx ! temporary names 101 INTEGER :: inum = 11 ! temporary logical unit 102 INTEGER :: & 103 ji, jj, ik ! dummy loop indices 104 INTEGER :: & 105 iimi, iima, ipk, it, & ! temporary integers 106 ijmi, ijma ! " " 107 REAL(wp) :: & 108 zsto, zout, zmax, & ! temporary scalars 109 zjulian, zdt ! " " 110 REAL(wp), DIMENSION(jpi,jpj) :: & 111 zw2d ! temporary workspace 73 !! 74 LOGICAL :: ll_print = .FALSE. ! =T print and flush numout 75 CHARACTER (len=40) :: clhstnam, clop, clmx ! temporary names 76 INTEGER :: inum = 11 ! temporary logical unit 77 INTEGER :: ji, jj, ik ! dummy loop indices 78 INTEGER :: iimi, iima, ipk, it, ijmi, ijma ! temporary integers 79 REAL(wp) :: zsto, zout, zmax, zjulian, zdt ! temporary scalars 80 REAL(wp), DIMENSION(jpi,jpj) :: zw2d ! temporary workspace 112 81 !!---------------------------------------------------------------------- 113 82 … … 146 115 ! ----------------------------------------------------------------- 147 116 148 IF(ll_print) WRITE(numout,*) 'dia_wri_ 1d kt = ', kt, ' kindic ', kindic117 IF(ll_print) WRITE(numout,*) 'dia_wri_c1d kt = ', kt, ' kindic ', kindic 149 118 150 119 IF( kt == nit000 ) THEN … … 192 161 CALL histdef( nid_T, "sosaline", "Sea Surface Salinity" , "PSU" , & ! sss 193 162 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 194 195 !!$#if ! defined key_dynspg_rl && ( defined key_lim2 || defined key_lim2 )196 !!$ ! sowaflup = sowaflep + sorunoff + sowafldp + a term associated to197 !!$ ! internal damping to Levitus that can be diagnosed from others198 !!$ ! sowaflcd = sowaflep + sorunoff + sowafldp + iowaflup199 !!$ CALL histdef( nid_T, "iowaflup", "Ice=>ocean net freshwater" , "kg/m2/s", & ! fsalt200 !!$ & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout )201 !!$ CALL histdef( nid_T, "sowaflep", "atmos=>ocean net freshwater" , "kg/m2/s", & ! fmass202 !!$ & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout )203 !!$#endif204 163 CALL histdef( nid_T, "sowaflup", "Net Upward Water Flux" , "Kg/m2/s", & ! emp 205 164 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 206 207 165 !! CALL histdef( nid_T, "sorunoff", "Runoffs" , "Kg/m2/s", & ! runoffs 166 !! & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 208 167 CALL histdef( nid_T, "sowaflcd", "concentration/dilution water flux" , "kg/m2/s", & ! emps 209 168 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) … … 228 187 CALL histdef( nid_T, "soicecov", "Ice Cover" , "[0,1]" , & ! freeze 229 188 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 230 #if ! defined key_coupled 231 CALL histdef( nid_T, "sohefldp", "Surface Heat Flux: Damping" , "W/m2" , & ! qrp 232 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 233 CALL histdef( nid_T, "sowafldp", "Surface Water Flux: Damping" , "Kg/m2/s", & ! erp 234 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 235 CALL histdef( nid_T, "sosafldp", "Surface salt flux: damping" , "Kg/m2/s", & ! erp * sn 236 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 237 #endif 238 239 #if ( defined key_coupled && ! ( defined key_lim3 || defined key_lim2 ) ) 240 CALL histdef( nid_T, "sohefldp", "Surface Heat Flux: Damping" , "W/m2" , & ! qrp 241 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 242 CALL histdef( nid_T, "sowafldp", "Surface Water Flux: Damping" , "Kg/m2/s", & ! erp 243 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 244 CALL histdef( nid_T, "sosafldp", "Surface salt flux: Damping" , "Kg/m2/s", & ! erp * sn 245 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 246 #endif 189 IF( ln_ssr ) THEN 190 CALL histdef( nid_T, "sohefldp", "Surface Heat Flux: Damping" , "W/m2" , & ! qrp 191 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 192 CALL histdef( nid_T, "sowafldp", "Surface Water Flux: Damping" , "Kg/m2/s", & ! erp 193 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 194 CALL histdef( nid_T, "sosafldp", "Surface salt flux: damping" , "Kg/m2/s", & ! erp * sn 195 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 196 ENDIF 247 197 clmx ="l_max(only(x))" ! max index on a period 248 198 CALL histdef( nid_T, "sobowlin", "Bowl Index" , "W-point", & ! bowl INDEX 249 199 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clmx, zsto, zout ) 250 #if defined key_diahth251 CALL histdef( nid_T, "sothedep", "Thermocline Depth" , "m" , & ! hth252 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout )253 CALL histdef( nid_T, "so20chgt", "Depth of 20C isotherm" , "m" , & ! hd20254 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout )255 CALL histdef( nid_T, "so28chgt", "Depth of 28C isotherm" , "m" , & ! hd28256 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout )257 CALL histdef( nid_T, "sohtc300", "Heat content 300 m" , "W" , & ! htc3258 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout )259 #endif260 261 #if ( defined key_lim3 || defined key_lim2 ) && defined key_coupled262 CALL histdef( nid_T,"soicetem" , "Ice Surface Temperature" , "K" , & ! tn_ice263 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout )264 CALL histdef( nid_T,"soicealb" , "Ice Albedo" , "[0,1]" , & ! alb_ice265 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout )266 #endif267 268 200 ! !!! nid_U : 3D 269 201 CALL histdef( nid_T, "vozocrtx", "Zonal Current" , "m/s" , & ! un … … 288 220 & jpi, jpj, nh_T, 1 , 1, 1 , - 99, 32, clop, zsto, zout ) 289 221 #if defined key_zdftke 290 ! !!! nid_W : 3D291 222 CALL histdef( nid_T, "votlsdis", " Dissipation Turbulent Lenght Scale", "m" , & ! e_dis 292 223 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 293 !294 224 CALL histdef( nid_T, "votlsmix", " Mixing Turbulent Lenght Scale" , "m" , & ! e_mix 295 225 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 296 !297 226 CALL histdef( nid_T, "votlspdl", " Prandl Number", "-" , & ! e_pdl 298 227 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 299 !300 228 CALL histdef( nid_T, "votlsric", " Local Richardson Number", "-" , & ! e_ric 301 229 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 302 !303 230 CALL histdef( nid_T, "votkeend", "TKE: Turbulent kinetic energy" , "m2/s" , & ! TKE 304 231 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 305 232 #endif 306 233 #if defined key_zdfkpp 307 ! !!! nid_W : 3D308 234 CALL histdef( nid_T, "vokpprig", " Gradient Richardson Number" , "-" , & ! rig 309 235 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 310 !311 236 CALL histdef( nid_T, "vokpprib", " Bulk Richardson Number " , "-" , & ! rib 312 237 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 313 !314 238 CALL histdef( nid_T, "vokppbsf", " Buoyancy forcing " , "N/m2" , & ! sokppbsf 315 239 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 316 !317 240 CALL histdef( nid_T, "vokppmol", "Moning Obukhov length scale " , "m" , & ! sokppmol 318 241 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) … … 321 244 CALL histdef( nid_T, "voeosbn2", "Brunt-Vaisala Frequency" , "m2/s2" , & ! rn2 322 245 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 323 324 246 CALL histdef( nid_T, "votkeavt", "Vertical Eddy Diffusivity" , "m2/s" , & ! avt 325 247 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 326 327 248 CALL histdef( nid_T, "votkeevd", "Enhanced Vertical Diffusivity", "m2/s" , & ! avt_evd 328 249 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 329 330 250 CALL histdef( nid_T, "votkeavm", "Vertical Eddy Viscosity", "m2/s" , & ! avmu 331 251 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) … … 333 253 CALL histdef( nid_T, "votkeevm", "Enhanced Vertical Viscosity", "m2/s" , & ! avmu_evd 334 254 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 335 336 255 IF( lk_zdfddm ) THEN 337 256 CALL histdef( nid_T,"voddmavs","Salt Vertical Eddy Diffusivity" , "m2/s" , & ! avs … … 364 283 CALL histwrite( nid_T, "sosstsst", it, tn(:,:,1) , ndim_hT, ndex_hT ) ! sea surface temperature 365 284 CALL histwrite( nid_T, "sosaline", it, sn(:,:,1) , ndim_hT, ndex_hT ) ! sea surface salinity 366 #if ! defined key_dynspg_rl && ( defined key_lim3 || defined key_lim2 )367 CALL histwrite( nid_T, "iowaflup", it, fsalt(:,:) , ndim_hT, ndex_hT ) ! ice=>ocean water flux368 CALL histwrite( nid_T, "sowaflep", it, fmass(:,:) , ndim_hT, ndex_hT ) ! atmos=>ocean water flux369 #endif370 285 CALL histwrite( nid_T, "sowaflup", it, emp , ndim_hT, ndex_hT ) ! upward water flux 371 286 !! CALL histwrite( nid_T, "sorunoff", it, runoff , ndim_hT, ndex_hT ) ! runoff 372 287 CALL histwrite( nid_T, "sowaflcd", it, emps , ndim_hT, ndex_hT ) ! c/d water flux 373 288 zw2d(:,:) = emps(:,:) * sn(:,:,1) * tmask(:,:,1) … … 390 305 CALL histwrite( nid_T, "somixhgt", it, hmld , ndim_hT, ndex_hT ) ! turbocline depth 391 306 CALL histwrite( nid_T, "soicecov", it, freeze , ndim_hT, ndex_hT ) ! ice cover 392 #if ! defined key_coupled 393 CALL histwrite( nid_T, "sohefldp", it, qrp , ndim_hT, ndex_hT ) ! heat flux damping 394 CALL histwrite( nid_T, "sowafldp", it, erp , ndim_hT, ndex_hT ) ! freshwater flux damping 395 zw2d(:,:) = erp(:,:) * sn(:,:,1) * tmask(:,:,1) 396 CALL histwrite( nid_T, "sosafldp", it, zw2d , ndim_hT, ndex_hT ) ! salt flux damping 397 #endif 398 #if ( defined key_coupled && ! ( defined key_lim3 || defined key_lim2 ) ) 399 CALL histwrite( nid_T, "sohefldp", it, qrp , ndim_hT, ndex_hT ) ! heat flux damping 400 CALL histwrite( nid_T, "sowafldp", it, erp , ndim_hT, ndex_hT ) ! freshwater flux damping 307 IF( ln_ssr ) THEN 308 CALL histwrite( nid_T, "sohefldp", it, qrp , ndim_hT, ndex_hT ) ! heat flux damping 309 CALL histwrite( nid_T, "sowafldp", it, erp , ndim_hT, ndex_hT ) ! freshwater flux damping 401 310 zw2d(:,:) = erp(:,:) * sn(:,:,1) * tmask(:,:,1) 402 CALL histwrite( nid_T, "sosafldp", it, zw2d , ndim_hT, ndex_hT ) ! salt flux damping403 #endif 404 311 CALL histwrite( nid_T, "sosafldp", it, zw2d , ndim_hT, ndex_hT ) ! salt flux damping 312 ENDIF 313 zw2d(:,:) = FLOAT( nmln(:,:) ) * tmask(:,:,1) 405 314 CALL histwrite( nid_T, "sobowlin", it, zw2d , ndim_hT, ndex_hT ) ! ??? 406 407 #if defined key_diahth408 CALL histwrite( nid_T, "sothedep", it, hth , ndim_hT, ndex_hT ) ! depth of the thermocline409 CALL histwrite( nid_T, "so20chgt", it, hd20 , ndim_hT, ndex_hT ) ! depth of the 20 isotherm410 CALL histwrite( nid_T, "so28chgt", it, hd28 , ndim_hT, ndex_hT ) ! depth of the 28 isotherm411 CALL histwrite( nid_T, "sohtc300", it, htc3 , ndim_hT, ndex_hT ) ! first 300m heaat content412 #endif413 #if ( defined key_lim3 || defined key_lim2 ) && defined key_coupled414 CALL histwrite( nid_T, "soicetem", it, tn_ice , ndim_hT, ndex_hT ) ! surf. ice temperature415 CALL histwrite( nid_T, "soicealb", it, alb_ice , ndim_hT, ndex_hT ) ! ice albedo416 #endif417 418 315 CALL histwrite( nid_T, "vozocrtx", it, un , ndim_T , ndex_T ) ! i-current 419 316 CALL histwrite( nid_T, "sozotaux", it, utau , ndim_hT, ndex_hT ) ! i-wind stress … … 444 341 ! 3. Synchronise and close all files 445 342 ! --------------------------------------- 446 IF( MOD( kt, nwrite ) == 0 .OR. kindic < 0 ) THEN 447 CALL histsync( nid_T ) 448 ENDIF 343 IF( MOD( kt, nwrite ) == 0 .OR. kindic < 0 ) CALL histsync( nid_T ) 449 344 450 345 ! Create an output files (output.abort.nc) if S < 0 or u > 20 m/s 451 346 IF( kindic < 0 ) CALL dia_wri_state( 'output.abort' ) 452 347 453 IF( kt == nitend .OR. kindic < 0 ) THEN 454 CALL histclo( nid_T ) 455 ENDIF 456 457 END SUBROUTINE dia_wri_1d 348 IF( kt == nitend .OR. kindic < 0 ) CALL histclo( nid_T ) 349 ! 350 END SUBROUTINE dia_wri_c1d 351 458 352 #else 459 353 !!---------------------------------------------------------------------- 460 !! Default key NO 1D Config 354 !! Default key NO 1D Configuration 461 355 !!---------------------------------------------------------------------- 462 356 CONTAINS 463 SUBROUTINE dia_wri_ 1d ( kt, kindic )464 WRITE(*,*) 'dia_wri_ 1d: You should not have seen this print! error?', kt, kindic465 END SUBROUTINE dia_wri_ 1d357 SUBROUTINE dia_wri_c1d ( kt, kindic ) ! dummy routine 358 WRITE(*,*) 'dia_wri_c1d: You should not have seen this print! error?', kt, kindic 359 END SUBROUTINE dia_wri_c1d 466 360 #endif 467 361 468 362 !!====================================================================== 469 END MODULE diawri 1d363 END MODULE diawri_c1d -
trunk/NEMO/C1D_SRC/dyncor_c1d.F90
r899 r900 1 MODULE dyncor 1d1 MODULE dyncor_c1d 2 2 !!====================================================================== 3 !! *** MODULE ini1D***4 !! Ocean state : 1D initialization3 !! *** MODULE dyncor_c1d *** 4 !! Ocean Dynamics : Coriolis term in 1D configuration 5 5 !!===================================================================== 6 !! History : 2.0 ! 2004-09 (C. Ethe) Original code 7 !! 3.0 ! 2008-04 (G. Madec) style only 8 !!---------------------------------------------------------------------- 6 9 #if defined key_c1d 7 10 !!---------------------------------------------------------------------- 8 !! 'key_c1d' 1D Configuration11 !! 'key_c1d' 1D Configuration 9 12 !!---------------------------------------------------------------------- 13 !! cor_c1d : Coriolis factor at T-point (1D configuration) 14 !! dyn_cor_c1d : vorticity trend due to Coriolis at T-point 10 15 !!---------------------------------------------------------------------- 11 !! fcorio_1d : Coriolis factor at T-point 12 !! dyn_cor_1d : vorticity trend due to Coriolis 13 !!---------------------------------------------------------------------- 14 !! * Modules used 15 USE oce ! ocean dynamics and tracers 16 USE dom_oce ! ocean space and time domain 17 USE phycst ! physical constants 18 USE in_out_manager ! I/O manager 19 USE prtctl ! Print control 16 USE oce ! ocean dynamics and tracers 17 USE dom_oce ! ocean space and time domain 18 USE phycst ! physical constants 19 USE in_out_manager ! I/O manager 20 USE prtctl ! Print control 20 21 21 22 IMPLICIT NONE 22 23 PRIVATE 23 24 24 !! * Routine accessibility 25 PUBLIC fcorio_1d ! routine called by OPA.F90 26 PUBLIC dyn_cor_1d ! routine called by step1d.F90 25 PUBLIC cor_c1d ! routine called by OPA.F90 26 PUBLIC dyn_cor_c1d ! routine called by step1d.F90 27 27 28 28 !! * Substitutions 29 29 # include "vectopt_loop_substitute.h90" 30 30 !!---------------------------------------------------------------------- 31 !! OPA 9.0 , LOCEAN-IPSL (2005)31 !! NEMO/C1D 3.0 , LOCEAN-IPSL (2009) 32 32 !! $Header$ 33 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt33 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 34 34 !!---------------------------------------------------------------------- 35 35 36 36 CONTAINS 37 37 38 SUBROUTINE fcorio_1d38 SUBROUTINE cor_c1d 39 39 !!---------------------------------------------------------------------- 40 !! *** ROUTINE fcorio_1d ***40 !! *** ROUTINE cor_c1d *** 41 41 !! 42 42 !! ** Purpose : Compute the Coriolis factor at T-point 43 !!44 !! ** Method :45 !!46 !! History :47 !! 9.0 ! 04-09 (C. Ethe) 1D configuration48 43 !!---------------------------------------------------------------------- 49 !! * Local declarations 50 !!---------------------------------------------------------------------- 51 REAL(wp) :: & 52 zphi0, zbeta, zf0 ! temporary scalars 53 54 44 REAL(wp) :: zphi0, zbeta, zf0 ! temporary scalars 55 45 !!---------------------------------------------------------------------- 56 46 57 ! ================= !58 ! Coriolis factor !59 ! ================= !60 47 IF(lwp) WRITE(numout,*) 61 IF(lwp) WRITE(numout,*) ' fcorio_1d : Coriolis factor at T-point'62 IF(lwp) WRITE(numout,*) '~~~~~~~ ~~~~'48 IF(lwp) WRITE(numout,*) 'cor_c1d : Coriolis factor at T-point' 49 IF(lwp) WRITE(numout,*) '~~~~~~~' 63 50 64 51 SELECT CASE( jphgr_msh ) ! type of horizontal mesh 65 52 ! 66 53 CASE ( 0, 1, 4 ) ! mesh on the sphere 67 68 54 ff(:,:) = 2. * omega * SIN( rad * gphit(:,:) ) 69 55 ! 70 56 CASE ( 2 ) ! f-plane at ppgphi0 71 72 57 ff(:,:) = 2. * omega * SIN( rad * ppgphi0 ) 73 74 58 IF(lwp) WRITE(numout,*) ' f-plane: Coriolis parameter = constant = ', ff(1,1) 75 59 ! 76 60 CASE ( 3 ) ! beta-plane 77 78 61 zbeta = 2. * omega * COS( rad * ppgphi0 ) / ra ! beta at latitude ppgphi0 79 62 zphi0 = ppgphi0 - FLOAT( jpjglo/2) * ppe2_m *1.e-3 / ( ra * rad ) ! latitude of the first row F-points 80 63 zf0 = 2. * omega * SIN( rad * zphi0 ) ! compute f0 1st point south 81 82 64 ff(:,:) = ( zf0 + zbeta * gphit(:,:) * 1.e+3 ) ! f = f0 +beta* y ( y=0 at south) 83 84 65 IF(lwp) WRITE(numout,*) ' Beta-plane: Beta parameter = constant = ', ff(1,1) 85 66 IF(lwp) WRITE(numout,*) ' Coriolis parameter varies from ', ff(1,1),' to ', ff(1,jpj) 86 67 ! 87 68 CASE ( 5 ) ! beta-plane and rotated domain 88 89 69 zbeta = 2. * omega * COS( rad * ppgphi0 ) / ra ! beta at latitude ppgphi0 90 70 zphi0 = 15.e0 ! latitude of the first row F-points 91 71 zf0 = 2. * omega * SIN( rad * zphi0 ) ! compute f0 1st point south 92 93 72 ff(:,:) = ( zf0 + zbeta * ABS( gphit(:,:) - zphi0 ) * rad * ra ) ! f = f0 +beta* y ( y=0 at south) 94 95 73 IF(lwp) WRITE(numout,*) ' Beta-plane: Beta parameter = constant = ', ff(1,1) 96 74 IF(lwp) WRITE(numout,*) ' Coriolis parameter varies from ', ff(1,1),' to ', ff(1,jpj) 97 75 ! 98 76 END SELECT 99 100 END SUBROUTINE fcorio_1d77 ! 78 END SUBROUTINE cor_c1d 101 79 102 80 103 SUBROUTINE dyn_cor_ 1d( kt )81 SUBROUTINE dyn_cor_c1d( kt ) 104 82 !!---------------------------------------------------------------------- 105 !! *** ROUTINE dyn_cor_ 1d ***83 !! *** ROUTINE dyn_cor_c1d *** 106 84 !! 107 85 !! ** Purpose : Compute the now total vorticity trend and add it to … … 113 91 !! 9.0 ! 04-09 (C. Ethe) 1D configuration 114 92 !!---------------------------------------------------------------------- 115 !! * Arguments 116 INTEGER, INTENT( in ) :: kt ! ocean time-step index 117 118 !! * Local declarations 119 INTEGER :: ji, jj, jk ! dummy loop indices 120 REAL(wp) :: & 121 zua, zva ! temporary scalars 122 93 INTEGER, INTENT( in ) :: kt ! ocean time-step index 94 !! 95 INTEGER :: ji, jj, jk ! dummy loop indices 123 96 !!---------------------------------------------------------------------- 124 97 ! 125 98 IF( kt == nit000 ) THEN 126 99 IF(lwp) WRITE(numout,*) 127 IF(lwp) WRITE(numout,*) 'dyn_cor_ 1d : total vorticity trend in 1D'100 IF(lwp) WRITE(numout,*) 'dyn_cor_c1d : total vorticity trend in 1D' 128 101 IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 129 102 ENDIF 130 103 ! 131 104 DO jk = 1, jpkm1 132 105 DO jj = 2, jpjm1 133 106 DO ji = fs_2, fs_jpim1 ! vector opt. 134 zua = ff(ji,jj) * vn(ji,jj,jk) 135 zva = - ff(ji,jj) * un(ji,jj,jk) 136 ua(ji,jj,jk) = ua(ji,jj,jk) + zua 137 va(ji,jj,jk) = va(ji,jj,jk) + zva 107 ua(ji,jj,jk) = ua(ji,jj,jk) + ff(ji,jj) * vn(ji,jj,jk) 108 va(ji,jj,jk) = va(ji,jj,jk) - ff(ji,jj) * un(ji,jj,jk) 138 109 END DO 139 110 END DO 140 111 END DO 141 142 IF(ln_ctl) THEN 143 CALL prt_ctl(tab3d_1=ua, clinfo1=' cor - Ua: ', mask1=umask, & 144 & tab3d_2=va, clinfo2=' Va: ', mask2=vmask) 145 ENDIF 146 147 ! IF(l_ctl) THEN ! print sum trends (used for debugging) 148 ! zua = SUM( ua(2:nictl,2:njctl,1:jpkm1) * umask(2:nictl,2:njctl,1:jpkm1) ) 149 ! zva = SUM( va(2:nictl,2:njctl,1:jpkm1) * vmask(2:nictl,2:njctl,1:jpkm1) ) 150 ! WRITE(numout,*) ' cor - Ua: ', zua-u_ctl, ' Va: ', zva-v_ctl 151 ! u_ctl = zua ; v_ctl = zva 152 ! ENDIF 153 154 END SUBROUTINE dyn_cor_1d 112 ! 113 IF(ln_ctl) CALL prt_ctl( tab3d_1=ua, clinfo1=' cor - Ua: ', mask1=umask, & 114 & tab3d_2=va, clinfo2=' Va: ' , mask2=vmask ) 115 ! 116 END SUBROUTINE dyn_cor_c1d 155 117 156 118 #else 157 119 !!---------------------------------------------------------------------- 158 !! Default key NO 1D Config 120 !! Default key NO 1D Configuration 159 121 !!---------------------------------------------------------------------- 160 122 CONTAINS 161 SUBROUTINE fcorio_1d! Empty routine162 END SUBROUTINE fcorio_1d163 SUBROUTINE dyn_cor_ 1d ( kt )164 WRITE(*,*) 'dyn_cor_ 1d: You should not have seen this print! error?', kt165 END SUBROUTINE dyn_cor_ 1d123 SUBROUTINE cor_c1d ! Empty routine 124 END SUBROUTINE cor_c1d 125 SUBROUTINE dyn_cor_c1d ( kt ) ! Empty routine 126 WRITE(*,*) 'dyn_cor_c1d: You should not have seen this print! error?', kt 127 END SUBROUTINE dyn_cor_c1d 166 128 #endif 167 129 168 130 !!===================================================================== 169 END MODULE dyncor 1d131 END MODULE dyncor_c1d -
trunk/NEMO/C1D_SRC/dynnxt_c1d.F90
r899 r900 1 MODULE dynnxt 1d1 MODULE dynnxt_c1d 2 2 !!====================================================================== 3 !! *** MODULE dynnxt 1d ***3 !! *** MODULE dynnxt_c1d *** 4 4 !! Ocean dynamics: time stepping in 1D configuration 5 5 !!====================================================================== 6 !! History : 2.0 ! 2004-10 (C. Ethe) Original code from dynnxt.F90 7 !! 3.0 ! 2008-04 (G.madec) Style only 8 !!---------------------------------------------------------------------- 6 9 #if defined key_c1d 7 10 !!---------------------------------------------------------------------- 8 !! 'key_c1d' 1D Configuration11 !! 'key_c1d' 1D Configuration 9 12 !!---------------------------------------------------------------------- 10 13 !!---------------------------------------------------------------------- 11 !! dyn_nxt_ 1d: update the horizontal velocity from the momentum trend14 !! dyn_nxt_c1d : update the horizontal velocity from the momentum trend 12 15 !!---------------------------------------------------------------------- 13 !! * Modules used14 16 USE oce ! ocean dynamics and tracers 15 17 USE dom_oce ! ocean space and time domain … … 21 23 PRIVATE 22 24 23 !! * Accessibility 24 PUBLIC dyn_nxt_1d ! routine called by step.F90 25 PUBLIC dyn_nxt_c1d ! routine called by step.F90 26 !!---------------------------------------------------------------------- 27 !! NEMO/C1D 3.0 , LOCEAN-IPSL (2008) 28 !! $Id:$ 29 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 25 30 !!---------------------------------------------------------------------- 26 31 27 32 CONTAINS 28 33 29 SUBROUTINE dyn_nxt_ 1d ( kt )34 SUBROUTINE dyn_nxt_c1d ( kt ) 30 35 !!---------------------------------------------------------------------- 31 !! *** ROUTINE dyn_nxt_ 1d ***36 !! *** ROUTINE dyn_nxt_c1d *** 32 37 !! 33 38 !! ** Purpose : Compute the after horizontal velocity from the … … 46 51 !! ** Action : - Update ub,vb arrays, the before horizontal velocity 47 52 !! - Update un,vn arrays, the now horizontal velocity 53 !!---------------------------------------------------------------------- 54 INTEGER, INTENT( in ) :: kt ! ocean time-step index 48 55 !! 49 !! History : 50 !! ! 87-02 (P. Andrich, D. L Hostis) Original code 51 !! ! 90-10 (C. Levy, G. Madec) 52 !! ! 93-03 (M. Guyon) symetrical conditions 53 !! ! 97-02 (G. Madec & M. Imbard) opa, release 8.0 54 !! ! 97-04 (A. Weaver) Euler forward step 55 !! ! 97-06 (G. Madec) lateral boudary cond., lbc routine 56 !! 8.5 ! 02-08 (G. Madec) F90: Free form and module 57 !! ! 04-10 (C. Ethe) 1D configuration 58 !!---------------------------------------------------------------------- 59 !! * Arguments 60 INTEGER, INTENT( in ) :: kt ! ocean time-step index 61 62 !! * Local declarations 63 INTEGER :: ji, jj, jk ! dummy loop indices 56 INTEGER :: jk ! dummy loop indices 64 57 REAL(wp) :: z2dt ! temporary scalar 65 !!----------------------------------------------------------------------66 !! OPA 9.0 , LOCEAN-IPSL (2005)67 !! $Header$68 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt69 58 !!---------------------------------------------------------------------- 70 59 71 60 IF( kt == nit000 ) THEN 72 61 IF(lwp) WRITE(numout,*) 73 IF(lwp) WRITE(numout,*) 'dyn_nxt_ 1d : time stepping on 1D configuation'62 IF(lwp) WRITE(numout,*) 'dyn_nxt_c1d : time stepping on 1D configuation' 74 63 IF(lwp) WRITE(numout,*) '~~~~~~~' 75 64 ENDIF … … 83 72 CALL lbc_lnk( va, 'V', -1. ) 84 73 85 ! ! =============== 86 DO jk = 1, jpkm1 ! Horizontal slab 87 ! ! =============== 88 ! Next velocity 89 ! ------------- 90 DO jj = 1, jpj ! caution: don't use (:,:) for this loop 91 DO ji = 1, jpi ! it causes optimization problems on NEC in auto-tasking 92 ! Leap-frog time stepping 93 ua(ji,jj,jk) = ( ub(ji,jj,jk) + z2dt * ua(ji,jj,jk) ) * umask(ji,jj,jk) 94 va(ji,jj,jk) = ( vb(ji,jj,jk) + z2dt * va(ji,jj,jk) ) * vmask(ji,jj,jk) 95 END DO 96 END DO 97 ! ! =============== 98 END DO ! End of slab 99 ! ! =============== 74 DO jk = 1, jpkm1 ! Next Velocity 75 ua(:,:,jk) = ( ub(:,:,jk) + z2dt * ua(:,:,jk) ) * umask(:,:,jk) 76 va(:,:,jk) = ( vb(:,:,jk) + z2dt * va(:,:,jk) ) * vmask(:,:,jk) 77 END DO 100 78 101 ! ! =============== 102 DO jk = 1, jpkm1 ! Horizontal slab 103 ! ! =============== 104 ! Time filter and swap of dynamics arrays 105 ! ------------------------------------------ 106 IF( neuler == 0 .AND. kt == nit000 ) THEN 107 DO jj = 1, jpj ! caution: don't use (:,:) for this loop 108 DO ji = 1, jpi ! it causes optimization problems on NEC in auto-tasking 109 ! Euler (forward) time stepping 110 ub(ji,jj,jk) = un(ji,jj,jk) 111 vb(ji,jj,jk) = vn(ji,jj,jk) 112 un(ji,jj,jk) = ua(ji,jj,jk) 113 vn(ji,jj,jk) = va(ji,jj,jk) 114 END DO 115 END DO 116 ELSE 117 DO jj = 1, jpj ! caution: don't use (:,:) for this loop 118 DO ji = 1, jpi ! it causes optimization problems on NEC in auto-tasking 119 ! Leap-frog time stepping 120 ub(ji,jj,jk) = atfp * ( ub(ji,jj,jk) + ua(ji,jj,jk) ) + atfp1 * un(ji,jj,jk) 121 vb(ji,jj,jk) = atfp * ( vb(ji,jj,jk) + va(ji,jj,jk) ) + atfp1 * vn(ji,jj,jk) 122 un(ji,jj,jk) = ua(ji,jj,jk) 123 vn(ji,jj,jk) = va(ji,jj,jk) 124 END DO 125 END DO 79 DO jk = 1, jpkm1 ! Time filter and swap of dynamics arrays 80 IF( neuler == 0 .AND. kt == nit000 ) THEN ! Euler (forward) time stepping 81 ub(:,:,:) = un(:,:,:) 82 vb(:,:,:) = vn(:,:,:) 83 un(:,:,:) = ua(:,:,:) 84 vn(:,:,:) = va(:,:,:) 85 ELSE ! Leap-frog time stepping 86 ub(:,:,:) = atfp * ( ub(:,:,:) + ua(:,:,:) ) + atfp1 * un(:,:,:) 87 vb(:,:,:) = atfp * ( vb(:,:,:) + va(:,:,:) ) + atfp1 * vn(:,:,:) 88 un(:,:,:) = ua(:,:,:) 89 vn(:,:,:) = va(:,:,:) 126 90 ENDIF 127 ! ! =============== 128 END DO ! End of slab 129 ! ! =============== 91 END DO 130 92 131 IF(ln_ctl) THEN132 CALL prt_ctl(tab3d_1=un, clinfo1=' nxt_1d - Un: ', mask1=umask, &133 & tab3d_2=vn, clinfo2=' Vn: ', mask2=vmask)134 ENDIF93 IF(ln_ctl) CALL prt_ctl( tab3d_1=un, clinfo1=' nxt_c1d - Un: ', mask1=umask, & 94 & tab3d_2=vn, clinfo2=' Vn: ' , mask2=vmask ) 95 ! 96 END SUBROUTINE dyn_nxt_c1d 135 97 136 ! IF(l_ctl) WRITE(numout,*) ' nxt - Un: ', SUM(un(2:nictl,2:njctl,1:jpkm1)*umask(2:nictl,2:njctl,1:jpkm1)), &137 ! & ' Vn: ', SUM(vn(2:nictl,2:njctl,1:jpkm1)*vmask(2:nictl,2:njctl,1:jpkm1))138 139 END SUBROUTINE dyn_nxt_1d140 98 #else 141 99 !!---------------------------------------------------------------------- … … 143 101 !!---------------------------------------------------------------------- 144 102 CONTAINS 145 SUBROUTINE dyn_nxt_ 1d ( kt )146 WRITE(*,*) 'dyn_nxt_ 1d: You should not have seen this print! error?', kt147 END SUBROUTINE dyn_nxt_ 1d103 SUBROUTINE dyn_nxt_c1d ( kt ) 104 WRITE(*,*) 'dyn_nxt_c1d: You should not have seen this print! error?', kt 105 END SUBROUTINE dyn_nxt_c1d 148 106 #endif 107 149 108 !!====================================================================== 150 END MODULE dynnxt 1d109 END MODULE dynnxt_c1d -
trunk/NEMO/C1D_SRC/step_c1d.F90
r899 r900 1 MODULE step 1d1 MODULE step_c1d 2 2 !!====================================================================== 3 !! *** MODULE step 1D***4 !! Time-stepping : manager of the ocean, tracer and ice time stepping 3 !! *** MODULE step_c1d *** 4 !! Time-stepping : manager of the ocean, tracer and ice time stepping - c1d case 5 5 !!====================================================================== 6 !! History : 2.0 ! 2004-04 (C. Ethe) adapted from step.F90 for C1D 7 !! 3.0 ! 2008-04 (G. Madec) redo the adaptation to include SBC 8 !!---------------------------------------------------------------------- 6 9 #if defined key_cfg_1d 7 10 !!---------------------------------------------------------------------- 8 !! 'key_cfg_1d' 1D Configuration11 !! 'key_cfg_1d' 1D Configuration 9 12 !!---------------------------------------------------------------------- 10 !!---------------------------------------------------------------------- 11 !! stp_1d : OPA system time-stepping on 1 direction 12 !!---------------------------------------------------------------------- 13 !! * Modules used 13 !! stp_c1d : NEMO system time-stepping in c1d case 14 !!---------------------------------------------------------------------- 14 15 USE oce ! ocean dynamics and tracers variables 15 16 USE dom_oce ! ocean space and time domain variables 16 17 USE zdf_oce ! ocean vertical physics variables 17 USE sbc_oce ! surface boundary condition: ocean18 USE ldftra_oce19 USE ldfdyn_oce20 18 USE in_out_manager ! I/O manager 19 USE iom ! 21 20 USE lbclnk 22 21 … … 25 24 USE dtatem ! ocean temperature data (dta_tem routine) 26 25 USE dtasal ! ocean salinity data (dta_sal routine) 26 USE sbcmod ! surface boundary condition (sbc routine) 27 USE sbcrnf ! surface boundary condition: runoff variables 27 28 USE ocfzpt ! surface ocean freezing point (oc_fz_pt routine) 28 29 29 USE trcstp ! passive tracer time-stepping (trc_stp routine) 30 30 USE trcstp ! passive tracer time-stepping (trc_stp routine) 31 32 USE traqsr ! solar radiation penetration (tra_qsr routine) 33 USE trasbc ! surface boundary condition (tra_sbc routine) 34 ! zdfkpp ! KPP non-local tracer fluxes (tra_kpp routine) 35 USE trazdf ! vertical mixing (tra_zdf routine) 36 USE tranxt ! time-stepping (tra_nxt routine) 37 USE tranpc ! non-penetrative convection (tra_npc routine) 38 39 USE eosbn2 ! equation of state (eos_bn2 routine) 40 41 USE dyncor1d ! Coriolis term (c1d case) (dyn_cor_1d ) 31 42 USE dynzdf ! vertical diffusion (dyn_zdf routine) 32 33 USE traqsr ! solar radiation penetration (tra_qsr routine) 34 USE tranxt ! time-stepping (tra_nxt routine) 35 USE trazdf ! vertical diffusion (tra_zdf routine) 36 USE trasbc ! surface boundary condition (tra_sbc routine) 37 38 USE eosbn2 43 USE dynnxt1d ! time-stepping (dyn_nxt routine) 39 44 40 45 USE zdfbfr ! bottom friction (zdf_bfr routine) … … 46 51 USE zdfmxl ! Mixed-layer depth (zdf_mxl routine) 47 52 48 USE dyncor1d49 USE dynnxt1d50 USE diawri1d ! Standard run outputs (dia_wri_1d routine)51 52 53 USE ice_oce ! sea-ice variable 53 USE icestp1d ! sea-ice time-stepping (ice_stp routine) 54 55 USE diawri ! Standard run outputs (dia_wri_state routine) 56 54 55 USE diawri ! Standard run outputs (dia_wri routine) 57 56 58 57 USE stpctl ! time stepping control (stp_ctl routine) 59 58 USE restart ! ocean restart (rst_wri routine) 60 59 USE prtctl ! Print control (prt_ctl routine) 60 61 61 IMPLICIT NONE 62 62 PRIVATE 63 63 64 !! * Routine accessibility 65 PUBLIC stp_1d ! called by opa.F90 64 PUBLIC stp_c1d ! called by opa.F90 66 65 67 66 !! * Substitutions … … 69 68 # include "zdfddm_substitute.h90" 70 69 !!---------------------------------------------------------------------- 71 !! OPA 9.0 , LOCEAN-IPSL (2005)72 !! $Id $73 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt70 !! NEMO 3.0 , LOCEAN-IPSL (2008) 71 !! $Id:$ 72 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 74 73 !!---------------------------------------------------------------------- 75 74 76 75 CONTAINS 77 76 78 SUBROUTINE stp_ 1d( kstp )77 SUBROUTINE stp_c1d( kstp ) 79 78 !!---------------------------------------------------------------------- 80 !! *** ROUTINE stp 1D***79 !! *** ROUTINE stp_c1d *** 81 80 !! 82 !! ** Purpose : - Time stepping of OPA (momentum and active tracer eqs.) 83 !! - Time stepping of LIM (dynamic and thermodynamic eqs.) 81 !! ** Purpose : - Time stepping of SBC including LIM (dynamic and thermodynamic eqs.) 82 !! - Time stepping of OPA (momentum and active tracer eqs.) 83 !! - Time stepping of TOP (passive tracer eqs.) 84 84 !! 85 85 !! ** Method : -1- Update forcings and data 86 !! -2- Update ocean physics86 !! -2- Update vertical ocean physics 87 87 !! -3- Compute the t and s trends 88 88 !! -4- Update t and s … … 91 91 !! -7- Compute the diagnostics variables (rd,N2, div,cur,w) 92 92 !! -8- Outputs and diagnostics 93 !!94 !! History :95 !! ! 91-03 () Original code96 !! ! 91-11 (G. Madec)97 !! ! 92-06 (M. Imbard) add a first output record98 !! ! 96-04 (G. Madec) introduction of dynspg99 !! ! 96-04 (M.A. Foujols) introduction of passive tracer100 !! 8.0 ! 97-06 (G. Madec) new architecture of call101 !! 8.2 ! 97-06 (G. Madec, M. Imbard, G. Roullet) free surface102 !! 8.2 ! 99-02 (G. Madec, N. Grima) hpg implicit103 !! 8.2 ! 00-07 (J-M Molines, M. Imbard) Open Bondary Conditions104 !! 9.0 ! 02-06 (G. Madec) free form, suppress macro-tasking105 !! ! 04-10 (C. Ethe) 1D configuration106 93 !!---------------------------------------------------------------------- 107 !! * Arguments 108 INTEGER, INTENT( in ) :: kstp ! ocean time-step index 109 110 !! * local declarations 94 INTEGER, INTENT(in) :: kstp ! ocean time-step index 95 INTEGER :: jk ! dummy loop indice 111 96 INTEGER :: indic ! error indicator if < 0 112 !! INTEGER :: ii0, ii1, ij0, ij1 ! temporary integers113 97 !! --------------------------------------------------------------------- 114 98 115 99 indic = 1 ! reset to no error condition 116 adatrj = adatrj + rdt/86400._wp117 100 118 101 CALL day( kstp ) ! Calendar 119 102 120 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 121 ! Update data, open boundaries and Forcings 103 CALL rst_opn( kstp ) ! Open the restart file 104 105 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 106 ! Update data, open boundaries, surface boundary condition (including sea-ice) 122 107 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 123 108 124 109 IF( lk_dtatem ) CALL dta_tem( kstp ) ! update 3D temperature data 125 126 IF( lk_dtasal ) CALL dta_sal( kstp ) ! Salinity data 127 128 IF( lk_dtasst ) CALL dta_sst( kstp ) ! Sea Surface Temperature data 129 130 CALL tau( kstp ) ! wind stress 131 132 CALL flx_rnf( kstp ) ! runoff data 133 134 CALL flx( kstp ) ! heat and freshwater fluxes 135 136 IF( lk_ice_lim ) THEN 137 CALL ice_stp_1d( kstp ) ! sea-ice model (Update stress & fluxes) 138 ELSE 139 CALL oce_sbc( kstp ) ! ocean surface boudaries 110 IF( lk_dtasal ) CALL dta_sal( kstp ) ! update 3D salinity data 111 112 CALL sbc ( kstp ) ! Sea Boundary Condition (including sea-ice) 113 114 IF( ninist == 1 ) THEN ! Output the initial state and forcings 115 CALL dia_wri_state( 'output.init' ) ; ninist = 0 140 116 ENDIF 141 117 142 IF( ln_fwb ) CALL flx_fwb( kstp ) ! freshwater budget143 144 145 IF( kstp == nit000 ) THEN146 IF( ninist == 1 ) THEN ! Output the initial state and forcings147 CALL dia_wri_state( 'output.init' )148 ENDIF149 ENDIF150 151 IF(ln_ctl) THEN ! print mean trends (used for debugging)152 CALL prt_ctl(tab2d_1=emp , clinfo1=' emp - : ', mask1=tmask, ovlap=1)153 CALL prt_ctl(tab2d_1=emps , clinfo1=' emps - : ', mask1=tmask, ovlap=1)154 CALL prt_ctl(tab2d_1=qns , clinfo1=' qns - : ', mask1=tmask, ovlap=1)155 CALL prt_ctl(tab2d_1=qsr , clinfo1=' qsr - : ', mask1=tmask, ovlap=1)156 CALL prt_ctl(tab3d_1=tmask , clinfo1=' tmask : ', mask1=tmask, ovlap=1, kdim=jpk)157 CALL prt_ctl(tab3d_1=tn , clinfo1=' sst - : ', mask1=tmask, ovlap=1, kdim=1)158 CALL prt_ctl(tab3d_1=sn , clinfo1=' sss - : ', mask1=tmask, ovlap=1, kdim=1)159 CALL prt_ctl(tab2d_1=utau , clinfo1=' tau - u : ', mask1=umask, &160 & tab2d_2=vtau , clinfo2=' - v : ', mask2=vmask, ovlap=1)161 ENDIF162 163 164 118 165 119 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 172 126 !----------------------------------------------------------------------- 173 127 174 CALL bn2( tb, sb, rn2 )! before Brunt-Vaisala frequency128 CALL bn2( tb, sb, rn2 ) ! before Brunt-Vaisala frequency 175 129 176 130 ! ! Vertical eddy viscosity and diffusivity coefficients 177 IF( lk_zdfric ) CALL zdf_ric( kstp ) ! Richardson number dependent Kz 178 IF( lk_zdftke ) CALL zdf_tke( kstp ) ! TKE closure scheme for Kz 179 IF( lk_zdfkpp ) CALL zdf_kpp( kstp ) ! KPP scheme for Kz 180 IF( lk_zdfcst ) avt (:,:,:) = avt0 * tmask(:,:,:) ! Constant Kz (reset avt to the background value) 181 182 131 IF( lk_zdfric ) CALL zdf_ric( kstp ) ! Richardson number dependent Kz 132 IF( lk_zdftke ) CALL zdf_tke( kstp ) ! TKE closure scheme for Kz 133 IF( lk_zdfkpp ) CALL zdf_kpp( kstp ) ! KPP closure scheme for Kz 134 IF( lk_zdfcst ) THEN ! Constant Kz (reset avt, avm to the background value) 135 avt (:,:,:) = avt0 * tmask(:,:,:) 136 avmu(:,:,:) = avm0 * umask(:,:,:) 137 avmv(:,:,:) = avm0 * vmask(:,:,:) 138 ENDIF 139 IF( nn_runoff /=0 ) THEN ! increase diffusivity at rivers mouths 140 DO jk = 2, nkrnf ; avt(:,:,jk) = avt(:,:,jk) + rn_avt_rnf * rnfmsk(:,:) ; END DO 141 ENDIF 183 142 IF( ln_zdfevd ) CALL zdf_evd( kstp ) ! enhanced vertical eddy diffusivity 184 185 IF( lk_zdfddm .AND. .NOT. lk_zdfkpp) & 143 IF( lk_zdfddm .AND. .NOT. lk_zdfkpp ) & 186 144 & CALL zdf_ddm( kstp ) ! double diffusive mixing 187 188 145 CALL zdf_bfr( kstp ) ! bottom friction 189 190 146 CALL zdf_mxl( kstp ) ! mixed layer depth 191 147 192 193 148 #if defined key_passivetrc 194 149 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 197 152 ! N.B. ua, va, ta, sa arrays are used as workspace in this section 198 153 !----------------------------------------------------------------------- 199 200 CALL trc_stp( kstp, indic ) ! time-stepping 201 154 CALL trc_stp( kstp, indic ) ! time-stepping 202 155 #endif 203 156 204 205 157 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 206 158 ! Active tracers … … 208 160 ! N.B. ua, va arrays are used as workspace in this section 209 161 !----------------------------------------------------------------------- 210 211 ta(:,:,:) = 0.e0 ! set tracer trends to zero 212 sa(:,:,:) = 0.e0 213 214 CALL tra_sbc( kstp ) ! surface boundary condition 215 216 IF( ln_traqsr ) CALL tra_qsr( kstp ) ! penetrative solar radiation qsr 217 218 IF( lk_zdfkpp ) CALL tra_kpp( kstp ) ! KPP non-local tracer fluxes 219 220 CALL tra_zdf( kstp ) ! vertical mixing 221 222 CALL tra_nxt( kstp ) ! tracer fields at next time step 223 224 CALL eos( tb, sb, rhd, rhop ) ! now (swap=before) in situ density for dynhpg module 162 ta(:,:,:) = 0.e0 ! set tracer trends to zero 163 sa(:,:,:) = 0.e0 164 165 CALL tra_sbc ( kstp ) ! surface boundary condition 166 IF( ln_traqsr ) CALL tra_qsr ( kstp ) ! penetrative solar radiation qsr 167 CALL tra_adv ( kstp ) ! horizontal & vertical advection 168 IF( lk_zdfkpp ) CALL tra_kpp ( kstp ) ! KPP non-local tracer fluxes 169 CALL tra_zdf ( kstp ) ! vertical mixing 170 CALL tra_nxt( kstp ) ! tracer fields at next time step 171 IF( ln_zdfnpc ) CALL tra_npc( kstp ) ! applied non penetrative convective adjustment on (t,s) 172 CALL eos( tb, sb, rhd, rhop ) ! now (swap=before) in situ density for dynhpg module 225 173 226 174 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 229 177 ! N.B. ta, sa arrays are used as workspace in this section 230 178 !----------------------------------------------------------------------- 231 232 179 ua(:,:,:) = 0.e0 ! set dynamics trends to zero 233 180 va(:,:,:) = 0.e0 234 235 CALL dyn_cor_1d ( kstp ) 236 ! ! vertical diffusion 237 CALL dyn_zdf( kstp ) 238 239 !i bug lbc sur emp 240 CALL lbc_lnk( emp, 'T', 1. ) 241 !i 242 243 CALL dyn_nxt_1d( kstp ) ! lateral velocity at next time step 244 181 182 CALL dyn_vor_c1d( kstp ) ! vorticity term including Coriolis 183 CALL dyn_zdf ( kstp ) ! vertical diffusion 184 CALL dyn_nxt_c1d( kstp ) ! lateral velocity at next time step 245 185 246 186 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 249 189 ! N.B. ua, va, ta, sa arrays are used as workspace in this section 250 190 !----------------------------------------------------------------------- 251 252 CALL oc_fz_pt ! ocean surface freezing temperature 253 254 255 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 256 ! Control, diagnostics and outputs 257 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 258 ! N.B. ua, va, ta, sa arrays are used as workspace in this section 259 !----------------------------------------------------------------------- 260 261 ! ! Time loop: control and print 262 CALL stp_ctl( kstp, indic ) 263 IF ( indic < 0 ) CALL ctl_stop( 'step1d: indic < 0' ) 264 265 IF ( nstop == 0 ) THEN 266 ! ! Diagnostics: 267 ! ! save and outputs 268 CALL rst_write ( kstp ) ! ocean model: restart file output 269 CALL dia_wri_1d ( kstp, indic ) ! ocean model: outputs 270 271 ENDIF 272 273 274 END SUBROUTINE stp_1d 191 CALL oc_fz_pt ! ocean surface freezing temperature 192 193 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 194 ! Control and restarts 195 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 196 CALL stp_ctl( kstp, indic ) 197 IF( kstp == nit000 ) CALL iom_close( numror ) ! close input ocean restart file 198 IF( lrst_oce ) CALL rst_write ( kstp ) ! write output ocean restart file 199 200 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 201 ! diagnostics and outputs 202 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 203 ! N.B. ua, va, ta, sa arrays are used as workspace in this section 204 !----------------------------------------------------------------------- 205 206 IF( nstop == 0 ) CALL dia_wri_c1d( kstp, indic ) ! ocean model: outputs 207 ! 208 END SUBROUTINE stp_c1d 209 275 210 #else 276 211 !!---------------------------------------------------------------------- 277 !! Default key NO 1D Config212 !! Default key NO 1D Config 278 213 !!---------------------------------------------------------------------- 279 214 CONTAINS 280 SUBROUTINE stp_ 1d ( kt )281 WRITE(*,*) 'stp_ 1d: You should not have seen this print! error?', kt282 END SUBROUTINE stp_ 1d215 SUBROUTINE stp_c1d ( kt ) ! dummy routine 216 WRITE(*,*) 'stp_c1d: You should not have seen this print! error?', kt 217 END SUBROUTINE stp_c1d 283 218 #endif 219 284 220 !!====================================================================== 285 END MODULE step 1d221 END MODULE step_c1d -
trunk/NEMO/LIM_SRC_2/iceini_2.F90
r888 r900 26 26 USE limistate_2 27 27 USE limrst_2 28 USE ini1d ! initialization of the 1D configuration29 28 USE in_out_manager 30 29 … … 101 100 READ ( numnam_ice , namicerun ) 102 101 103 IF( lk_cfg_1d ) ln_limdyn = .FALSE. ! No ice transport in 1D configuration104 105 102 IF(lwp) THEN 106 103 WRITE(numout,*) -
trunk/NEMO/OPA_SRC/DOM/domzgr.F90
r899 r900 23 23 USE closea 24 24 USE solisl 25 USE ini1d ! initialization of the1D configuration25 USE c1d ! 1D configuration 26 26 27 27 IMPLICIT NONE -
trunk/NEMO/OPA_SRC/SBC/sbcice_lim.F90
r888 r900 18 18 !!---------------------------------------------------------------------- 19 19 USE oce ! ocean dynamics and tracers 20 USE c1d ! 1d configuration 20 21 USE dom_oce ! ocean space and time domain 21 22 USE par_ice ! sea-ice parameters … … 135 136 136 137 ! ... masked sea surface freezing temperature [Kelvin] (set to rt0 over land) 137 !old fashion zsss_m (:,:) = SQRT( sss_m(:,:) )138 !old fashion zsss2_m(:,:) = sss_m(:,:) * sss_m(:,:)139 !old fashion zsss3_m(:,:) = zsss_m(:,:) * zsss_m(:,:) * zsss_m(:,:)140 !old fashion141 !old fashion DO jj = 1, jpj142 !old fashion DO ji = 1, jpi143 !old fashion t_bo(ji,jj) = ABS ( rt0 - 0.0575 * sss_m(ji,jj) &144 !old fashion & + 1.710523e-03 * zsss3_m(ji,jj) &145 !old fashion & - 2.154996e-04 * zsss2_m(ji,jj) ) &146 !old fashion * tms(ji,jj)147 !old fashion END DO148 !old fashion END DO149 138 t_bo(:,:) = tfreez( sss_m ) + rt0 150 139 … … 221 210 d_oa_i_thd(:,:,:) = 0.e0 ; d_oa_i_trp(:,:,:) = 0.e0 222 211 223 emps(:,:) = 0.e0 ;fseqv(:,:) = 0.e0212 fseqv(:,:) = 0.e0 224 213 fsbri(:,:) = 0.e0 ; fsalt_res(:,:) = 0.e0 225 214 fsalt_rpo(:,:) = 0.e0 … … 251 240 ! Dynamical processes | 252 241 !---------------------| 253 CALL lim_dyn ! Ice dynamics ( rheology/dynamics ) 254 CALL lim_trp ! Ice transport ( Advection/diffusion ) 255 CALL lim_var_agg(1) ! aggregate categories, requested 256 CALL lim_var_glo2eqv ! equivalent variables, requested for rafting 242 IF( .NOT. lk_c1d ) THEN ! Ice dynamics & transport (not in 1D case) 243 CALL lim_dyn ! Ice dynamics ( rheology/dynamics ) 244 CALL lim_trp ! Ice transport ( Advection/diffusion ) 245 CALL lim_var_agg(1) ! aggregate categories, requested 246 CALL lim_var_glo2eqv ! equivalent variables, requested for rafting 257 247 !+++++ 258 248 WRITE(numout,*) ' - After ice dynamics and transport ' 259 CALL lim_inst_state(jiindx,jjindx,1) 260 WRITE(numout,*) ' ' 249 CALL lim_inst_state( jiindx, jjindx, 1 ) 261 250 WRITE(numout,*) 262 251 WRITE(numout,*) ' Mechanical Check ************** ' … … 267 256 WRITE(numout,*) ' Sum of both minus 1 ', ato_i(jiindx,jjindx) + at_i(jiindx,jjindx) - 1.00 268 257 !+++++ 269 CALL lim_itd_me ! Mechanical redistribution ! (ridging/rafting) 258 CALL lim_itd_me ! Mechanical redistribution ! (ridging/rafting) 259 ENDIF 270 260 !--------------------| 271 261 ! Ice thermodynamics | … … 317 307 IF( lrst_ice ) CALL lim_rst_write( kt ) ! Ice restart file 318 308 CALL lim_var_glo2eqv 319 !320 ! Re-initialization of forcings321 qsr (:,:) = 0.e0322 qns (:,:) = 0.e0323 tprecip (:,:) = 0.e0324 sprecip (:,:) = 0.e0325 qsr_ice (:,:,:) = 0.e0326 qns_ice (:,:,:) = 0.e0327 dqns_ice(:,:,:) = 0.e0328 #if ! defined key_coupled329 qla_ice (:,:,:) = 0.e0330 dqla_ice(:,:,:) = 0.e0331 fr1_i0 (:,:) = 0.e0332 fr2_i0 (:,:) = 0.e0333 #else334 rrunoff (:,:) = 0.e0335 calving (:,:) = 0.e0336 #endif337 309 ! 338 310 !-------------------------------| -
trunk/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90
r888 r900 12 12 !! 'key_lim2' : LIM 2.0 sea-ice model 13 13 !!---------------------------------------------------------------------- 14 !!----------------------------------------------------------------------15 14 !! sbc_ice_lim_2 : sea-ice model time-stepping and 16 15 !! update ocean sbc over ice-covered area 17 16 !!---------------------------------------------------------------------- 18 17 USE oce ! ocean dynamics and tracers 18 USE c1d ! 1d configuration 19 19 USE dom_oce ! ocean space and time domain 20 20 USE ice_2 … … 58 58 # include "vectopt_loop_substitute.h90" 59 59 !!---------------------------------------------------------------------- 60 !! OPA 9.0 , LOCEAN-IPSL (2006)61 !! $ 60 !! NEMO/SBC 3.0 , LOCEAN-IPSL (2008) 61 !! $Id: $ 62 62 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 63 63 !!---------------------------------------------------------------------- … … 177 177 ! Ice model step ! 178 178 ! ---------------- ! 179 ; CALL lim_rst_opn_2 ( kt ) ! Open Ice restart file 180 ; CALL lim_dyn_2 ( kt ) ! Ice dynamics ( rheology/dynamics ) 181 ; CALL lim_trp_2 ( kt ) ! Ice transport ( Advection/diffusion ) 182 IF( ln_limdmp ) CALL lim_dmp_2 ( kt ) ! Ice damping 183 ; CALL lim_thd_2 ( kt ) ! Ice thermodynamics 184 ; CALL lim_sbc_2 ( kt ) ! Ice/Ocean Mass & Heat fluxes 179 CALL lim_rst_opn_2 ( kt ) ! Open Ice restart file 180 IF( .NOT. lk_c1d ) THEN ! Ice dynamics & transport (not in 1D case) 181 CALL lim_dyn_2 ( kt ) ! Ice dynamics ( rheology/dynamics ) 182 CALL lim_trp_2 ( kt ) ! Ice transport ( Advection/diffusion ) 183 IF( ln_limdmp ) CALL lim_dmp_2 ( kt ) ! Ice damping 184 ENDIF 185 CALL lim_thd_2 ( kt ) ! Ice thermodynamics 186 CALL lim_sbc_2 ( kt ) ! Ice/Ocean Mass & Heat fluxes 185 187 IF( MOD( kt+nn_fsbc-1, ninfo ) == 0 .OR. & 186 188 & ntmoy == 1 ) CALL lim_dia_2 ( kt ) ! Ice Diagnostics 187 ;CALL lim_wri_2 ( kt ) ! Ice outputs189 CALL lim_wri_2 ( kt ) ! Ice outputs 188 190 IF( lrst_ice ) CALL lim_rst_write_2( kt ) ! Ice restart file 189 191 ! -
trunk/NEMO/OPA_SRC/istate.F90
r899 r900 36 36 USE in_out_manager ! I/O manager 37 37 USE iom 38 USE ini1d! re-initialization of u-v mask for the 1D configuration38 USE c1d ! re-initialization of u-v mask for the 1D configuration 39 39 USE zpshde ! partial step: hor. derivative (zps_hde routine) 40 40 USE eosbn2 ! equation of state (eos bn2 routine) -
trunk/NEMO/OPA_SRC/opa.F90
r899 r900 73 73 USE dynspg_oce ! Control choice of surface pressure gradient schemes 74 74 USE prtctl ! Print control (prt_ctl_init routine) 75 USE ini1d ! re-initialization of u-v mask for the1D configuration76 USE dyncor 1d! Coriolis factor at T-point77 USE step 1d! Time stepping loop for the 1D configuration75 USE c1d ! 1D configuration 76 USE dyncor_c1d ! Coriolis factor at T-point 77 USE step_c1d ! Time stepping loop for the 1D configuration 78 78 79 79 USE initrc ! Initialization of the passive tracers … … 122 122 ! check that all process are still there... If some process have an error, 123 123 ! they will never enter in step and other processes will wait until the end of the cpu time! 124 IF( lk_mpp ) CALL mpp_max(nstop) 125 126 IF( lk_c1d ) THEN 127 istp = nit000 124 IF( lk_mpp ) CALL mpp_max( nstop ) 125 126 istp = nit000 127 IF( lk_c1d ) THEN ! 1D configuration (no AGRIF zoom) 128 ! 129 DO WHILE ( istp <= nitend .AND. nstop == 0 ) 130 CALL stp_c1d( istp ) 131 istp = istp + 1 132 END DO 133 ELSE ! 3D ocean with or without AGRIF zoom 134 ! 128 135 DO WHILE ( istp <= nitend .AND. nstop == 0 ) 129 136 #if defined key_agrif 130 CALL Agrif_Step(stp_1d) 131 #else 132 CALL stp_1d( istp ) 133 #endif 134 istp = istp + 1 135 136 IF( lk_mpp ) CALL mpp_max(nstop) 137 138 END DO 139 ELSE 140 istp = nit000 141 DO WHILE ( istp <= nitend .AND. nstop == 0 ) 142 #if defined key_agrif 143 CALL Agrif_Step(stp) 137 CALL Agrif_Step( stp ) 144 138 #else 145 139 CALL stp( istp ) 146 140 #endif 147 141 istp = istp + 1 148 149 IF( lk_mpp ) CALL mpp_max(nstop) 150 142 IF( lk_mpp ) CALL mpp_max( nstop ) 151 143 END DO 152 144 ENDIF … … 168 160 IF( lk_mpp ) CALL mppstop ! Close all files (mpp) 169 161 #endif 170 162 ! 171 163 END SUBROUTINE opa_model 172 164 … … 267 259 CALL dom_init ! Domain 268 260 269 IF( ln_ctl ) CALL prt_ctl_init ! Print control 270 271 IF( lk_c1d ) CALL fcorio_1d ! redefine Coriolis at T-point 261 IF( lk_c1d ) THEN ! adaptation for 1D configuration 262 CALL cor_c1d ! redefine Coriolis at T-point 263 umask(:,:,:) = tmask(:,:,:) ! U, V and T-points are the same 264 vmask(:,:,:) = tmask(:,:,:) ! 265 ENDIF 266 267 IF( ln_ctl ) CALL prt_ctl_init ! Print control 272 268 273 269 IF( lk_obc ) CALL obc_init ! Open boundaries … … 309 305 310 306 IF(lwp) WRITE(numout,cform_aaa) ! Flag AAAAAAA 311 312 IF( lk_c1d ) THEN313 CALL init_1d314 ENDIF315 307 316 308 END SUBROUTINE opa_init -
trunk/NEMO/OPA_SRC/par_oce.F90
r899 r900 28 28 INTEGER, PUBLIC, PARAMETER :: & !: 29 29 jpni = 1, & !: number of processors following i 30 jpnj = 2, & !: number of processors following j31 jpnij = 2!: nb of local domain = nb of processors30 jpnj = 1, & !: number of processors following j 31 jpnij = 1 !: nb of local domain = nb of processors 32 32 ! ! ( <= jpni x jpnj ) 33 33 #else -
trunk/NEMO/OPA_SRC/restart.F90
r899 r900 22 22 USE in_out_manager ! I/O manager 23 23 USE iom ! I/O module 24 USE ini1d! re-initialization of u-v mask for the 1D configuration24 USE c1d ! re-initialization of u-v mask for the 1D configuration 25 25 USE zpshde ! partial step: hor. derivative (zps_hde routine) 26 26 USE eosbn2 ! equation of state (eos bn2 routine)
Note: See TracChangeset
for help on using the changeset viewer.