Changeset 9168 for branches/2017
- Timestamp:
- 2017-12-23T13:27:17+01:00 (7 years ago)
- Location:
- branches/2017/dev_merge_2017/NEMOGCM
- Files:
-
- 59 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_merge_2017/NEMOGCM/CONFIG/SHARED/namelist_ref
r9161 r9168 6 6 !! 3 - Surface boundary (namsbc, namsbc_flx, namsbc_blk, namsbc_cpl, 7 7 !! namsbc_sas, namtra_qsr, namsbc_rnf, 8 !! nam berg, namsbc_isf, namsbc_iscpl,9 !! namsbc_ apr, namsbc_ssr, namsbc_wave)8 !! namsbc_isf, namsbc_iscpl, namsbc_apr, 9 !! namsbc_ssr, namsbc_wave, namberg) 10 10 !! 4 - lateral boundary (namlbc, namagrif, nambdy, nambdy_tide) 11 11 !! 5 - bottom boundary (namdrg, namdrg_top, namdrg_bot, nambbc, nambbl) … … 191 191 ln_usr = .false. ! user defined formulation (T => check usrdef_sbc) 192 192 ln_flx = .false. ! flux formulation (T => fill namsbc_flx ) 193 ln_blk = .false. ! Bulk formulation 193 ln_blk = .false. ! Bulk formulation (T => fill namsbc_blk ) 194 194 ! Type of coupling (Ocean/Ice/Atmosphere) : 195 195 ln_cpl = .false. ! atmosphere coupled formulation ( requires key_oasis3 ) … … 200 200 ! =2 opa-sas OASIS coupling: multi executable config., SAS component 201 201 ! Sea-ice : 202 nn_ice = 2 ! =0 no ice boundary condition ,203 ! =1 use observed ice-cover ,202 nn_ice = 2 ! =0 no ice boundary condition 203 ! =1 use observed ice-cover ( => fill namsbc_iif ) 204 204 ! =2 or 3 automatically for LIM3 or CICE ("key_lim3" or "key_cice") 205 205 ! except in AGRIF zoom where it has to be specified … … 345 345 / 346 346 !----------------------------------------------------------------------- 347 &namsbc_iif ! Ice-IF : use observed ice cover (nn_ice = 1) 348 !----------------------------------------------------------------------- 349 ! ! file name ! frequency (hours) ! variable ! time interp.! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 350 ! ! ! (if <0 months) ! name ! (logical) ! (T/F ) ! 'monthly' ! filename ! pairing ! filename ! 351 sn_ice ='ice_cover_clim.nc', -12. ,'ice_cover', .true. , .true. , 'yearly' , '' , '' , '' 352 ! 353 cn_dir = './' ! root directory for the location of the runoff files 354 / 355 !----------------------------------------------------------------------- 347 356 &namtra_qsr ! penetrative solar radiation (ln_traqsr =T) 348 357 !----------------------------------------------------------------------- … … 443 452 sn_sst = 'sst_data', 24 , 'sst' , .false. , .false., 'yearly' , '' , '' , '' 444 453 sn_sss = 'sss_data', -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' , '' 445 446 454 cn_dir = './' ! root directory for the location of the runoff files 447 nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) 455 ! 456 nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) 457 rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] 448 458 nn_sssr = 2 ! add a damping term in the surface freshwater flux (=2) 449 ! ! or to SSS only (=1) or no damping term (=0) 450 rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] 451 rn_deds = -166.67 ! magnitude of the damping on salinity [mm/day] 452 ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) 453 rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] 459 ! ! or to SSS only (=1) or no damping term (=0) 460 rn_deds = -166.67 ! magnitude of the damping on salinity [mm/day] 461 ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) 462 rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] 454 463 / 455 464 !----------------------------------------------------------------------- … … 660 669 ! 661 670 ln_trabbc = .false. ! Apply a geothermal heating at the ocean bottom 662 nn_geoflx = 2 ! geothermal heat flux: = 0 no flux663 ! = 1 constant flux664 ! = 2 variable flux (read in geothermal_heating.nc in mW/m2)665 rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2]666 cn_dir = './' ! root directory for the location of the runoff files671 nn_geoflx = 2 ! geothermal heat flux: = 0 no flux 672 ! ! = 1 constant flux 673 ! ! = 2 variable flux (read in geothermal_heating.nc in mW/m2) 674 rn_geoflx_cst = 86.4e-3 ! Constant value of geothermal heat flux [W/m2] 675 cn_dir = './' ! root directory for the location of the runoff files 667 676 / 668 677 !----------------------------------------------------------------------- … … 670 679 !----------------------------------------------------------------------- 671 680 ln_trabbl = .false. ! Bottom Boundary Layer parameterisation flag 672 nn_bbl_ldf = 1 ! diffusive bbl (=1) or not (=0)673 nn_bbl_adv = 0 ! advective bbl (=1/2) or not (=0)674 rn_ahtbbl = 1000. ! lateral mixing coefficient in the bbl [m2/s]675 rn_gambbl = 10. ! advective bbl coefficient [s]681 nn_bbl_ldf = 1 ! diffusive bbl (=1) or not (=0) 682 nn_bbl_adv = 0 ! advective bbl (=1/2) or not (=0) 683 rn_ahtbbl = 1000. ! lateral mixing coefficient in the bbl [m2/s] 684 rn_gambbl = 10. ! advective bbl coefficient [s] 676 685 / 677 686 … … 784 793 !----------------------------------------------------------------------- 785 794 ln_tradmp = .true. ! add a damping term 786 nn_zdmp = 0! vertical shape =0 damping throughout the water column795 nn_zdmp = 0 ! vertical shape =0 damping throughout the water column 787 796 ! ! =1 no damping in the mixing layer (kz criteria) 788 797 ! ! =2 no damping in the mixed layer (rho crieria) 789 cn_resto ='resto.nc'! Name of file containing restoration coeff. field (use dmp_tools to create this)798 cn_resto = 'resto.nc' ! Name of file containing restoration coeff. field (use dmp_tools to create this) 790 799 / 791 800 -
branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/VORTEX/MY_SRC/domvvl.F90
r9067 r9168 983 983 REWIND( numnam_cfg ) ! Namelist nam_vvl in configuration namelist : Parameters of the run 984 984 READ ( numnam_cfg, nam_vvl, IOSTAT = ios, ERR = 902 ) 985 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'nam_vvl in configuration namelist', lwp )985 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nam_vvl in configuration namelist', lwp ) 986 986 IF(lwm) WRITE ( numond, nam_vvl ) 987 987 ! -
branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/WAD/MY_SRC/bdyini.F90
r9125 r9168 81 81 READ ( numnam_ref, nambdy, IOSTAT = ios, ERR = 901) 82 82 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy in reference namelist', lwp ) 83 !84 83 REWIND( numnam_cfg ) ! Namelist nambdy in configuration namelist :Unstructured open boundaries 85 84 READ ( numnam_cfg, nambdy, IOSTAT = ios, ERR = 902 ) 86 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'nambdy in configuration namelist', lwp )85 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nambdy in configuration namelist', lwp ) 87 86 IF(lwm) WRITE ( numond, nambdy ) 88 87 … … 418 417 419 418 DO ib_bdy = 1, nb_bdy 420 419 ! 421 420 IF( .NOT. ln_coords_file(ib_bdy) ) THEN ! Work out size of global arrays from namelist parameters 422 421 ! 423 422 icount = icount + 1 424 423 ! No REWIND here because may need to read more than one nambdy_index namelist. 425 ! Read only namelist_cfg to avoid unseccessfull overwrite 426 !! REWIND( numnam_ref ) ! Namelist nambdy_index in reference namelist : Open boundaries indexes 427 !! READ ( numnam_ref, namrun, IOSTAT = ios, ERR = 903) 428 !!903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_index in reference namelist', lwp ) 429 430 !! REWIND( numnam_cfg ) ! Namelist nambdy_index in configuration namelist : Open boundaries indexes 424 ! Read only namelist_cfg to avoid unseccessfull overwrite 425 ! keep full control of the configuration namelist 431 426 READ ( numnam_cfg, nambdy_index, IOSTAT = ios, ERR = 904 ) 432 904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_index in configuration namelist', lwp )427 904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_index in configuration namelist', lwp ) 433 428 IF(lwm) WRITE ( numond, nambdy_index ) 434 429 -
branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/WAD/MY_SRC/domain.F90
r9125 r9168 293 293 REWIND( numnam_cfg ) ! Namelist namrun in configuration namelist : Parameters of the run 294 294 READ ( numnam_cfg, namrun, IOSTAT = ios, ERR = 902 ) 295 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namrun in configuration namelist', lwp )295 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namrun in configuration namelist', lwp ) 296 296 IF(lwm) WRITE ( numond, namrun ) 297 297 ! … … 378 378 REWIND( numnam_ref ) ! Namelist namdom in reference namelist : space & time domain (bathymetry, mesh, timestep) 379 379 READ ( numnam_ref, namdom, IOSTAT = ios, ERR = 903) 380 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdom in reference namelist', lwp )380 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdom in reference namelist', lwp ) 381 381 ! 382 382 REWIND( numnam_cfg ) ! Namelist namdom in configuration namelist : space & time domain (bathymetry, mesh, timestep) 383 383 READ ( numnam_cfg, namdom, IOSTAT = ios, ERR = 904 ) 384 904 IF( ios /= 0 )CALL ctl_nam ( ios , 'namdom in configuration namelist', lwp )384 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namdom in configuration namelist', lwp ) 385 385 IF(lwm) WRITE ( numond, namdom ) 386 386 ! … … 411 411 REWIND( numnam_ref ) ! Namelist namnc4 in reference namelist : NETCDF 412 412 READ ( numnam_ref, namnc4, IOSTAT = ios, ERR = 907) 413 907 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namnc4 in reference namelist', lwp )413 907 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namnc4 in reference namelist', lwp ) 414 414 ! 415 415 REWIND( numnam_cfg ) ! Namelist namnc4 in configuration namelist : NETCDF 416 416 READ ( numnam_cfg, namnc4, IOSTAT = ios, ERR = 908 ) 417 908 IF( ios /= 0 )CALL ctl_nam ( ios , 'namnc4 in configuration namelist', lwp )417 908 IF( ios > 0 ) CALL ctl_nam ( ios , 'namnc4 in configuration namelist', lwp ) 418 418 IF(lwm) WRITE( numond, namnc4 ) 419 419 … … 496 496 !! ** Purpose : read the domain size in domain configuration file 497 497 !! 498 !! ** Method : 499 !! 498 !! ** Method : read the cn_domcfg NetCDF file 500 499 !!---------------------------------------------------------------------- 501 500 CHARACTER(len=*), DIMENSION(:), INTENT(out) :: ldtxt ! stored print information … … 512 511 ii = 1 513 512 WRITE(ldtxt(ii),*) ' ' ; ii = ii+1 514 WRITE(ldtxt(ii),*) 'domain_cfg : domain size read in ', TRIM( cn_domcfg ), ' file' 513 WRITE(ldtxt(ii),*) 'domain_cfg : domain size read in ', TRIM( cn_domcfg ), ' file' ; ii = ii+1 515 514 WRITE(ldtxt(ii),*) '~~~~~~~~~~ ' ; ii = ii+1 516 515 ! … … 524 523 CALL iom_get( inum, 'ORCA_index', zorca_res ) ; kk_cfg = INT( zorca_res ) 525 524 ! 526 WRITE(ldtxt(ii),*) ' ' ; ii = ii+1527 WRITE(ldtxt(ii),*) ' ==>>> ORCA configuration ' ; ii = ii+1528 WRITE(ldtxt(ii),*) ' ' ; ii = ii+1525 WRITE(ldtxt(ii),*) ' ' ; ii = ii+1 526 WRITE(ldtxt(ii),*) ' ==>>> ORCA configuration ' ; ii = ii+1 527 WRITE(ldtxt(ii),*) ' ' ; ii = ii+1 529 528 ! 530 529 ELSE !- cd_cfg & k_cfg are not used -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90
r9044 r9168 146 146 REWIND( numnam_ref ) ! Namelist nam_asminc in reference namelist : Assimilation increment 147 147 READ ( numnam_ref, nam_asminc, IOSTAT = ios, ERR = 901) 148 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_asminc in reference namelist', lwp ) 149 148 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_asminc in reference namelist', lwp ) 150 149 REWIND( numnam_cfg ) ! Namelist nam_asminc in configuration namelist : Assimilation increment 151 150 READ ( numnam_cfg, nam_asminc, IOSTAT = ios, ERR = 902 ) 152 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'nam_asminc in configuration namelist', lwp )151 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nam_asminc in configuration namelist', lwp ) 153 152 IF(lwm) WRITE ( numond, nam_asminc ) 154 153 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90
r9124 r9168 507 507 READ ( numnam_ref, nambdy_dta, IOSTAT = ios, ERR = 901) 508 508 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_dta in reference namelist', lwp ) 509 510 509 READ ( numnam_cfg, nambdy_dta, IOSTAT = ios, ERR = 902 ) 511 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'nambdy_dta in configuration namelist', lwp )510 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nambdy_dta in configuration namelist', lwp ) 512 511 IF(lwm) WRITE( numond, nambdy_dta ) 513 512 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90
r9124 r9168 80 80 READ ( numnam_ref, nambdy, IOSTAT = ios, ERR = 901) 81 81 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy in reference namelist', lwp ) 82 !83 82 REWIND( numnam_cfg ) ! Namelist nambdy in configuration namelist :Unstructured open boundaries 84 83 READ ( numnam_cfg, nambdy, IOSTAT = ios, ERR = 902 ) 85 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'nambdy in configuration namelist', lwp )84 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nambdy in configuration namelist', lwp ) 86 85 IF(lwm) WRITE ( numond, nambdy ) 87 86 … … 419 418 icount = icount + 1 420 419 ! No REWIND here because may need to read more than one nambdy_index namelist. 421 ! Read only namelist_cfg to avoid unseccessfull overwrite 422 !! REWIND( numnam_ref ) ! Namelist nambdy_index in reference namelist : Open boundaries indexes 423 !! READ ( numnam_ref, namrun, IOSTAT = ios, ERR = 903) 424 !!903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_index in reference namelist', lwp ) 425 426 !! REWIND( numnam_cfg ) ! Namelist nambdy_index in configuration namelist : Open boundaries indexes 420 ! Read only namelist_cfg to avoid unseccessfull overwrite 421 ! keep full control of the configuration namelist 427 422 READ ( numnam_cfg, nambdy_index, IOSTAT = ios, ERR = 904 ) 428 423 904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_index in configuration namelist', lwp ) -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90
r9125 r9168 102 102 ! Don't REWIND here - may need to read more than one of these namelists. 103 103 READ ( numnam_ref, nambdy_tide, IOSTAT = ios, ERR = 901) 104 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_tide in reference namelist', lwp )104 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_tide in reference namelist', lwp ) 105 105 READ ( numnam_cfg, nambdy_tide, IOSTAT = ios, ERR = 902 ) 106 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'nambdy_tide in configuration namelist', lwp )106 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nambdy_tide in configuration namelist', lwp ) 107 107 IF(lwm) WRITE ( numond, nambdy_tide ) 108 108 ! ! Parameter control and print -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/C1D/c1d.F90
r6140 r9168 56 56 REWIND( numnam_cfg ) ! Namelist namtra_adv in configuration namelist : Tracer advection scheme 57 57 READ ( numnam_cfg, namc1d, IOSTAT = ios, ERR = 902 ) 58 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namc1d in configuration namelist', lwp )58 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namc1d in configuration namelist', lwp ) 59 59 IF(lwm) WRITE ( numond, namc1d ) 60 60 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/C1D/domc1d.F90
r9125 r9168 72 72 REWIND( numnam_cfg ) ! Namelist namdom in configuration namelist : space & time domain (bathymetry, mesh, timestep) 73 73 READ ( numnam_cfg, namdom, IOSTAT = ios, ERR = 902 ) 74 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namdom in configuration namelist', lwp )74 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namdom in configuration namelist', lwp ) 75 75 76 76 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/C1D/dtauvd.F90
r9125 r9168 66 66 REWIND( numnam_cfg ) ! Namelist namc1d_uvd in configuration namelist : Parameters of the run 67 67 READ ( numnam_cfg, namc1d_uvd, IOSTAT = ios, ERR = 902 ) 68 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namc1d_uvd in configuration namelist', lwp )68 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namc1d_uvd in configuration namelist', lwp ) 69 69 IF(lwm) WRITE ( numond, namc1d_uvd ) 70 70 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/C1D/dyndmp.F90
r9125 r9168 82 82 READ ( numnam_ref, namc1d_dyndmp, IOSTAT = ios, ERR = 901) 83 83 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc1d_dyndmp in reference namelist', lwp ) 84 !85 84 REWIND( numnam_cfg ) ! Namelist namc1d_dyndmp in configuration namelist : Parameters of the run 86 85 READ ( numnam_cfg, namc1d_dyndmp, IOSTAT = ios, ERR = 902 ) 87 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namc1d_dyndmp in configuration namelist', lwp )86 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namc1d_dyndmp in configuration namelist', lwp ) 88 87 IF(lwm) WRITE ( numond, namc1d_dyndmp ) 89 88 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/CRS/crsini.F90
r9125 r9168 76 76 !!---------------------------------------------------------------------- 77 77 ! 78 IF(lwp) THEN79 WRITE(numout,*)80 WRITE(numout,*) 'crs_init : Initializing the grid coarsening module '81 ENDIF82 83 78 !--------------------------------------------------------- 84 79 ! 1. Read Namelist file 85 80 !--------------------------------------------------------- 86 81 ! 87 88 82 REWIND( numnam_ref ) ! Namelist namrun in reference namelist : Parameters of the run 89 83 READ ( numnam_ref, namcrs, IOSTAT = ios, ERR = 901) 90 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcrs in reference namelist', lwp ) 91 84 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcrs in reference namelist', lwp ) 92 85 REWIND( numnam_cfg ) ! Namelist namrun in configuration namelist : Parameters of the run 93 86 READ ( numnam_cfg, namcrs, IOSTAT = ios, ERR = 902 ) 94 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namcrs in configuration namelist', lwp )87 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namcrs in configuration namelist', lwp ) 95 88 IF(lwm) WRITE ( numond, namcrs ) 96 89 97 90 IF(lwp) THEN 98 91 WRITE(numout,*) 99 WRITE(numout,*) 'crs_init: Namelist namcrs ' 100 WRITE(numout,*) ' coarsening factor in i-direction nn_factx = ', nn_factx 101 WRITE(numout,*) ' coarsening factor in j-direction nn_facty = ', nn_facty 102 WRITE(numout,*) ' bin centering preference nn_binref = ', nn_binref 103 WRITE(numout,*) ' create (=1) a mesh file or not (=0) nn_msh_crs = ', nn_msh_crs 104 WRITE(numout,*) ' type of Kz coarsening (0,1,2) nn_crs_kz = ', nn_crs_kz 105 WRITE(numout,*) ' wn coarsened or computed using hdivn ln_crs_wn = ', ln_crs_wn 92 WRITE(numout,*) 'crs_init : Initializing the grid coarsening module' 93 WRITE(numout,*) '~~~~~~~~' 94 WRITE(numout,*) ' Namelist namcrs ' 95 WRITE(numout,*) ' coarsening factor in i-direction nn_factx = ', nn_factx 96 WRITE(numout,*) ' coarsening factor in j-direction nn_facty = ', nn_facty 97 WRITE(numout,*) ' bin centering preference nn_binref = ', nn_binref 98 WRITE(numout,*) ' create (=1) a mesh file or not (=0) nn_msh_crs = ', nn_msh_crs 99 WRITE(numout,*) ' type of Kz coarsening (0,1,2) nn_crs_kz = ', nn_crs_kz 100 WRITE(numout,*) ' wn coarsened or computed using hdivn ln_crs_wn = ', ln_crs_wn 106 101 ENDIF 107 102 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/dia25h.F90
r9019 r9168 54 54 REWIND ( numnam_ref ) ! Read Namelist nam_dia25h in reference namelist : 25hour mean diagnostics 55 55 READ ( numnam_ref, nam_dia25h, IOSTAT=ios, ERR= 901 ) 56 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_dia25h in reference namelist', lwp ) 57 56 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_dia25h in reference namelist', lwp ) 58 57 REWIND( numnam_cfg ) ! Namelist nam_dia25h in configuration namelist 25hour diagnostics 59 58 READ ( numnam_cfg, nam_dia25h, IOSTAT = ios, ERR = 902 ) 60 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'nam_dia25h in configuration namelist', lwp )59 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nam_dia25h in configuration namelist', lwp ) 61 60 IF(lwm) WRITE ( numond, nam_dia25h ) 62 61 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diaharm.F90
r9124 r9168 88 88 REWIND( numnam_ref ) ! Namelist nam_diaharm in reference namelist : Tidal harmonic analysis 89 89 READ ( numnam_ref, nam_diaharm, IOSTAT = ios, ERR = 901) 90 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_diaharm in reference namelist', lwp ) 91 90 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_diaharm in reference namelist', lwp ) 92 91 REWIND( numnam_cfg ) ! Namelist nam_diaharm in configuration namelist : Tidal harmonic analysis 93 92 READ ( numnam_cfg, nam_diaharm, IOSTAT = ios, ERR = 902 ) 94 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'nam_diaharm in configuration namelist', lwp )93 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nam_diaharm in configuration namelist', lwp ) 95 94 IF(lwm) WRITE ( numond, nam_diaharm ) 96 95 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90
r9124 r9168 13 13 !! dia_hsb_init : Initialization of the conservation diagnostic 14 14 !!---------------------------------------------------------------------- 15 USE oce 16 USE dom_oce 17 USE phycst 18 USE sbc_oce 19 USE sbcrnf 20 USE sbcisf 21 USE domvvl 22 USE traqsr 23 USE trabbc 24 USE trabbc 25 USE restart 26 USE bdy_oce , ONLY: ln_bdy15 USE oce ! ocean dynamics and tracers 16 USE dom_oce ! ocean space and time domain 17 USE phycst ! physical constants 18 USE sbc_oce ! surface thermohaline fluxes 19 USE sbcrnf ! river runoff 20 USE sbcisf ! ice shelves 21 USE domvvl ! vertical scale factors 22 USE traqsr ! penetrative solar radiation 23 USE trabbc ! bottom boundary condition 24 USE trabbc ! bottom boundary condition 25 USE restart ! ocean restart 26 USE bdy_oce , ONLY : ln_bdy 27 27 ! 28 USE iom 29 USE in_out_manager 30 USE lib_fortran 31 USE lib_mpp 32 USE timing 28 USE iom ! I/O manager 29 USE in_out_manager ! I/O manager 30 USE lib_fortran ! glob_sum 31 USE lib_mpp ! distributed memory computing library 32 USE timing ! preformance summary 33 33 34 34 IMPLICIT NONE … … 346 346 REWIND( numnam_ref ) ! Namelist namhsb in reference namelist 347 347 READ ( numnam_ref, namhsb, IOSTAT = ios, ERR = 901) 348 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namhsb in reference namelist', lwp ) 349 348 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namhsb in reference namelist', lwp ) 350 349 REWIND( numnam_cfg ) ! Namelist namhsb in configuration namelist 351 350 READ ( numnam_cfg, namhsb, IOSTAT = ios, ERR = 902 ) 352 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namhsb in configuration namelist', lwp )351 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namhsb in configuration namelist', lwp ) 353 352 IF(lwm) WRITE ( numond, namhsb ) 354 353 355 354 IF(lwp) THEN 356 355 WRITE(numout,*) 357 WRITE(numout,*) 'dia_hsb_init' 358 WRITE(numout,*) '~~~~~~~~ ' 359 WRITE(numout,*) ' check the heat and salt budgets (T) or not (F) ln_diahsb = ', ln_diahsb 356 WRITE(numout,*) 'dia_hsb_init : heat and salt budgets diagnostics' 357 WRITE(numout,*) '~~~~~~~~~~~~ ' 358 WRITE(numout,*) ' Namelist namhsb :' 359 WRITE(numout,*) ' check the heat and salt budgets (T) or not (F) ln_diahsb = ', ln_diahsb 360 360 ENDIF 361 361 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DIU/diurnal_bulk.F90
r6010 r9168 19 19 20 20 IMPLICIT NONE 21 PRIVATE 21 22 22 23 ! Namelist parameters … … 34 35 ! ! absorbed radiation 35 36 36 PRIVATE37 37 PUBLIC diurnal_sst_bulk_init, diurnal_sst_takaya_step 38 38 39 CONTAINS 39 !!---------------------------------------------------------------------- 40 CONTAINS 40 41 41 42 SUBROUTINE diurnal_sst_bulk_init … … 43 44 !! *** ROUTINE diurnal_sst_init *** 44 45 !! 45 !! ** Purpose : Initialise the Takaya diurnal model 46 47 !!---------------------------------------------------------------------- 48 49 IMPLICIT NONE 50 51 INTEGER :: ios 52 46 !! ** Purpose : Initialise the Takaya diurnal model 47 !!---------------------------------------------------------------------- 48 INTEGER :: ios ! local integer 49 !! 53 50 NAMELIST /namdiu/ ln_diurnal, ln_diurnal_only 54 51 !!---------------------------------------------------------------------- 52 55 53 ! Read the namelist 56 54 REWIND( numnam_ref ) 57 READ ( numnam_ref, namdiu, IOSTAT = ios, ERR = 901 )58 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdiu in reference namelist', lwp )55 READ ( numnam_ref, namdiu, IOSTAT = ios, ERR = 901 ) 56 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdiu in reference namelist', lwp ) 59 57 REWIND( numnam_cfg ) 60 READ ( numnam_cfg, namdiu, IOSTAT = ios, ERR = 902 )61 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namdiu in configuration namelist', lwp )62 63 IF 58 READ ( numnam_cfg, namdiu, IOSTAT = ios, ERR = 902 ) 59 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namdiu in configuration namelist', lwp ) 60 ! 61 IF( ln_diurnal_only .AND. ( .NOT. ln_diurnal ) ) THEN 64 62 CALL ctl_stop( "ln_diurnal_only set, but ln_diurnal = FALSE !" ) 65 63 ENDIF 66 64 67 IF ( ln_diurnal ) THEN 68 69 ! Allocate arrays 65 IF( ln_diurnal ) THEN 66 ! 70 67 ALLOCATE( x_dsst(jpi,jpj), x_solfrac(jpi,jpj) ) 71 72 ! Initialise the solar fraction 73 x_solfrac = 0._wp 74 x_dsst = 0._wp 75 76 IF ( ln_diurnal_only ) THEN 68 ! 69 x_solfrac = 0._wp ! Initialise the solar fraction 70 x_dsst = 0._wp 71 ! 72 IF( ln_diurnal_only ) THEN 77 73 CALL ctl_warn( "ln_diurnal_only set; only the diurnal component of SST will be calculated" ) 78 74 ENDIF … … 80 76 81 77 END SUBROUTINE diurnal_sst_bulk_init 82 83 SUBROUTINE diurnal_sst_takaya_step(kt, psolflux, pqflux, ptauflux, prho, p_rdt,& 78 79 80 SUBROUTINE diurnal_sst_takaya_step(kt, psolflux, pqflux, ptauflux, prho, p_rdt, & 84 81 & pla, pthick, pcoolthick, pmu, & 85 82 & p_fvel_bkginc, p_hflux_bkginc) … … 96 93 !! temperature, Takaya et al, JGR, 2010 97 94 !!---------------------------------------------------------------------- 98 99 IMPLICIT NONE 100 101 ! Dummy variables 102 REAL(wp), INTENT(IN), DIMENSION(jpi,jpj) :: psolflux ! solar flux (Watts) 103 REAL(wp), INTENT(IN), DIMENSION(jpi,jpj) :: pqflux ! heat (non-solar) 104 ! ! flux (Watts) 105 REAL(wp), INTENT(IN), DIMENSION(jpi,jpj) :: ptauflux ! wind stress 106 ! ! (kg/ m s^2) 107 REAL(wp), INTENT(IN), DIMENSION(jpi,jpj) :: prho ! water density 108 ! ! (kg/m^3) 109 REAL(wp), OPTIONAL, INTENT(IN), DIMENSION(jpi,jpj) :: pLa 110 ! ! Langmuir number 111 REAL(wp), OPTIONAL, INTENT(IN), DIMENSION(jpi,jpj) :: pthick 112 ! ! warm layer thickness (m) 113 REAL(wp), OPTIONAL, INTENT(IN), DIMENSION(jpi,jpj) :: pcoolthick 114 ! ! cool skin thickness (m) 115 REAL(wp), OPTIONAL, INTENT(IN), DIMENSION(jpi,jpj) :: pmu 116 ! ! mu parameter 117 REAL(wp), OPTIONAL, INTENT(IN), DIMENSION(jpi,jpj) :: p_hflux_bkginc 118 ! ! optional increment to the 119 ! ! heat flux 120 REAL(wp), OPTIONAL, INTENT(IN), DIMENSION(jpi,jpj) :: p_fvel_bkginc 121 ! ! optional increment to the 122 ! ! friction velocity 123 REAL(wp), INTENT(IN) :: p_rdt ! time-step 124 125 ! Local variables 95 INTEGER , INTENT(in) :: kt ! time step 96 REAL(wp), DIMENSION(jpi,jpj) , INTENT(in) :: psolflux ! solar flux (Watts) 97 REAL(wp), DIMENSION(jpi,jpj) , INTENT(in) :: pqflux ! heat (non-solar) flux (Watts) 98 REAL(wp), DIMENSION(jpi,jpj) , INTENT(in) :: ptauflux ! wind stress (kg/ m s^2) 99 REAL(wp), DIMENSION(jpi,jpj) , INTENT(in) :: prho ! water density (kg/m^3) 100 REAL(wp) , INTENT(in) :: p_rdt ! time-step 101 REAL(wp), DIMENSION(jpi,jpj), OPTIONAL, INTENT(in) :: pLa ! Langmuir number 102 REAL(wp), DIMENSION(jpi,jpj), OPTIONAL, INTENT(in) :: pthick ! warm layer thickness (m) 103 REAL(wp), DIMENSION(jpi,jpj), OPTIONAL, INTENT(in) :: pcoolthick ! cool skin thickness (m) 104 REAL(wp), DIMENSION(jpi,jpj), OPTIONAL, INTENT(in) :: pmu ! mu parameter 105 REAL(wp), DIMENSION(jpi,jpj), OPTIONAL, INTENT(in) :: p_hflux_bkginc ! increment to the heat flux 106 REAL(wp), DIMENSION(jpi,jpj), OPTIONAL, INTENT(in) :: p_fvel_bkginc ! increment to the friction velocity 107 ! 108 INTEGER :: ji,jj 109 LOGICAL :: ll_calcfrac 126 110 REAL(wp), DIMENSION(jpi,jpj) :: z_fvel ! friction velocity 127 111 REAL(wp), DIMENSION(jpi,jpj) :: zthick, zcoolthick, zmu, zla 128 112 REAL(wp), DIMENSION(jpi,jpj) :: z_abflux ! absorbed flux 129 113 REAL(wp), DIMENSION(jpi,jpj) :: z_fla ! Langmuir function value 130 131 LOGICAL :: ll_calcfrac 132 133 INTEGER :: ji,jj 134 INTEGER, INTENT(IN) :: kt ! time step 114 !!---------------------------------------------------------------------- 135 115 136 116 ! Set optional arguments to their defaults 137 IF ( .NOT. PRESENT(pthick) ) THEN 138 zthick(:,:) = 3._wp 139 ELSE 140 zthick(:,:) = pthick(:,:) 141 ENDIF 142 IF ( .NOT. PRESENT(pcoolthick) ) THEN 143 zcoolthick(:,:) = 0._wp 144 ELSE 145 zcoolthick(:,:) = pcoolthick(:,:) 146 ENDIF 147 IF ( .NOT. PRESENT(pmu) ) THEN 148 zmu(:,:) = 0.3_wp 149 ELSE 150 zmu(:,:) = pmu(:,:) 151 ENDIF 152 IF ( .NOT. PRESENT(pla) ) THEN 153 zla(:,:) = 0.3_wp 154 ELSE 155 zla(:,:) = pla(:,:) 117 IF( .NOT. PRESENT( pthick ) ) THEN ; zthick(:,:) = 3._wp 118 ELSE ; zthick(:,:) = pthick(:,:) 119 ENDIF 120 IF( .NOT. PRESENT(pcoolthick) ) THEN ; zcoolthick(:,:) = 0._wp 121 ELSE ; zcoolthick(:,:) = pcoolthick(:,:) 122 ENDIF 123 IF( .NOT. PRESENT( pmu ) ) THEN ; zmu(:,:) = 0.3_wp 124 ELSE ; zmu(:,:) = pmu(:,:) 125 ENDIF 126 IF( .NOT. PRESENT(pla) ) THEN ; zla(:,:) = 0.3_wp 127 ELSE ; zla(:,:) = pla(:,:) 156 128 ENDIF 157 129 … … 161 133 DO ji = 1, jpi 162 134 IF( ( x_solfrac(ji,jj) == 0._wp ) .AND. ( tmask(ji,jj,1) == 1._wp ) ) & 163 & x_solfrac(ji,jj) = solfrac( zcoolthick(ji,jj),zthick(ji,jj) )135 & x_solfrac(ji,jj) = solfrac( zcoolthick(ji,jj),zthick(ji,jj) ) 164 136 END DO 165 137 END DO … … 195 167 196 168 ! Increment the temperature using the implicit solution 197 x_dsst(:,:) = t_imp( x_dsst(:,:), p_rdt, z_abflux(:,:), z_fvel(:,:), & 198 z_fla(:,:), zmu(:,:), zthick(:,:), prho(:,:)) 199 200 201 169 x_dsst(:,:) = t_imp( x_dsst(:,:), p_rdt, z_abflux(:,:), z_fvel(:,:), & 170 & z_fla(:,:), zmu(:,:), zthick(:,:), prho(:,:) ) 171 ! 202 172 END SUBROUTINE diurnal_sst_takaya_step 203 173 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90
r9161 r9168 284 284 READ ( numnam_ref, namrun, IOSTAT = ios, ERR = 901) 285 285 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namrun in reference namelist', lwp ) 286 !287 286 REWIND( numnam_cfg ) ! Namelist namrun in configuration namelist : Parameters of the run 288 287 READ ( numnam_cfg, namrun, IOSTAT = ios, ERR = 902 ) 289 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namrun in configuration namelist', lwp )288 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namrun in configuration namelist', lwp ) 290 289 IF(lwm) WRITE ( numond, namrun ) 291 290 ! … … 335 334 nwrite = nn_write 336 335 neuler = nn_euler 337 IF ( neuler == 1 .AND. .NOT. ln_rstart ) THEN 338 WRITE(ctmp1,*) 'ln_rstart =.FALSE., nn_euler is forced to 0 ' 339 CALL ctl_warn( ctmp1 ) 336 IF( neuler == 1 .AND. .NOT. ln_rstart ) THEN 337 IF(lwp) WRITE(numout,*) 338 IF(lwp) WRITE(numout,*)' Start from rest (ln_rstart=F) ==>>> an Euler initial time step is used,' 339 IF(lwp) WRITE(numout,*)' nn_euler is forced to 0 ' 340 340 neuler = 0 341 341 ENDIF … … 372 372 REWIND( numnam_ref ) ! Namelist namdom in reference namelist : space & time domain (bathymetry, mesh, timestep) 373 373 READ ( numnam_ref, namdom, IOSTAT = ios, ERR = 903) 374 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdom in reference namelist', lwp ) 375 ! 374 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdom in reference namelist', lwp ) 376 375 REWIND( numnam_cfg ) ! Namelist namdom in configuration namelist : space & time domain (bathymetry, mesh, timestep) 377 376 READ ( numnam_cfg, namdom, IOSTAT = ios, ERR = 904 ) 378 904 IF( ios /= 0 )CALL ctl_nam ( ios , 'namdom in configuration namelist', lwp )377 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namdom in configuration namelist', lwp ) 379 378 IF(lwm) WRITE ( numond, namdom ) 380 379 ! … … 405 404 READ ( numnam_ref, namnc4, IOSTAT = ios, ERR = 907) 406 405 907 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namnc4 in reference namelist', lwp ) 407 !408 406 REWIND( numnam_cfg ) ! Namelist namnc4 in configuration namelist : NETCDF 409 407 READ ( numnam_cfg, namnc4, IOSTAT = ios, ERR = 908 ) 410 908 IF( ios /=0 ) CALL ctl_nam ( ios , 'namnc4 in configuration namelist', lwp )408 908 IF( ios > 0 ) CALL ctl_nam ( ios , 'namnc4 in configuration namelist', lwp ) 411 409 IF(lwm) WRITE( numond, namnc4 ) 412 410 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90
r9124 r9168 105 105 REWIND( numnam_ref ) ! Namelist namlbc in reference namelist : Lateral momentum boundary condition 106 106 READ ( numnam_ref, namlbc, IOSTAT = ios, ERR = 901 ) 107 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlbc in reference namelist', lwp ) 108 107 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlbc in reference namelist', lwp ) 109 108 REWIND( numnam_cfg ) ! Namelist namlbc in configuration namelist : Lateral momentum boundary condition 110 109 READ ( numnam_cfg, namlbc, IOSTAT = ios, ERR = 902 ) 111 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namlbc in configuration namelist', lwp )110 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namlbc in configuration namelist', lwp ) 112 111 IF(lwm) WRITE ( numond, namlbc ) 113 112 … … 151 150 REWIND( numnam_ref ) ! Namelist nambdy in reference namelist :Unstructured open boundaries 152 151 READ ( numnam_ref, nambdy, IOSTAT = ios, ERR = 903) 153 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy in reference namelist', lwp ) 154 152 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy in reference namelist', lwp ) 155 153 REWIND( numnam_cfg ) ! Namelist nambdy in configuration namelist :Unstructured open boundaries 156 154 READ ( numnam_cfg, nambdy, IOSTAT = ios, ERR = 904 ) 157 904 IF( ios /= 0 )CALL ctl_nam ( ios , 'nambdy in configuration namelist', lwp )155 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'nambdy in configuration namelist', lwp ) 158 156 ! ------------------------ 159 157 IF ( ln_bdy .AND. ln_mask_file ) THEN -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90
r9124 r9168 966 966 REWIND( numnam_ref ) ! Namelist nam_vvl in reference namelist : 967 967 READ ( numnam_ref, nam_vvl, IOSTAT = ios, ERR = 901) 968 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_vvl in reference namelist', lwp ) 969 ! 968 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_vvl in reference namelist', lwp ) 970 969 REWIND( numnam_cfg ) ! Namelist nam_vvl in configuration namelist : Parameters of the run 971 970 READ ( numnam_cfg, nam_vvl, IOSTAT = ios, ERR = 902 ) 972 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'nam_vvl in configuration namelist', lwp )971 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nam_vvl in configuration namelist', lwp ) 973 972 IF(lwm) WRITE ( numond, nam_vvl ) 974 973 ! … … 977 976 WRITE(numout,*) 'dom_vvl_ctl : choice/control of the variable vertical coordinate' 978 977 WRITE(numout,*) '~~~~~~~~~~~' 979 WRITE(numout,*) ' 980 WRITE(numout,*) ' 981 WRITE(numout,*) ' 982 WRITE(numout,*) ' 983 WRITE(numout,*) ' 978 WRITE(numout,*) ' Namelist nam_vvl : chose a vertical coordinate' 979 WRITE(numout,*) ' zstar ln_vvl_zstar = ', ln_vvl_zstar 980 WRITE(numout,*) ' ztilde ln_vvl_ztilde = ', ln_vvl_ztilde 981 WRITE(numout,*) ' layer ln_vvl_layer = ', ln_vvl_layer 982 WRITE(numout,*) ' ztilde as zstar ln_vvl_ztilde_as_zstar = ', ln_vvl_ztilde_as_zstar 984 983 WRITE(numout,*) ' ztilde near the equator ln_vvl_zstar_at_eqtor = ', ln_vvl_zstar_at_eqtor 985 ! WRITE(numout,*) ' Namelist nam_vvl : chose kinetic-to-potential energy conservation' 986 ! WRITE(numout,*) ' ln_vvl_kepe = ', ln_vvl_kepe 987 WRITE(numout,*) ' Namelist nam_vvl : thickness diffusion coefficient' 988 WRITE(numout,*) ' rn_ahe3 = ', rn_ahe3 989 WRITE(numout,*) ' Namelist nam_vvl : maximum e3t deformation fractional change' 990 WRITE(numout,*) ' rn_zdef_max = ', rn_zdef_max 984 WRITE(numout,*) ' !' 985 WRITE(numout,*) ' thickness diffusion coefficient rn_ahe3 = ', rn_ahe3 986 WRITE(numout,*) ' maximum e3t deformation fractional change rn_zdef_max = ', rn_zdef_max 991 987 IF( ln_vvl_ztilde_as_zstar ) THEN 992 WRITE(numout,*) ' ztilde running in zstar emulation mode;'993 WRITE(numout,*) ' 994 WRITE(numout,*) ' 995 WRITE(numout,*) ' rn_rst_e3t = 0.0'996 WRITE(numout,*) ' 997 WRITE(numout,*) ' rn_lf_cutoff =1.0/rdt'988 WRITE(numout,*) ' ztilde running in zstar emulation mode (ln_vvl_ztilde_as_zstar=T) ' 989 WRITE(numout,*) ' ignoring namelist timescale parameters and using:' 990 WRITE(numout,*) ' hard-wired : z-tilde to zstar restoration timescale (days)' 991 WRITE(numout,*) ' rn_rst_e3t = 0.e0' 992 WRITE(numout,*) ' hard-wired : z-tilde cutoff frequency of low-pass filter (days)' 993 WRITE(numout,*) ' rn_lf_cutoff = 1.0/rdt' 998 994 ELSE 999 WRITE(numout,*) ' Namelist nam_vvl : z-tilde to zstar restoration timescale (days)' 1000 WRITE(numout,*) ' rn_rst_e3t = ', rn_rst_e3t 1001 WRITE(numout,*) ' Namelist nam_vvl : z-tilde cutoff frequency of low-pass filter (days)' 1002 WRITE(numout,*) ' rn_lf_cutoff = ', rn_lf_cutoff 995 WRITE(numout,*) ' z-tilde to zstar restoration timescale (days) rn_rst_e3t = ', rn_rst_e3t 996 WRITE(numout,*) ' z-tilde cutoff frequency of low-pass filter (days) rn_lf_cutoff = ', rn_lf_cutoff 1003 997 ENDIF 1004 WRITE(numout,*) ' Namelist nam_vvl : debug prints' 1005 WRITE(numout,*) ' ln_vvl_dbg = ', ln_vvl_dbg 998 WRITE(numout,*) ' debug prints flag ln_vvl_dbg = ', ln_vvl_dbg 1006 999 ENDIF 1007 1000 ! … … 1017 1010 IF(lwp) THEN ! Print the choice 1018 1011 WRITE(numout,*) 1019 IF( ln_vvl_zstar ) WRITE(numout,*) ' zstar vertical coordinate is used' 1020 IF( ln_vvl_ztilde ) WRITE(numout,*) ' ztilde vertical coordinate is used' 1021 IF( ln_vvl_layer ) WRITE(numout,*) ' layer vertical coordinate is used' 1022 IF( ln_vvl_ztilde_as_zstar ) WRITE(numout,*) ' to emulate a zstar coordinate' 1023 ! - ML - Option not developed yet 1024 ! IF( ln_vvl_kepe ) WRITE(numout,*) ' kinetic to potential energy transfer : option used' 1025 ! IF( .NOT. ln_vvl_kepe ) WRITE(numout,*) ' kinetic to potential energy transfer : option not used' 1012 IF( ln_vvl_zstar ) WRITE(numout,*) ' ==>>> zstar vertical coordinate is used' 1013 IF( ln_vvl_ztilde ) WRITE(numout,*) ' ==>>> ztilde vertical coordinate is used' 1014 IF( ln_vvl_layer ) WRITE(numout,*) ' ==>>> layer vertical coordinate is used' 1015 IF( ln_vvl_ztilde_as_zstar ) WRITE(numout,*) ' ==>>> to emulate a zstar coordinate' 1026 1016 ENDIF 1027 1017 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90
r9124 r9168 66 66 REWIND( numnam_ref ) ! Namelist namtsd in reference namelist : 67 67 READ ( numnam_ref, namtsd, IOSTAT = ios, ERR = 901) 68 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtsd in reference namelist', lwp ) 69 68 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtsd in reference namelist', lwp ) 70 69 REWIND( numnam_cfg ) ! Namelist namtsd in configuration namelist : Parameters of the run 71 70 READ ( numnam_cfg, namtsd, IOSTAT = ios, ERR = 902 ) 72 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namtsd in configuration namelist', lwp )71 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtsd in configuration namelist', lwp ) 73 72 IF(lwm) WRITE ( numond, namtsd ) 74 73 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DOM/iscplini.F90
r9019 r9168 2 2 !!====================================================================== 3 3 !! *** MODULE sbciscpl *** 4 !! Ocean forcing: river runoff4 !! Ocean forcing: ????? 5 5 !!===================================================================== 6 6 !! History : NEMO ! 2015-01 P. Mathiot: original … … 23 23 PUBLIC iscpl_init 24 24 PUBLIC iscpl_alloc 25 !! !!* namsbc_iscpl namelist * 26 LOGICAL , PUBLIC :: ln_hsb 27 INTEGER , PUBLIC :: nn_fiscpl, nstp_iscpl 28 INTEGER , PUBLIC :: nn_drown 29 REAL(wp), PUBLIC :: rdt_iscpl 30 !! !!* namsbc_iscpl namelist * 31 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,: ) :: hdiv_iscpl 32 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: htsc_iscpl 25 26 ! !!* namsbc_iscpl namelist * 27 LOGICAL , PUBLIC :: ln_hsb !: 28 INTEGER , PUBLIC :: nn_fiscpl !: 29 INTEGER , PUBLIC :: nn_drown !: 30 31 INTEGER , PUBLIC :: nstp_iscpl !: 32 REAL(wp), PUBLIC :: rdt_iscpl !: 33 ! 34 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hdiv_iscpl !: 35 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: htsc_iscpl !: 36 33 37 !!---------------------------------------------------------------------- 34 !! NEMO/OPA 3.3 , NEMO Consortium (2010)35 !! $Id: sbcrnf.F90 4666 2014-06-11 12:52:23Z mathiot$38 !! NEMO/OPA 4.0 , NEMO Consortium (2017) 39 !! $Id:$ 36 40 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 37 41 !!---------------------------------------------------------------------- … … 51 55 SUBROUTINE iscpl_init() 52 56 !!---------------------------------------------------------------------- 57 !!---------------------------------------------------------------------- 53 58 INTEGER :: ios ! Local integer output status for namelist read 54 59 NAMELIST/namsbc_iscpl/ nn_fiscpl, ln_hsb, nn_drown … … 59 64 REWIND( numnam_ref ) ! Namelist namsbc_iscpl in reference namelist : Ice sheet coupling 60 65 READ ( numnam_ref, namsbc_iscpl, IOSTAT = ios, ERR = 901) 61 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_iscpl in reference namelist', lwp ) 62 66 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_iscpl in reference namelist', lwp ) 63 67 REWIND( numnam_cfg ) ! Namelist namsbc_iscpl in configuration namelist : Ice Sheet coupling 64 68 READ ( numnam_cfg, namsbc_iscpl, IOSTAT = ios, ERR = 902 ) 65 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namsbc_iscpl in configuration namelist', lwp )69 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namsbc_iscpl in configuration namelist', lwp ) 66 70 IF(lwm) WRITE ( numond, namsbc_iscpl ) 67 71 ! 68 nstp_iscpl=MIN( nn_fiscpl, nitend-nit000+1) ! the coupling period have to be less or egal than the total number of time step72 nstp_iscpl=MIN( nn_fiscpl, nitend-nit000+1 ) ! the coupling period have to be less or egal than the total number of time step 69 73 rdt_iscpl = nstp_iscpl * rn_rdt 70 74 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv.F90
r9019 r9168 100 100 REWIND( numnam_ref ) ! Namelist namdyn_adv in reference namelist : Momentum advection scheme 101 101 READ ( numnam_ref, namdyn_adv, IOSTAT = ios, ERR = 901) 102 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_adv in reference namelist', lwp ) 103 ! 102 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_adv in reference namelist', lwp ) 104 103 REWIND( numnam_cfg ) ! Namelist namdyn_adv in configuration namelist : Momentum advection scheme 105 104 READ ( numnam_cfg, namdyn_adv, IOSTAT = ios, ERR = 902 ) 106 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namdyn_adv in configuration namelist', lwp )105 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namdyn_adv in configuration namelist', lwp ) 107 106 IF(lwm) WRITE ( numond, namdyn_adv ) 108 107 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90
r9090 r9168 147 147 REWIND( numnam_cfg ) ! Namelist namdyn_hpg in configuration namelist : Hydrostatic pressure gradient 148 148 READ ( numnam_cfg, namdyn_hpg, IOSTAT = ios, ERR = 902 ) 149 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namdyn_hpg in configuration namelist', lwp )149 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namdyn_hpg in configuration namelist', lwp ) 150 150 IF(lwm) WRITE ( numond, namdyn_hpg ) 151 151 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90
r9124 r9168 200 200 REWIND( numnam_cfg ) ! Namelist namdyn_spg in configuration namelist : Free surface 201 201 READ ( numnam_cfg, namdyn_spg, IOSTAT = ios, ERR = 902 ) 202 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namdyn_spg in configuration namelist', lwp )202 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namdyn_spg in configuration namelist', lwp ) 203 203 IF(lwm) WRITE ( numond, namdyn_spg ) 204 204 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90
r9124 r9168 560 560 REWIND( numnam_ref ) ! Namelist namdyn_vor in reference namelist : Vorticity scheme options 561 561 READ ( numnam_ref, namdyn_vor, IOSTAT = ios, ERR = 901) 562 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_vor in reference namelist', lwp ) 563 562 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_vor in reference namelist', lwp ) 564 563 REWIND( numnam_cfg ) ! Namelist namdyn_vor in configuration namelist : Vorticity scheme options 565 564 READ ( numnam_cfg, namdyn_vor, IOSTAT = ios, ERR = 902 ) 566 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namdyn_vor in configuration namelist', lwp )565 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namdyn_vor in configuration namelist', lwp ) 567 566 IF(lwm) WRITE ( numond, namdyn_vor ) 568 567 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/wet_dry.F90
r9124 r9168 79 79 REWIND( numnam_ref ) ! Namelist namwad in reference namelist : Parameters for Wetting/Drying 80 80 READ ( numnam_ref, namwad, IOSTAT = ios, ERR = 905) 81 905 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namwad in reference namelist', .TRUE.)81 905 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namwad in reference namelist', .TRUE.) 82 82 REWIND( numnam_cfg ) ! Namelist namwad in configuration namelist : Parameters for Wetting/Drying 83 83 READ ( numnam_cfg, namwad, IOSTAT = ios, ERR = 906) 84 906 IF( ios /= 0 )CALL ctl_nam ( ios , 'namwad in configuration namelist', .TRUE. )84 906 IF( ios > 0 ) CALL ctl_nam ( ios , 'namwad in configuration namelist', .TRUE. ) 85 85 IF(lwm) WRITE ( numond, namwad ) 86 86 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/FLO/floats.F90
r9124 r9168 90 90 REWIND( numnam_ref ) ! Namelist namflo in reference namelist : Floats 91 91 READ ( numnam_ref, namflo, IOSTAT = ios, ERR = 901) 92 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namflo in reference namelist', lwp )92 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namflo in reference namelist', lwp ) 93 93 94 94 REWIND( numnam_cfg ) ! Namelist namflo in configuration namelist : Floats 95 95 READ ( numnam_cfg, namflo, IOSTAT = ios, ERR = 902 ) 96 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namflo in configuration namelist', lwp )96 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namflo in configuration namelist', lwp ) 97 97 IF(lwm) WRITE ( numond, namflo ) 98 98 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/ICB/icbini.F90
r7753 r9168 367 367 REWIND( numnam_cfg ) ! Namelist namberg in configuration namelist : Iceberg parameters 368 368 READ ( numnam_cfg, namberg, IOSTAT = ios, ERR = 902 ) 369 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namberg in configuration namelist', lwp )369 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namberg in configuration namelist', lwp ) 370 370 IF(lwm) WRITE ( numond, namberg ) 371 371 #else … … 387 387 ENDIF 388 388 389 IF( nn_test_icebergs > nclasses ) THEN390 IF(lwp) WRITE(numout,*) 'Resetting nn_test_icebergs to ', nclasses391 nn_test_icebergs = nclasses392 ENDIF393 394 zfact = SUM( rn_distribution )395 IF( zfact < 1._wp ) THEN396 IF( zfact <= 0._wp ) THEN397 398 ELSE399 rn_distribution(:) = rn_distribution(:) / zfact400 CALL ctl_warn( 'icb_nam: sum of berg input distribution not equal to one and so RESCALED' )401 ENDIF402 ENDIF403 389 404 390 ! IF( lk_lim3 .AND. ln_icebergs ) THEN … … 418 404 WRITE(numout,*) ' Fraction of calving to apply to this class (non-dim) rn_distribution =' 419 405 DO jn = 1, nclasses 420 WRITE(numout,'(a,f10. 2)') ' ',rn_distribution(jn)406 WRITE(numout,'(a,f10.4)') ' ',rn_distribution(jn) 421 407 END DO 422 408 WRITE(numout,*) ' Ratio between effective and real iceberg mass (non-dim) rn_mass_scaling = ' … … 449 435 ENDIF 450 436 ! 437 IF( nn_test_icebergs > nclasses ) THEN 438 IF(lwp) WRITE(numout,*) ' ==>>> Resetting of nn_test_icebergs to ', nclasses 439 nn_test_icebergs = nclasses 440 ENDIF 441 442 ! ensure that the sum of berg input distribution is equal to one 443 zfact = SUM( rn_distribution ) 444 IF( zfact /= 1._wp .AND. 0_wp /= zfact ) THEN 445 rn_distribution(:) = rn_distribution(:) / zfact 446 IF(lwp) THEN 447 WRITE(numout,*) 448 WRITE(numout,*) ' ==>>> CAUTION: sum of berg input distribution = ', zfact 449 WRITE(numout,*) ' ******* redistribution has been rescaled' 450 WRITE(numout,*) ' updated berg distribution is :' 451 DO jn = 1, nclasses 452 WRITE(numout,'(a,f10.4)') ' ',rn_distribution(jn) 453 END DO 454 ENDIF 455 ENDIF 456 IF( MINVAL( rn_distribution(:) ) < 0._wp ) THEN 457 CALL ctl_stop( 'icb_nam: a negative rn_distribution value encountered ==>> change your namelist namberg' ) 458 ENDIF 459 ! 451 460 END SUBROUTINE icb_nam 452 461 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90
r9125 r9168 203 203 REWIND( kumnam_ref ) ! Namelist nammpp in reference namelist: mpi variables 204 204 READ ( kumnam_ref, nammpp, IOSTAT = ios, ERR = 901) 205 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nammpp in reference namelist', lwp )205 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nammpp in reference namelist', lwp ) 206 206 ! 207 207 REWIND( kumnam_cfg ) ! Namelist nammpp in configuration namelist: mpi variables 208 208 READ ( kumnam_cfg, nammpp, IOSTAT = ios, ERR = 902 ) 209 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'nammpp in configuration namelist', lwp )209 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nammpp in configuration namelist', lwp ) 210 210 ! 211 211 ! ! control print -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LBC/mppini.F90
r9069 r9168 556 556 REWIND( numnam_ref ) ! Namelist nambdy in reference namelist : BDY 557 557 READ ( numnam_ref, nambdy, IOSTAT = ios, ERR = 903) 558 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy in reference namelist (mppini)', lwp )559 558 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy in reference namelist (mppini)', lwp ) 559 ! 560 560 REWIND( numnam_cfg ) ! Namelist nambdy in configuration namelist : BDY 561 561 READ ( numnam_cfg, nambdy, IOSTAT = ios, ERR = 904 ) 562 904 IF( ios /= 0 )CALL ctl_nam ( ios , 'nambdy in configuration namelist (mppini)', lwp )562 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'nambdy in configuration namelist (mppini)', lwp ) 563 563 564 564 IF( ln_bdy .AND. ln_mask_file ) THEN -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn.F90
r9094 r9168 104 104 REWIND( numnam_ref ) ! Namelist namdyn_ldf in reference namelist : Lateral physics 105 105 READ ( numnam_ref, namdyn_ldf, IOSTAT = ios, ERR = 901) 106 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_ldf in reference namelist', lwp )106 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdyn_ldf in reference namelist', lwp ) 107 107 108 108 REWIND( numnam_cfg ) ! Namelist namdyn_ldf in configuration namelist : Lateral physics 109 109 READ ( numnam_cfg, namdyn_ldf, IOSTAT = ios, ERR = 902 ) 110 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namdyn_ldf in configuration namelist', lwp )110 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namdyn_ldf in configuration namelist', lwp ) 111 111 IF(lwm) WRITE ( numond, namdyn_ldf ) 112 112 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90
r9124 r9168 131 131 REWIND( numnam_ref ) ! Namelist namtra_ldf in reference namelist : Lateral physics on tracers 132 132 READ ( numnam_ref, namtra_ldf, IOSTAT = ios, ERR = 901) 133 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtra_ldf in reference namelist', lwp )133 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtra_ldf in reference namelist', lwp ) 134 134 ! 135 135 REWIND( numnam_cfg ) ! Namelist namtra_ldf in configuration namelist : Lateral physics on tracers 136 136 READ ( numnam_cfg, namtra_ldf, IOSTAT = ios, ERR = 902 ) 137 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namtra_ldf in configuration namelist', lwp )137 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtra_ldf in configuration namelist', lwp ) 138 138 IF(lwm) WRITE ( numond, namtra_ldf ) 139 139 ! … … 384 384 REWIND( numnam_ref ) ! Namelist namtra_ldfeiv in reference namelist : eddy induced velocity param. 385 385 READ ( numnam_ref, namtra_ldfeiv, IOSTAT = ios, ERR = 901) 386 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtra_ldfeiv in reference namelist', lwp )386 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtra_ldfeiv in reference namelist', lwp ) 387 387 ! 388 388 REWIND( numnam_cfg ) ! Namelist namtra_ldfeiv in configuration namelist : eddy induced velocity param. 389 389 READ ( numnam_cfg, namtra_ldfeiv, IOSTAT = ios, ERR = 902 ) 390 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namtra_ldfeiv in configuration namelist', lwp )390 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtra_ldfeiv in configuration namelist', lwp ) 391 391 IF(lwm) WRITE ( numond, namtra_ldfeiv ) 392 392 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
r9125 r9168 5 5 !! their model equivalent 6 6 !!====================================================================== 7 7 !! History : 1.0 ! 2006-03 (K. Mogensen) Original code 8 !! - ! 2006-05 (K. Mogensen, A. Weaver) Reformatted 9 !! - ! 2006-10 (A. Weaver) Cleaning and add controls 10 !! - ! 2007-03 (K. Mogensen) General handling of profiles 11 !! - ! 2007-04 (G. Smith) Generalized surface operators 12 !! 2.0 ! 2008-10 (M. Valdivieso) obs operator for velocity profiles 13 !! 3.4 ! 2014-08 (J. While) observation operator for profiles in all vertical coordinates 14 !! - ! Incorporated SST bias correction 15 !! 3.6 ! 2015-02 (M. Martin) Simplification of namelist and code 16 !! - ! 2015-08 (M. Martin) Combined surface/profile routines. 17 !! 4.0 ! 2017-11 (G. Madec) style only 8 18 !!---------------------------------------------------------------------- 9 !! dia_obs_init : Reading and prepare observations 10 !! dia_obs : Compute model equivalent to observations 11 !! dia_obs_wri : Write observational diagnostics 12 !! calc_date : Compute the date of timestep in YYYYMMDD.HHMMSS format 13 !! ini_date : Compute the initial date YYYYMMDD.HHMMSS 14 !! fin_date : Compute the final date YYYYMMDD.HHMMSS 19 15 20 !!---------------------------------------------------------------------- 16 USE par_kind ! Precision variables 17 USE in_out_manager ! I/O manager 18 USE par_oce 19 USE dom_oce ! Ocean space and time domain variables 20 USE obs_read_prof ! Reading and allocation of profile obs 21 USE obs_read_surf ! Reading and allocation of surface obs 22 USE obs_sstbias ! Bias correction routine for SST 23 USE obs_readmdt ! Reading and allocation of MDT for SLA. 24 USE obs_prep ! Preparation of obs. (grid search etc). 25 USE obs_oper ! Observation operators 26 USE obs_write ! Writing of observation related diagnostics 27 USE obs_grid ! Grid searching 28 USE obs_read_altbias ! Bias treatment for altimeter 29 USE obs_profiles_def ! Profile data definitions 30 USE obs_surf_def ! Surface data definitions 31 USE obs_types ! Definitions for observation types 32 USE mpp_map ! MPP mapping 33 USE sbc_oce ! Sea-ice fraction 34 USE lib_mpp ! For ctl_warn/stop 21 !! dia_obs_init : Reading and prepare observations 22 !! dia_obs : Compute model equivalent to observations 23 !! dia_obs_wri : Write observational diagnostics 24 !! calc_date : Compute the date of timestep in YYYYMMDD.HHMMSS format 25 !! ini_date : Compute the initial date YYYYMMDD.HHMMSS 26 !! fin_date : Compute the final date YYYYMMDD.HHMMSS 27 !!---------------------------------------------------------------------- 28 USE par_kind ! Precision variables 29 USE in_out_manager ! I/O manager 30 USE par_oce ! ocean parameter 31 USE dom_oce ! Ocean space and time domain variables 32 USE sbc_oce ! Sea-ice fraction 33 ! 34 USE obs_read_prof ! Reading and allocation of profile obs 35 USE obs_read_surf ! Reading and allocation of surface obs 36 USE obs_sstbias ! Bias correction routine for SST 37 USE obs_readmdt ! Reading and allocation of MDT for SLA. 38 USE obs_prep ! Preparation of obs. (grid search etc). 39 USE obs_oper ! Observation operators 40 USE obs_write ! Writing of observation related diagnostics 41 USE obs_grid ! Grid searching 42 USE obs_read_altbias ! Bias treatment for altimeter 43 USE obs_profiles_def ! Profile data definitions 44 USE obs_surf_def ! Surface data definitions 45 USE obs_types ! Definitions for observation types 46 ! 47 USE mpp_map ! MPP mapping 48 USE lib_mpp ! For ctl_warn/stop 35 49 36 50 IMPLICIT NONE … … 43 57 PUBLIC calc_date ! Compute the date of a timestep 44 58 45 !! * Module variables 46 LOGICAL, PUBLIC :: ln_diaobs !: Logical switch for the obs operator 47 LOGICAL :: ln_sstnight !: Logical switch for night mean SST obs 48 LOGICAL :: ln_sla_fp_indegs !: T=> SLA obs footprint size specified in degrees, F=> in metres 49 LOGICAL :: ln_sst_fp_indegs !: T=> SST obs footprint size specified in degrees, F=> in metres 50 LOGICAL :: ln_sss_fp_indegs !: T=> SSS obs footprint size specified in degrees, F=> in metres 51 LOGICAL :: ln_sic_fp_indegs !: T=> sea-ice obs footprint size specified in degrees, F=> in metres 52 53 REAL(wp) :: rn_sla_avglamscl !: E/W diameter of SLA observation footprint (metres) 54 REAL(wp) :: rn_sla_avgphiscl !: N/S diameter of SLA observation footprint (metres) 55 REAL(wp) :: rn_sst_avglamscl !: E/W diameter of SST observation footprint (metres) 56 REAL(wp) :: rn_sst_avgphiscl !: N/S diameter of SST observation footprint (metres) 57 REAL(wp) :: rn_sss_avglamscl !: E/W diameter of SSS observation footprint (metres) 58 REAL(wp) :: rn_sss_avgphiscl !: N/S diameter of SSS observation footprint (metres) 59 REAL(wp) :: rn_sic_avglamscl !: E/W diameter of sea-ice observation footprint (metres) 60 REAL(wp) :: rn_sic_avgphiscl !: N/S diameter of sea-ice observation footprint (metres) 61 62 INTEGER :: nn_1dint !: Vertical interpolation method 63 INTEGER :: nn_2dint !: Default horizontal interpolation method 64 INTEGER :: nn_2dint_sla !: SLA horizontal interpolation method 65 INTEGER :: nn_2dint_sst !: SST horizontal interpolation method 66 INTEGER :: nn_2dint_sss !: SSS horizontal interpolation method 67 INTEGER :: nn_2dint_sic !: Seaice horizontal interpolation method 68 INTEGER, DIMENSION(imaxavtypes) :: nn_profdavtypes !: Profile data types representing a daily average 69 INTEGER :: nproftypes !: Number of profile obs types 70 INTEGER :: nsurftypes !: Number of surface obs types 71 INTEGER, DIMENSION(:), ALLOCATABLE :: & 72 & nvarsprof, & !: Number of profile variables 73 & nvarssurf !: Number of surface variables 74 INTEGER, DIMENSION(:), ALLOCATABLE :: & 75 & nextrprof, & !: Number of profile extra variables 76 & nextrsurf !: Number of surface extra variables 77 INTEGER, DIMENSION(:), ALLOCATABLE :: & 78 & n2dintsurf !: Interpolation option for surface variables 79 REAL(wp), DIMENSION(:), ALLOCATABLE :: & 80 & zavglamscl, & !: E/W diameter of averaging footprint for surface variables 81 & zavgphiscl !: N/S diameter of averaging footprint for surface variables 82 LOGICAL, DIMENSION(:), ALLOCATABLE :: & 83 & lfpindegs, & !: T=> surface obs footprint size specified in degrees, F=> in metres 84 & llnightav !: Logical for calculating night-time averages 85 86 TYPE(obs_surf), PUBLIC, POINTER, DIMENSION(:) :: & 87 & surfdata, & !: Initial surface data 88 & surfdataqc !: Surface data after quality control 89 TYPE(obs_prof), PUBLIC, POINTER, DIMENSION(:) :: & 90 & profdata, & !: Initial profile data 91 & profdataqc !: Profile data after quality control 59 LOGICAL, PUBLIC :: ln_diaobs !: Logical switch for the obs operator 60 LOGICAL :: ln_sstnight ! Logical switch for night mean SST obs 61 LOGICAL :: ln_sla_fp_indegs ! T=> SLA obs footprint size specified in degrees, F=> in metres 62 LOGICAL :: ln_sst_fp_indegs ! T=> SST obs footprint size specified in degrees, F=> in metres 63 LOGICAL :: ln_sss_fp_indegs ! T=> SSS obs footprint size specified in degrees, F=> in metres 64 LOGICAL :: ln_sic_fp_indegs ! T=> sea-ice obs footprint size specified in degrees, F=> in metres 65 66 REAL(wp) :: rn_sla_avglamscl ! E/W diameter of SLA observation footprint (metres) 67 REAL(wp) :: rn_sla_avgphiscl ! N/S diameter of SLA observation footprint (metres) 68 REAL(wp) :: rn_sst_avglamscl ! E/W diameter of SST observation footprint (metres) 69 REAL(wp) :: rn_sst_avgphiscl ! N/S diameter of SST observation footprint (metres) 70 REAL(wp) :: rn_sss_avglamscl ! E/W diameter of SSS observation footprint (metres) 71 REAL(wp) :: rn_sss_avgphiscl ! N/S diameter of SSS observation footprint (metres) 72 REAL(wp) :: rn_sic_avglamscl ! E/W diameter of sea-ice observation footprint (metres) 73 REAL(wp) :: rn_sic_avgphiscl ! N/S diameter of sea-ice observation footprint (metres) 74 75 INTEGER :: nn_1dint ! Vertical interpolation method 76 INTEGER :: nn_2dint ! Default horizontal interpolation method 77 INTEGER :: nn_2dint_sla ! SLA horizontal interpolation method 78 INTEGER :: nn_2dint_sst ! SST horizontal interpolation method 79 INTEGER :: nn_2dint_sss ! SSS horizontal interpolation method 80 INTEGER :: nn_2dint_sic ! Seaice horizontal interpolation method 81 INTEGER, DIMENSION(imaxavtypes) :: nn_profdavtypes ! Profile data types representing a daily average 82 INTEGER :: nproftypes ! Number of profile obs types 83 INTEGER :: nsurftypes ! Number of surface obs types 84 INTEGER , DIMENSION(:), ALLOCATABLE :: nvarsprof, nvarssurf ! Number of profile & surface variables 85 INTEGER , DIMENSION(:), ALLOCATABLE :: nextrprof, nextrsurf ! Number of profile & surface extra variables 86 INTEGER , DIMENSION(:), ALLOCATABLE :: n2dintsurf ! Interpolation option for surface variables 87 REAL(wp), DIMENSION(:), ALLOCATABLE :: zavglamscl, zavgphiscl ! E/W & N/S diameter of averaging footprint for surface variables 88 LOGICAL , DIMENSION(:), ALLOCATABLE :: lfpindegs ! T=> surface obs footprint size specified in degrees, F=> in metres 89 LOGICAL , DIMENSION(:), ALLOCATABLE :: llnightav ! Logical for calculating night-time averages 90 91 TYPE(obs_surf), PUBLIC, POINTER, DIMENSION(:) :: surfdata !: Initial surface data 92 TYPE(obs_surf), PUBLIC, POINTER, DIMENSION(:) :: surfdataqc !: Surface data after quality control 93 TYPE(obs_prof), PUBLIC, POINTER, DIMENSION(:) :: profdata !: Initial profile data 94 TYPE(obs_prof), PUBLIC, POINTER, DIMENSION(:) :: profdataqc !: Profile data after quality control 92 95 93 96 CHARACTER(len=6), PUBLIC, DIMENSION(:), ALLOCATABLE :: cobstypesprof, cobstypessurf !: Profile & surface obs types … … 110 113 !! ** Action : Read the namelist and call reading routines 111 114 !! 112 !! History :113 !! ! 06-03 (K. Mogensen) Original code114 !! ! 06-05 (A. Weaver) Reformatted115 !! ! 06-10 (A. Weaver) Cleaning and add controls116 !! ! 07-03 (K. Mogensen) General handling of profiles117 !! ! 14-08 (J.While) Incorporated SST bias correction118 !! ! 15-02 (M. Martin) Simplification of namelist and code119 115 !!---------------------------------------------------------------------- 120 116 INTEGER, PARAMETER :: jpmaxnfiles = 1000 ! Maximum number of files for each obs type … … 124 120 INTEGER :: jvar ! Counter for variables 125 121 INTEGER :: jfile ! Counter for files 126 122 INTEGER :: jnumsstbias 123 ! 127 124 CHARACTER(len=128), DIMENSION(jpmaxnfiles) :: & 128 125 & cn_profbfiles, & ! T/S profile input filenames … … 138 135 & clproffiles, & ! Profile filenames 139 136 & clsurffiles ! Surface filenames 140 137 ! 141 138 LOGICAL :: ln_t3d ! Logical switch for temperature profiles 142 139 LOGICAL :: ln_s3d ! Logical switch for salinity profiles … … 155 152 LOGICAL :: llvar2 ! Logical for profile variable 1 156 153 LOGICAL, DIMENSION(jpmaxnfiles) :: lmask ! Used for finding number of sstbias files 157 154 ! 158 155 REAL(dp) :: rn_dobsini ! Obs window start date YYYYMMDD.HHMMSS 159 156 REAL(dp) :: rn_dobsend ! Obs window end date YYYYMMDD.HHMMSS 160 REAL(wp), DIMENSION(jpi,jpj) :: & 161 & zglam1, & ! Model longitudes for profile variable 1 162 & zglam2 ! Model longitudes for profile variable 2 163 REAL(wp), DIMENSION(jpi,jpj) :: & 164 & zgphi1, & ! Model latitudes for profile variable 1 165 & zgphi2 ! Model latitudes for profile variable 2 166 REAL(wp), DIMENSION(jpi,jpj,jpk) :: & 167 & zmask1, & ! Model land/sea mask associated with variable 1 168 & zmask2 ! Model land/sea mask associated with variable 2 169 157 REAL(wp), DIMENSION(jpi,jpj) :: zglam1, zglam2 ! Model longitudes for profile variable 1 & 2 158 REAL(wp), DIMENSION(jpi,jpj) :: zgphi1, zgphi2 ! Model latitudes for profile variable 1 & 2 159 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmask1, zmask2 ! Model land/sea mask associated with variable 1 & 2 160 !! 170 161 NAMELIST/namobs/ln_diaobs, ln_t3d, ln_s3d, ln_sla, & 171 162 & ln_sst, ln_sic, ln_sss, ln_vel3d, & … … 191 182 & nn_msshc, rn_mdtcorr, rn_mdtcutoff, & 192 183 & nn_profdavtypes 193 194 INTEGER :: jnumsstbias 184 !----------------------------------------------------------------------- 195 185 196 186 !----------------------------------------------------------------------- … … 198 188 !----------------------------------------------------------------------- 199 189 ! Some namelist arrays need initialising 200 cn_profbfiles (:) = ''201 cn_slafbfiles (:) = ''202 cn_sstfbfiles (:) = ''203 cn_sicfbfiles (:) = ''204 cn_velfbfiles (:) = ''205 cn_sssfbfiles (:)= ''190 cn_profbfiles (:) = '' 191 cn_slafbfiles (:) = '' 192 cn_sstfbfiles (:) = '' 193 cn_sicfbfiles (:) = '' 194 cn_velfbfiles (:) = '' 195 cn_sssfbfiles (:) = '' 206 196 cn_sstbiasfiles(:) = '' 207 197 nn_profdavtypes(:) = -1 … … 213 203 REWIND( numnam_ref ) ! Namelist namobs in reference namelist 214 204 READ ( numnam_ref, namobs, IOSTAT = ios, ERR = 901) 215 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namobs in reference namelist', lwp ) 216 205 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namobs in reference namelist', lwp ) 217 206 REWIND( numnam_cfg ) ! Namelist namobs in configuration namelist 218 207 READ ( numnam_cfg, namobs, IOSTAT = ios, ERR = 902 ) 219 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namobs in configuration namelist', lwp )208 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namobs in configuration namelist', lwp ) 220 209 IF(lwm) WRITE ( numond, namobs ) 221 210 222 IF ( .NOT. ln_diaobs ) THEN 223 IF(lwp) WRITE(numout,cform_war) 224 IF(lwp) WRITE(numout,*)' ln_diaobs is set to false so not calling dia_obs' 211 IF( .NOT.ln_diaobs ) THEN 212 IF(lwp) WRITE(numout,*) 213 IF(lwp) WRITE(numout,*) 'dia_obs_init : NO Observation diagnostic used' 214 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~' 225 215 RETURN 226 216 ENDIF … … 230 220 WRITE(numout,*) 'dia_obs_init : Observation diagnostic initialization' 231 221 WRITE(numout,*) '~~~~~~~~~~~~' 232 WRITE(numout,*) ' 233 WRITE(numout,*) ' 234 WRITE(numout,*) ' 235 WRITE(numout,*) ' 236 WRITE(numout,*) ' 237 WRITE(numout,*) ' 238 WRITE(numout,*) ' 239 WRITE(numout,*) ' 240 WRITE(numout,*) ' 241 WRITE(numout,*) ' 222 WRITE(numout,*) ' Namelist namobs : set observation diagnostic parameters' 223 WRITE(numout,*) ' Logical switch for T profile observations ln_t3d = ', ln_t3d 224 WRITE(numout,*) ' Logical switch for S profile observations ln_s3d = ', ln_s3d 225 WRITE(numout,*) ' Logical switch for SLA observations ln_sla = ', ln_sla 226 WRITE(numout,*) ' Logical switch for SST observations ln_sst = ', ln_sst 227 WRITE(numout,*) ' Logical switch for Sea Ice observations ln_sic = ', ln_sic 228 WRITE(numout,*) ' Logical switch for velocity observations ln_vel3d = ', ln_vel3d 229 WRITE(numout,*) ' Logical switch for SSS observations ln_sss = ', ln_sss 230 WRITE(numout,*) ' Global distribution of observations ln_grid_global = ', ln_grid_global 231 WRITE(numout,*) ' Logical switch for obs grid search lookup ln_grid_search_lookup = ', ln_grid_search_lookup 242 232 IF (ln_grid_search_lookup) & 243 WRITE(numout,*) ' 244 WRITE(numout,*) ' 245 WRITE(numout,*) ' 246 WRITE(numout,*) ' 247 WRITE(numout,*) ' 248 WRITE(numout,*) ' 249 WRITE(numout,*) ' 250 WRITE(numout,*) ' 251 WRITE(numout,*) ' 252 WRITE(numout,*) ' 253 WRITE(numout,*) ' 254 WRITE(numout,*) ' 255 WRITE(numout,*) ' 256 WRITE(numout,*) ' 257 WRITE(numout,*) ' 233 WRITE(numout,*) ' Grid search lookup file header cn_gridsearchfile = ', cn_gridsearchfile 234 WRITE(numout,*) ' Initial date in window YYYYMMDD.HHMMSS rn_dobsini = ', rn_dobsini 235 WRITE(numout,*) ' Final date in window YYYYMMDD.HHMMSS rn_dobsend = ', rn_dobsend 236 WRITE(numout,*) ' Type of vertical interpolation method nn_1dint = ', nn_1dint 237 WRITE(numout,*) ' Type of horizontal interpolation method nn_2dint = ', nn_2dint 238 WRITE(numout,*) ' Rejection of observations near land switch ln_nea = ', ln_nea 239 WRITE(numout,*) ' Rejection of obs near open bdys ln_bound_reject = ', ln_bound_reject 240 WRITE(numout,*) ' MSSH correction scheme nn_msshc = ', nn_msshc 241 WRITE(numout,*) ' MDT correction rn_mdtcorr = ', rn_mdtcorr 242 WRITE(numout,*) ' MDT cutoff for computed correction rn_mdtcutoff = ', rn_mdtcutoff 243 WRITE(numout,*) ' Logical switch for alt bias ln_altbias = ', ln_altbias 244 WRITE(numout,*) ' Logical switch for sst bias ln_sstbias = ', ln_sstbias 245 WRITE(numout,*) ' Logical switch for ignoring missing files ln_ignmis = ', ln_ignmis 246 WRITE(numout,*) ' Daily average types nn_profdavtypes = ', nn_profdavtypes 247 WRITE(numout,*) ' Logical switch for night-time SST obs ln_sstnight = ', ln_sstnight 258 248 ENDIF 259 249 !----------------------------------------------------------------------- … … 265 255 nsurftypes = COUNT( (/ln_sla, ln_sst, ln_sic, ln_sss /) ) 266 256 267 IF (ln_sstbias) THEN257 IF( ln_sstbias ) THEN 268 258 lmask(:) = .FALSE. 269 WHERE (cn_sstbiasfiles(:) /= '')lmask(:) = .TRUE.259 WHERE( cn_sstbiasfiles(:) /= '' ) lmask(:) = .TRUE. 270 260 jnumsstbias = COUNT(lmask) 271 261 lmask(:) = .FALSE. 272 262 ENDIF 273 263 274 IF ( nproftypes == 0 .AND. nsurftypes == 0 ) THEN 275 IF(lwp) WRITE(numout,cform_war) 276 IF(lwp) WRITE(numout,*) ' ln_diaobs is set to true, but all obs operator logical flags', & 277 & ' ln_t3d, ln_s3d, ln_sla, ln_sst, ln_sic, ln_vel3d', & 278 & ' are set to .FALSE. so turning off calls to dia_obs' 279 nwarn = nwarn + 1 264 IF( nproftypes == 0 .AND. nsurftypes == 0 ) THEN 265 CALL ctl_warn( 'dia_obs_init: ln_diaobs is set to true, but all obs operator logical flags', & 266 & ' (ln_t3d, ln_s3d, ln_sla, ln_sst, ln_sic, ln_vel3d)', & 267 & ' are set to .FALSE. so turning off calls to dia_obs' ) 280 268 ln_diaobs = .FALSE. 281 269 RETURN 282 270 ENDIF 283 271 284 IF 285 286 ALLOCATE( cobstypesprof(nproftypes) )287 ALLOCATE( ifilesprof (nproftypes))288 ALLOCATE( clproffiles (nproftypes,jpmaxnfiles) )289 272 IF( nproftypes > 0 ) THEN 273 ! 274 ALLOCATE( cobstypesprof(nproftypes) ) 275 ALLOCATE( ifilesprof (nproftypes) ) 276 ALLOCATE( clproffiles (nproftypes,jpmaxnfiles) ) 277 ! 290 278 jtype = 0 291 IF (ln_t3d .OR. ln_s3d) THEN279 IF( ln_t3d .OR. ln_s3d ) THEN 292 280 jtype = jtype + 1 293 281 CALL obs_settypefiles( nproftypes, jpmaxnfiles, jtype, 'prof ', & 294 282 & cn_profbfiles, ifilesprof, cobstypesprof, clproffiles ) 295 283 ENDIF 296 IF (ln_vel3d) THEN284 IF( ln_vel3d ) THEN 297 285 jtype = jtype + 1 298 286 CALL obs_settypefiles( nproftypes, jpmaxnfiles, jtype, 'vel ', & 299 287 & cn_velfbfiles, ifilesprof, cobstypesprof, clproffiles ) 300 288 ENDIF 301 302 ENDIF 303 304 IF 305 306 ALLOCATE( cobstypessurf(nsurftypes) )307 ALLOCATE( ifilessurf (nsurftypes))308 ALLOCATE( clsurffiles (nsurftypes,jpmaxnfiles) )309 ALLOCATE( n2dintsurf(nsurftypes))310 ALLOCATE( zavglamscl(nsurftypes))311 ALLOCATE( zavgphiscl(nsurftypes))312 ALLOCATE( lfpindegs(nsurftypes))313 ALLOCATE( llnightav(nsurftypes))314 289 ! 290 ENDIF 291 292 IF( nsurftypes > 0 ) THEN 293 ! 294 ALLOCATE( cobstypessurf(nsurftypes) ) 295 ALLOCATE( ifilessurf (nsurftypes) ) 296 ALLOCATE( clsurffiles (nsurftypes,jpmaxnfiles) ) 297 ALLOCATE( n2dintsurf (nsurftypes) ) 298 ALLOCATE( zavglamscl (nsurftypes) ) 299 ALLOCATE( zavgphiscl (nsurftypes) ) 300 ALLOCATE( lfpindegs (nsurftypes) ) 301 ALLOCATE( llnightav (nsurftypes) ) 302 ! 315 303 jtype = 0 316 IF (ln_sla) THEN304 IF( ln_sla ) THEN 317 305 jtype = jtype + 1 318 306 CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'sla ', & … … 325 313 & lfpindegs, llnightav ) 326 314 ENDIF 327 IF (ln_sst) THEN315 IF( ln_sst ) THEN 328 316 jtype = jtype + 1 329 317 CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'sst ', & … … 337 325 ENDIF 338 326 #if defined key_lim3 || defined key_cice 339 IF (ln_sic) THEN327 IF( ln_sic ) THEN 340 328 jtype = jtype + 1 341 329 CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'sic ', & … … 349 337 ENDIF 350 338 #endif 351 IF (ln_sss) THEN339 IF( ln_sss ) THEN 352 340 jtype = jtype + 1 353 341 CALL obs_settypefiles( nsurftypes, jpmaxnfiles, jtype, 'sss ', & … … 360 348 & lfpindegs, llnightav ) 361 349 ENDIF 362 363 ENDIF 364 350 ! 351 ENDIF 365 352 366 353 … … 368 355 ! Obs operator parameter checking and initialisations 369 356 !----------------------------------------------------------------------- 370 371 IF ( ln_vel3d .AND. ( .NOT. ln_grid_global )) THEN357 ! 358 IF( ln_vel3d .AND. .NOT.ln_grid_global ) THEN 372 359 CALL ctl_stop( 'Velocity data only works with ln_grid_global=.true.' ) 373 360 RETURN 374 361 ENDIF 375 376 IF ( ln_grid_global ) THEN 377 CALL ctl_warn( 'ln_grid_global=T may cause memory issues when used with a large number of processors' ) 378 ENDIF 379 380 IF ( ( nn_1dint < 0 ) .OR. ( nn_1dint > 1 ) ) THEN 381 CALL ctl_stop(' Choice of vertical (1D) interpolation method', & 382 & ' is not available') 383 ENDIF 384 385 IF ( ( nn_2dint < 0 ) .OR. ( nn_2dint > 6 ) ) THEN 386 CALL ctl_stop(' Choice of horizontal (2D) interpolation method', & 387 & ' is not available') 388 ENDIF 389 362 ! 363 IF( ln_grid_global ) THEN 364 CALL ctl_warn( 'dia_obs_init: ln_grid_global=T may cause memory issues when used with a large number of processors' ) 365 ENDIF 366 ! 367 IF( nn_1dint < 0 .OR. nn_1dint > 1 ) THEN 368 CALL ctl_stop('dia_obs_init: Choice of vertical (1D) interpolation method is not available') 369 ENDIF 370 ! 371 IF( nn_2dint < 0 .OR. nn_2dint > 6 ) THEN 372 CALL ctl_stop('dia_obs_init: Choice of horizontal (2D) interpolation method is not available') 373 ENDIF 374 ! 390 375 CALL obs_typ_init 391 IF(ln_grid_global) THEN 392 CALL mppmap_init 393 ENDIF 394 376 IF( ln_grid_global ) CALL mppmap_init 377 ! 395 378 CALL obs_grid_setup( ) 396 379 … … 398 381 ! Depending on switches read the various observation types 399 382 !----------------------------------------------------------------------- 400 401 IF ( nproftypes > 0 ) THEN 402 403 ALLOCATE(profdata(nproftypes)) 404 ALLOCATE(profdataqc(nproftypes)) 405 ALLOCATE(nvarsprof(nproftypes)) 406 ALLOCATE(nextrprof(nproftypes)) 407 383 ! 384 IF( nproftypes > 0 ) THEN 385 ! 386 ALLOCATE( profdata (nproftypes) , nvarsprof (nproftypes) ) 387 ALLOCATE( profdataqc(nproftypes) , nextrprof (nproftypes) ) 388 ! 408 389 DO jtype = 1, nproftypes 409 390 ! 410 391 nvarsprof(jtype) = 2 411 392 IF ( TRIM(cobstypesprof(jtype)) == 'prof' ) THEN … … 431 412 zmask2 = vmask 432 413 ENDIF 433 434 ! Read in profile or profile obs types414 ! 415 ! Read in profile or profile obs types 435 416 CALL obs_rea_prof( profdata(jtype), ifilesprof(jtype), & 436 417 & clproffiles(jtype,1:ifilesprof(jtype)), & … … 439 420 & ln_ignmis, ln_s_at_t, .FALSE., & 440 421 & kdailyavtypes = nn_profdavtypes ) 441 422 ! 442 423 DO jvar = 1, nvarsprof(jtype) 443 424 CALL obs_prof_staend( profdata(jtype), jvar ) 444 425 END DO 445 426 ! 446 427 CALL obs_pre_prof( profdata(jtype), profdataqc(jtype), & 447 428 & llvar1, llvar2, & … … 450 431 & ln_nea, ln_bound_reject, & 451 432 & kdailyavtypes = nn_profdavtypes ) 452 453 433 END DO 454 434 ! 455 435 DEALLOCATE( ifilesprof, clproffiles ) 456 457 ENDIF 458 459 IF ( nsurftypes > 0 ) THEN 460 461 ALLOCATE(surfdata(nsurftypes)) 462 ALLOCATE(surfdataqc(nsurftypes)) 463 ALLOCATE(nvarssurf(nsurftypes)) 464 ALLOCATE(nextrsurf(nsurftypes)) 465 436 ! 437 ENDIF 438 ! 439 IF( nsurftypes > 0 ) THEN 440 ! 441 ALLOCATE( surfdata (nsurftypes) , nvarssurf(nsurftypes) ) 442 ALLOCATE( surfdataqc(nsurftypes) , nextrsurf(nsurftypes) ) 443 ! 466 444 DO jtype = 1, nsurftypes 467 445 ! 468 446 nvarssurf(jtype) = 1 469 447 nextrsurf(jtype) = 0 470 448 llnightav(jtype) = .FALSE. 471 IF ( TRIM(cobstypessurf(jtype)) == 'sla' )nextrsurf(jtype) = 2472 IF ( TRIM(cobstypessurf(jtype)) == 'sst' )llnightav(jtype) = ln_sstnight473 474 ! Read in surface obs types449 IF( TRIM(cobstypessurf(jtype)) == 'sla' ) nextrsurf(jtype) = 2 450 IF( TRIM(cobstypessurf(jtype)) == 'sst' ) llnightav(jtype) = ln_sstnight 451 ! 452 ! Read in surface obs types 475 453 CALL obs_rea_surf( surfdata(jtype), ifilessurf(jtype), & 476 454 & clsurffiles(jtype,1:ifilessurf(jtype)), & 477 455 & nvarssurf(jtype), nextrsurf(jtype), nitend-nit000+2, & 478 456 & rn_dobsini, rn_dobsend, ln_ignmis, .FALSE., llnightav(jtype) ) 479 457 ! 480 458 CALL obs_pre_surf( surfdata(jtype), surfdataqc(jtype), ln_nea, ln_bound_reject ) 481 482 IF 459 ! 460 IF( TRIM(cobstypessurf(jtype)) == 'sla' ) THEN 483 461 CALL obs_rea_mdt( surfdataqc(jtype), n2dintsurf(jtype) ) 484 IF ( ln_altbias )&462 IF( ln_altbias ) & 485 463 & CALL obs_rea_altbias ( surfdataqc(jtype), n2dintsurf(jtype), cn_altbiasfile ) 486 464 ENDIF 487 488 IF 465 ! 466 IF( TRIM(cobstypessurf(jtype)) == 'sst' .AND. ln_sstbias ) THEN 489 467 jnumsstbias = 0 490 468 DO jfile = 1, jpmaxnfiles 491 IF ( TRIM(cn_sstbiasfiles(jfile)) /= '' ) & 492 & jnumsstbias = jnumsstbias + 1 469 IF( TRIM(cn_sstbiasfiles(jfile)) /= '' ) jnumsstbias = jnumsstbias + 1 493 470 END DO 494 IF ( jnumsstbias == 0 ) THEN 495 CALL ctl_stop("ln_sstbias set but no bias files to read in") 496 ENDIF 497 498 CALL obs_app_sstbias( surfdataqc(jtype), n2dintsurf(jtype), & 499 & jnumsstbias, cn_sstbiasfiles(1:jnumsstbias) ) 500 471 IF( jnumsstbias == 0 ) CALL ctl_stop("ln_sstbias set but no bias files to read in") 472 ! 473 CALL obs_app_sstbias( surfdataqc(jtype), n2dintsurf(jtype) , & 474 & jnumsstbias , cn_sstbiasfiles(1:jnumsstbias) ) 501 475 ENDIF 502 476 END DO 503 477 ! 504 478 DEALLOCATE( ifilessurf, clsurffiles ) 505 506 ENDIF 507 479 ! 480 ENDIF 481 ! 508 482 END SUBROUTINE dia_obs_init 509 483 … … 521 495 !! 522 496 !! ** Action : 523 !!524 !! History :525 !! ! 06-03 (K. Mogensen) Original code526 !! ! 06-05 (K. Mogensen) Reformatted527 !! ! 06-10 (A. Weaver) Cleaning528 !! ! 07-03 (K. Mogensen) General handling of profiles529 !! ! 07-04 (G. Smith) Generalized surface operators530 !! ! 08-10 (M. Valdivieso) obs operator for velocity profiles531 !! ! 14-08 (J. While) observation operator for profiles in532 !! generalised vertical coordinates533 !! ! 15-08 (M. Martin) Combined surface/profile routines.534 497 !!---------------------------------------------------------------------- 535 498 USE dom_oce, ONLY : gdept_n, gdept_1d ! Ocean space and time domain variables -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcapr.F90
r8524 r9168 70 70 REWIND( numnam_ref ) ! Namelist namsbc_apr in reference namelist : File for atmospheric pressure forcing 71 71 READ ( numnam_ref, namsbc_apr, IOSTAT = ios, ERR = 901) 72 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_apr in reference namelist', lwp )72 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_apr in reference namelist', lwp ) 73 73 74 74 REWIND( numnam_cfg ) ! Namelist namsbc_apr in configuration namelist : File for atmospheric pressure forcing 75 75 READ ( numnam_cfg, namsbc_apr, IOSTAT = ios, ERR = 902 ) 76 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namsbc_apr in configuration namelist', lwp )76 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namsbc_apr in configuration namelist', lwp ) 77 77 IF(lwm) WRITE ( numond, namsbc_apr ) 78 78 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk.F90
r9124 r9168 182 182 REWIND( numnam_ref ) !* Namelist namsbc_blk in reference namelist : bulk parameters 183 183 READ ( numnam_ref, namsbc_blk, IOSTAT = ios, ERR = 901) 184 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_blk in reference namelist', lwp )184 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_blk in reference namelist', lwp ) 185 185 ! 186 186 REWIND( numnam_cfg ) !* Namelist namsbc_blk in configuration namelist : bulk parameters 187 187 READ ( numnam_cfg, namsbc_blk, IOSTAT = ios, ERR = 902 ) 188 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namsbc_blk in configuration namelist', lwp )188 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namsbc_blk in configuration namelist', lwp ) 189 189 ! 190 190 IF(lwm) WRITE( numond, namsbc_blk ) … … 225 225 ALLOCATE( sf(ifpr)%fnow(jpi,jpj,1) ) 226 226 IF( slf_i(ifpr)%ln_tint ) ALLOCATE( sf(ifpr)%fdta(jpi,jpj,1,2) ) 227 228 IF( slf_i(ifpr)%nfreqh .GT. 0._wp .AND. MOD( 3600._wp * slf_i(ifpr)%nfreqh , REAL(nn_fsbc, wp) * rdt) .NE. 0._wp )&229 & CALL ctl_warn( 'sbcmod time step rdt * nn_fsbc is NOT a submultiple of atmospheric forcing frequency' )227 IF( slf_i(ifpr)%nfreqh > 0. .AND. MOD( 3600. * slf_i(ifpr)%nfreqh , REAL(nn_fsbc) * rdt) /= 0. ) & 228 & CALL ctl_warn( 'sbc_blk_init: sbcmod timestep rdt*nn_fsbc is NOT a submultiple of atmospheric forcing frequency.', & 229 & ' This is not ideal. You should consider changing either rdt or nn_fsbc value...' ) 230 230 231 231 END DO -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r9124 r9168 268 268 REWIND( numnam_cfg ) ! Namelist namsbc_cpl in configuration namelist : Variables for OASIS coupling 269 269 READ ( numnam_cfg, namsbc_cpl, IOSTAT = ios, ERR = 902 ) 270 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namsbc_cpl in configuration namelist', lwp )270 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namsbc_cpl in configuration namelist', lwp ) 271 271 IF(lwm) WRITE ( numond, namsbc_cpl ) 272 272 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcflx.F90
r6140 r9168 93 93 REWIND( numnam_ref ) ! Namelist namsbc_flx in reference namelist : Files for fluxes 94 94 READ ( numnam_ref, namsbc_flx, IOSTAT = ios, ERR = 901) 95 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_flx in reference namelist', lwp )95 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_flx in reference namelist', lwp ) 96 96 97 97 REWIND( numnam_cfg ) ! Namelist namsbc_flx in configuration namelist : Files for fluxes 98 98 READ ( numnam_cfg, namsbc_flx, IOSTAT = ios, ERR = 902 ) 99 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namsbc_flx in configuration namelist', lwp )99 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namsbc_flx in configuration namelist', lwp ) 100 100 IF(lwm) WRITE ( numond, namsbc_flx ) 101 101 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcfwb.F90
r9125 r9168 96 96 ! 97 97 ENDIF 98 99 98 100 99 SELECT CASE ( kn_fwb ) -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90
r9125 r9168 764 764 REWIND( numnam_ref ) ! Namelist namsbc_cice in reference namelist : 765 765 READ ( numnam_ref, namsbc_cice, IOSTAT = ios, ERR = 901) 766 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_cice in reference namelist', lwp )766 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_cice in reference namelist', lwp ) 767 767 768 768 REWIND( numnam_cfg ) ! Namelist namsbc_cice in configuration namelist : Parameters of the run 769 769 READ ( numnam_cfg, namsbc_cice, IOSTAT = ios, ERR = 902 ) 770 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namsbc_cice in configuration namelist', lwp )770 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namsbc_cice in configuration namelist', lwp ) 771 771 IF(lwm) WRITE ( numond, namsbc_cice ) 772 772 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_if.F90
r7646 r9168 17 17 USE sbc_oce ! surface boundary condition: ocean fields 18 18 #if defined key_lim3 19 USE ice , ONLY : a_i19 USE ice , ONLY : a_i 20 20 #else 21 USE sbc_ice , ONLY : a_i21 USE sbc_ice , ONLY : a_i 22 22 #endif 23 ! 24 USE in_out_manager ! I/O manager 25 USE iom ! I/O manager library 23 26 USE fldread ! read input field 24 USE iom ! I/O manager library25 USE in_out_manager ! I/O manager26 27 USE lib_mpp ! MPP library 27 28 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) … … 75 76 REWIND( numnam_ref ) ! Namelist namsbc_iif in reference namelist : Ice if file 76 77 READ ( numnam_ref, namsbc_iif, IOSTAT = ios, ERR = 901) 77 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_iif in reference namelist', lwp )78 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_iif in reference namelist', lwp ) 78 79 79 80 REWIND( numnam_cfg ) ! Namelist Namelist namsbc_iif in configuration namelist : Ice if file 80 81 READ ( numnam_cfg, namsbc_iif, IOSTAT = ios, ERR = 902 ) 81 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namsbc_iif in configuration namelist', lwp )82 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namsbc_iif in configuration namelist', lwp ) 82 83 IF(lwm) WRITE ( numond, namsbc_iif ) 83 84 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcisf.F90
r9124 r9168 276 276 REWIND( numnam_ref ) ! Namelist namsbc_rnf in reference namelist : Runoffs 277 277 READ ( numnam_ref, namsbc_isf, IOSTAT = ios, ERR = 901) 278 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_isf in reference namelist', lwp )278 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_isf in reference namelist', lwp ) 279 279 280 280 REWIND( numnam_cfg ) ! Namelist namsbc_rnf in configuration namelist : Runoffs 281 281 READ ( numnam_cfg, namsbc_isf, IOSTAT = ios, ERR = 902 ) 282 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namsbc_isf in configuration namelist', lwp )282 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namsbc_isf in configuration namelist', lwp ) 283 283 IF(lwm) WRITE ( numond, namsbc_isf ) 284 284 285 IF ( lwp ) WRITE(numout,*) 286 IF ( lwp ) WRITE(numout,*) 'sbc_isf_init : heat flux of the ice shelf' 287 IF ( lwp ) WRITE(numout,*) '~~~~~~~~~~~' 288 IF ( lwp ) WRITE(numout,*) ' nn_isf = ', nn_isf 289 IF ( lwp ) WRITE(numout,*) ' nn_isfblk = ', nn_isfblk 290 IF ( lwp ) WRITE(numout,*) ' rn_hisf_tbl = ', rn_hisf_tbl 291 IF ( lwp ) WRITE(numout,*) ' nn_gammablk = ', nn_gammablk 292 IF ( lwp ) WRITE(numout,*) ' rn_gammat0 = ', rn_gammat0 293 IF ( lwp ) WRITE(numout,*) ' rn_gammas0 = ', rn_gammas0 294 IF ( lwp ) WRITE(numout,*) ' rn_Cd0 = ', r_Cdmin_top 285 IF(lwp) WRITE(numout,*) 286 IF(lwp) WRITE(numout,*) 'sbc_isf_init : heat flux of the ice shelf' 287 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~' 288 IF(lwp) WRITE(numout,*) ' Namelist namsbc_isf :' 289 IF(lwp) WRITE(numout,*) ' type ice shelf melting/freezing nn_isf = ', nn_isf 290 IF(lwp) WRITE(numout,*) ' bulk formulation (nn_isf=1 only) nn_isfblk = ', nn_isfblk 291 IF(lwp) WRITE(numout,*) ' thickness of the top boundary layer rn_hisf_tbl = ', rn_hisf_tbl 292 IF(lwp) WRITE(numout,*) ' gamma formulation nn_gammablk = ', nn_gammablk 293 IF(lwp) WRITE(numout,*) ' gammat coefficient rn_gammat0 = ', rn_gammat0 294 IF(lwp) WRITE(numout,*) ' gammas coefficient rn_gammas0 = ', rn_gammas0 295 IF(lwp) WRITE(numout,*) ' top drag coef. used (from namdrg_top) rn_Cd0 = ', r_Cdmin_top 296 297 298 ! 1 = presence of ISF 2 = bg03 parametrisation 299 ! 3 = rnf file for isf 4 = ISF fwf specified 300 ! option 1 and 4 need ln_isfcav = .true. (domzgr) 295 301 ! 296 302 ! Allocate public variable … … 304 310 SELECT CASE ( nn_isf ) 305 311 CASE ( 1 ) 312 IF(lwp) WRITE(numout,*) 313 IF(lwp) WRITE(numout,*) ' ==>>> presence of under iceshelf seas (nn_isf = 1)' 306 314 rhisf_tbl(:,:) = rn_hisf_tbl 307 315 misfkt (:,:) = mikt(:,:) ! same indice for bg03 et cav => used in isfdiv 308 316 ! 309 317 CASE ( 2 , 3 ) 310 318 IF( .NOT.l_isfcpl ) THEN … … 314 322 ENDIF 315 323 ! read effective lenght (BG03) 316 IF (nn_isf == 2) THEN 324 IF( nn_isf == 2 ) THEN 325 IF(lwp) WRITE(numout,*) 326 IF(lwp) WRITE(numout,*) ' ==>>> bg03 parametrisation (nn_isf = 2)' 317 327 CALL iom_open( sn_Leff_isf%clname, inum ) 318 328 cvarLeff = TRIM(sn_Leff_isf%clvar) … … 321 331 ! 322 332 risfLeff = risfLeff*1000.0_wp !: convertion in m 323 END IF 333 ELSE 334 IF(lwp) WRITE(numout,*) 335 IF(lwp) WRITE(numout,*) ' ==>>> rnf file for isf (nn_isf = 3)' 336 ENDIF 324 337 ! read depth of the top and bottom of the isf top boundary layer (in this case, isf front depth and grounding line depth) 325 338 CALL iom_open( sn_depmax_isf%clname, inum ) … … 344 357 END DO 345 358 END DO 346 359 ! 347 360 CASE ( 4 ) 361 IF(lwp) WRITE(numout,*) 362 IF(lwp) WRITE(numout,*) ' ==>>> specified fresh water flux in ISF (nn_isf = 4)' 348 363 ! as in nn_isf == 1 349 364 rhisf_tbl(:,:) = rn_hisf_tbl 350 365 misfkt (:,:) = mikt(:,:) ! same indice for bg03 et cav => used in isfdiv 351 366 ! 352 367 ! load variable used in fldread (use for temporal interpolation of isf fwf forcing) 353 368 IF( .NOT.l_isfcpl ) THEN … … 356 371 CALL fld_fill( sf_fwfisf, (/ sn_fwfisf /), cn_dirisf, 'sbc_isf_init', 'read fresh water flux isf data', 'namsbc_isf' ) 357 372 ENDIF 358 373 ! 374 CASE DEFAULT 375 CALL ctl_stop( 'sbc_isf_init: wrong value of nn_isf' ) 359 376 END SELECT 360 377 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r9161 r9168 113 113 REWIND( numnam_cfg ) !* Namelist namsbc in configuration namelist : Parameters of the run 114 114 READ ( numnam_cfg, namsbc, IOSTAT = ios, ERR = 902 ) 115 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namsbc in configuration namelist', lwp )115 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namsbc in configuration namelist', lwp ) 116 116 IF(lwm) WRITE( numond, namsbc ) 117 117 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90
r9161 r9168 267 267 REWIND( numnam_ref ) ! Namelist namsbc_rnf in reference namelist : Runoffs 268 268 READ ( numnam_ref, namsbc_rnf, IOSTAT = ios, ERR = 901) 269 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_rnf in reference namelist', lwp )269 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_rnf in reference namelist', lwp ) 270 270 271 271 REWIND( numnam_cfg ) ! Namelist namsbc_rnf in configuration namelist : Runoffs 272 272 READ ( numnam_cfg, namsbc_rnf, IOSTAT = ios, ERR = 902 ) 273 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namsbc_rnf in configuration namelist', lwp )273 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namsbc_rnf in configuration namelist', lwp ) 274 274 IF(lwm) WRITE ( numond, namsbc_rnf ) 275 275 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssr.F90
r9124 r9168 161 161 REWIND( numnam_ref ) ! Namelist namsbc_ssr in reference namelist : 162 162 READ ( numnam_ref, namsbc_ssr, IOSTAT = ios, ERR = 901) 163 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_ssr in reference namelist', lwp )163 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_ssr in reference namelist', lwp ) 164 164 165 165 REWIND( numnam_cfg ) ! Namelist namsbc_ssr in configuration namelist : 166 166 READ ( numnam_cfg, namsbc_ssr, IOSTAT = ios, ERR = 902 ) 167 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namsbc_ssr in configuration namelist', lwp )167 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namsbc_ssr in configuration namelist', lwp ) 168 168 IF(lwm) WRITE ( numond, namsbc_ssr ) 169 169 … … 173 173 WRITE(numout,*) '~~~~~~~ ' 174 174 WRITE(numout,*) ' Namelist namsbc_ssr :' 175 WRITE(numout,*) ' SST restoring term (Yes=1) nn_sstr = ', nn_sstr 176 WRITE(numout,*) ' SSS damping term (Yes=1, salt flux) nn_sssr = ', nn_sssr 175 WRITE(numout,*) ' SST restoring term (Yes=1) nn_sstr = ', nn_sstr 176 WRITE(numout,*) ' dQ/dT (restoring magnitude on SST) rn_dqdt = ', rn_dqdt, ' W/m2/K' 177 WRITE(numout,*) ' SSS damping term (Yes=1, salt flux) nn_sssr = ', nn_sssr 177 178 WRITE(numout,*) ' (Yes=2, volume flux) ' 178 WRITE(numout,*) ' dQ/dT (restoring magnitude on SST) rn_dqdt = ', rn_dqdt, ' W/m2/K' 179 WRITE(numout,*) ' dE/dS (restoring magnitude on SST) rn_deds = ', rn_deds, ' mm/day' 180 WRITE(numout,*) ' flag to bound erp term ln_sssr_bnd = ', ln_sssr_bnd 181 WRITE(numout,*) ' ABS(Max./Min.) erp threshold rn_sssr_bnd = ', rn_sssr_bnd, ' mm/day' 179 WRITE(numout,*) ' dE/dS (restoring magnitude on SST) rn_deds = ', rn_deds, ' mm/day' 180 WRITE(numout,*) ' flag to bound erp term ln_sssr_bnd = ', ln_sssr_bnd 181 WRITE(numout,*) ' ABS(Max./Min.) erp threshold rn_sssr_bnd = ', rn_sssr_bnd, ' mm/day' 182 182 ENDIF 183 183 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90
r9125 r9168 392 392 REWIND( numnam_ref ) ! Namelist namsbc_wave in reference namelist : File for drag coeff. from wave model 393 393 READ ( numnam_ref, namsbc_wave, IOSTAT = ios, ERR = 901) 394 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_wave in reference namelist', lwp )394 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_wave in reference namelist', lwp ) 395 395 396 396 REWIND( numnam_cfg ) ! Namelist namsbc_wave in configuration namelist : File for drag coeff. from wave model 397 397 READ ( numnam_cfg, namsbc_wave, IOSTAT = ios, ERR = 902 ) 398 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namsbc_wave in configuration namelist', lwp )398 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namsbc_wave in configuration namelist', lwp ) 399 399 IF(lwm) WRITE ( numond, namsbc_wave ) 400 400 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90
r9023 r9168 64 64 REWIND( numnam_cfg ) ! Namelist nam_tide in configuration namelist : Tides 65 65 READ ( numnam_cfg, nam_tide, IOSTAT = ios, ERR = 902 ) 66 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'nam_tide in configuration namelist', lwp )66 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nam_tide in configuration namelist', lwp ) 67 67 IF(lwm) WRITE ( numond, nam_tide ) 68 68 ! 69 IF (ln_tide) THEN69 IF( ln_tide ) THEN 70 70 IF (lwp) THEN 71 71 WRITE(numout,*) … … 73 73 WRITE(numout,*) '~~~~~~~~~ ' 74 74 WRITE(numout,*) ' Namelist nam_tide' 75 WRITE(numout,*) ' Use tidal components :ln_tide = ', ln_tide76 WRITE(numout,*) ' Apply astronomical potential :ln_tide_pot = ', ln_tide_pot77 WRITE(numout,*) ' Use scalar approx. for load potential :ln_scal_load = ', ln_scal_load78 WRITE(numout,*) ' Read load potential from file :ln_read_load = ', ln_read_load79 WRITE(numout,*) ' Apply ramp on tides at startup :ln_tide_ramp = ', ln_tide_ramp80 WRITE(numout,*) ' Fraction of SSH used in scal. approx. :rn_scal_load = ', rn_scal_load81 WRITE(numout,*) ' Duration (days) of ramp :rdttideramp = ', rdttideramp75 WRITE(numout,*) ' Use tidal components ln_tide = ', ln_tide 76 WRITE(numout,*) ' Apply astronomical potential ln_tide_pot = ', ln_tide_pot 77 WRITE(numout,*) ' Use scalar approx. for load potential ln_scal_load = ', ln_scal_load 78 WRITE(numout,*) ' Read load potential from file ln_read_load = ', ln_read_load 79 WRITE(numout,*) ' Apply ramp on tides at startup ln_tide_ramp = ', ln_tide_ramp 80 WRITE(numout,*) ' Fraction of SSH used in scal. approx. rn_scal_load = ', rn_scal_load 81 WRITE(numout,*) ' Duration (days) of ramp rdttideramp = ', rdttideramp 82 82 ENDIF 83 83 ELSE -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90
r9094 r9168 1241 1241 REWIND( numnam_ref ) ! Namelist nameos in reference namelist : equation of state 1242 1242 READ ( numnam_ref, nameos, IOSTAT = ios, ERR = 901 ) 1243 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nameos in reference namelist', lwp )1243 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nameos in reference namelist', lwp ) 1244 1244 ! 1245 1245 REWIND( numnam_cfg ) ! Namelist nameos in configuration namelist : equation of state 1246 1246 READ ( numnam_cfg, nameos, IOSTAT = ios, ERR = 902 ) 1247 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'nameos in configuration namelist', lwp )1247 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nameos in configuration namelist', lwp ) 1248 1248 IF(lwm) WRITE( numond, nameos ) 1249 1249 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90
r9019 r9168 200 200 REWIND( numnam_cfg ) ! Namelist namtra_adv in configuration namelist : Tracer advection scheme 201 201 READ ( numnam_cfg, namtra_adv, IOSTAT = ios, ERR = 902 ) 202 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namtra_adv in configuration namelist', lwp )202 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtra_adv in configuration namelist', lwp ) 203 203 IF(lwm) WRITE( numond, namtra_adv ) 204 204 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mle.F90
r9124 r9168 266 266 REWIND( numnam_ref ) ! Namelist namtra_adv_mle in reference namelist : Tracer advection scheme 267 267 READ ( numnam_ref, namtra_adv_mle, IOSTAT = ios, ERR = 901) 268 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtra_adv_mle in reference namelist', lwp )268 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtra_adv_mle in reference namelist', lwp ) 269 269 270 270 REWIND( numnam_cfg ) ! Namelist namtra_adv_mle in configuration namelist : Tracer advection scheme 271 271 READ ( numnam_cfg, namtra_adv_mle, IOSTAT = ios, ERR = 902 ) 272 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namtra_adv_mle in configuration namelist', lwp )272 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtra_adv_mle in configuration namelist', lwp ) 273 273 IF(lwm) WRITE ( numond, namtra_adv_mle ) 274 274 … … 278 278 WRITE(numout,*) '~~~~~~~~~~~~~~~~' 279 279 WRITE(numout,*) ' Namelist namtra_adv_mle : mixed layer eddy advection on tracers' 280 WRITE(numout,*) ' use mixed layer eddy (MLE, i.e. Fox-Kemper param) (T/F) ln_mle = ', ln_mle281 WRITE(numout,*) ' MLE type: =0 standard Fox-Kemper ; =1 new formulation nn_mle = ', nn_mle282 WRITE(numout,*) ' magnitude of the MLE (typical value: 0.06 to 0.08) rn_ce = ', rn_ce283 WRITE(numout,*) ' scale of ML front (ML radius of deformation) (rn_mle=0) rn_lf = ', rn_lf, 'm'284 WRITE(numout,*) ' maximum time scale of MLE (rn_mle=0) rn_time = ', rn_time, 's'285 WRITE(numout,*) ' reference latitude (degrees) of MLE coef. (rn_mle=1) rn_lat = ', rn_lat, 'deg'286 WRITE(numout,*) ' space interp. of MLD at u-(v-)pts (0=min,1=averaged,2=max) nn_mld_uv = ', nn_mld_uv287 WRITE(numout,*) ' =1 no MLE in case of convection ; =0 always MLE nn_conv = ', nn_conv288 WRITE(numout,*) ' Density difference used to define ML for FK rn_rho_c_mle = ', rn_rho_c_mle280 WRITE(numout,*) ' use mixed layer eddy (MLE, i.e. Fox-Kemper param) (T/F) ln_mle = ', ln_mle 281 WRITE(numout,*) ' MLE type: =0 standard Fox-Kemper ; =1 new formulation nn_mle = ', nn_mle 282 WRITE(numout,*) ' magnitude of the MLE (typical value: 0.06 to 0.08) rn_ce = ', rn_ce 283 WRITE(numout,*) ' scale of ML front (ML radius of deformation) (rn_mle=0) rn_lf = ', rn_lf, 'm' 284 WRITE(numout,*) ' maximum time scale of MLE (rn_mle=0) rn_time = ', rn_time, 's' 285 WRITE(numout,*) ' reference latitude (degrees) of MLE coef. (rn_mle=1) rn_lat = ', rn_lat, 'deg' 286 WRITE(numout,*) ' space interp. of MLD at u-(v-)pts (0=min,1=averaged,2=max) nn_mld_uv = ', nn_mld_uv 287 WRITE(numout,*) ' =1 no MLE in case of convection ; =0 always MLE nn_conv = ', nn_conv 288 WRITE(numout,*) ' Density difference used to define ML for FK rn_rho_c_mle = ', rn_rho_c_mle 289 289 ENDIF 290 290 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/trabbc.F90
r9019 r9168 139 139 REWIND( numnam_cfg ) ! Namelist nambbc in configuration namelist : Bottom momentum boundary condition 140 140 READ ( numnam_cfg, nambbc, IOSTAT = ios, ERR = 902 ) 141 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'nambbc in configuration namelist', lwp )141 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nambbc in configuration namelist', lwp ) 142 142 IF(lwm) WRITE ( numond, nambbc ) 143 143 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90
r9124 r9168 127 127 CALL iom_put( "ahv_bbl", ahv_bbl ) ! bbl diffusive flux j-coef 128 128 ! 129 END 129 ENDIF 130 130 ! 131 131 IF( nn_bbl_adv /= 0 ) THEN !* Advective bbl … … 140 140 CALL iom_put( "voce_bbl", vtr_bbl ) ! bbl j-transport 141 141 ! 142 END 142 ENDIF 143 143 144 144 IF( l_trdtra ) THEN ! send the trends for further diagnostics … … 489 489 REWIND( numnam_cfg ) ! Namelist nambbl in configuration namelist : Bottom boundary layer scheme 490 490 READ ( numnam_cfg, nambbl, IOSTAT = ios, ERR = 902 ) 491 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'nambbl in configuration namelist', lwp )491 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nambbl in configuration namelist', lwp ) 492 492 IF(lwm) WRITE ( numond, nambbl ) 493 493 ! … … 528 528 mbku_d(:,:) = MAX( INT( zmbku(:,:) ), 1 ) ; mbkv_d(:,:) = MAX( INT( zmbkv(:,:) ), 1 ) 529 529 ! 530 530 ! !* sign of grad(H) at u- and v-points; zero if grad(H) = 0 531 531 mgrhu(:,:) = 0 ; mgrhv(:,:) = 0 532 532 DO jj = 1, jpjm1 -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/tradmp.F90
r9019 r9168 179 179 REWIND( numnam_ref ) ! Namelist namtra_dmp in reference namelist : T & S relaxation 180 180 READ ( numnam_ref, namtra_dmp, IOSTAT = ios, ERR = 901) 181 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtra_dmp in reference namelist', lwp )181 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtra_dmp in reference namelist', lwp ) 182 182 ! 183 183 REWIND( numnam_cfg ) ! Namelist namtra_dmp in configuration namelist : T & S relaxation 184 184 READ ( numnam_cfg, namtra_dmp, IOSTAT = ios, ERR = 902 ) 185 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namtra_dmp in configuration namelist', lwp )185 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtra_dmp in configuration namelist', lwp ) 186 186 IF(lwm) WRITE ( numond, namtra_dmp ) 187 187 ! … … 191 191 WRITE(numout,*) '~~~~~~~~~~~~' 192 192 WRITE(numout,*) ' Namelist namtra_dmp : set relaxation parameters' 193 WRITE(numout,*) ' Apply relaxation or not ln_tradmp = ', ln_tradmp194 WRITE(numout,*) ' mixed layer damping option nn_zdmp= ', nn_zdmp195 WRITE(numout,*) ' Damping file name cn_resto= ', cn_resto193 WRITE(numout,*) ' Apply relaxation or not ln_tradmp = ', ln_tradmp 194 WRITE(numout,*) ' mixed layer damping option nn_zdmp = ', nn_zdmp 195 WRITE(numout,*) ' Damping file name cn_resto = ', cn_resto 196 196 WRITE(numout,*) 197 197 ENDIF -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90
r9124 r9168 340 340 REWIND( numnam_cfg ) ! Namelist namtra_qsr in configuration namelist 341 341 READ ( numnam_cfg, namtra_qsr, IOSTAT = ios, ERR = 902 ) 342 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namtra_qsr in configuration namelist', lwp )342 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtra_qsr in configuration namelist', lwp ) 343 343 IF(lwm) WRITE ( numond, namtra_qsr ) 344 344 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRD/trdini.F90
r7646 r9168 48 48 REWIND( numnam_ref ) ! Namelist namtrd in reference namelist : trends diagnostic 49 49 READ ( numnam_ref, namtrd, IOSTAT = ios, ERR = 901 ) 50 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrd in reference namelist', lwp )50 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrd in reference namelist', lwp ) 51 51 ! 52 52 REWIND( numnam_cfg ) ! Namelist namtrd in configuration namelist : trends diagnostic 53 53 READ ( numnam_cfg, namtrd, IOSTAT = ios, ERR = 902 ) 54 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namtrd in configuration namelist', lwp )54 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrd in configuration namelist', lwp ) 55 55 IF(lwm) WRITE( numond, namtrd ) 56 56 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/TRD/trdmxl.F90
r9125 r9168 734 734 REWIND( numnam_ref ) ! Namelist namtrd_mxl in reference namelist : mixed layer trends diagnostic 735 735 READ ( numnam_ref, namtrd_mxl, IOSTAT = ios, ERR = 901 ) 736 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrd_mxl in reference namelist', lwp )736 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrd_mxl in reference namelist', lwp ) 737 737 738 738 REWIND( numnam_cfg ) ! Namelist namtrd_mxl in configuration namelist : mixed layer trends diagnostic 739 739 READ ( numnam_cfg, namtrd_mxl, IOSTAT = ios, ERR = 902 ) 740 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namtrd_mxl in configuration namelist', lwp )740 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrd_mxl in configuration namelist', lwp ) 741 741 IF(lwm) WRITE( numond, namtrd_mxl ) 742 742 ! -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfdrg.F90
r9089 r9168 162 162 REWIND( numnam_cfg ) ! Namelist namdrg in configuration namelist 163 163 READ ( numnam_cfg, namdrg, IOSTAT = ios, ERR = 902 ) 164 902 IF( ios /=0 ) CALL ctl_nam( ios , 'namdrg in configuration namelist', lwp )164 902 IF( ios > 0 ) CALL ctl_nam( ios , 'namdrg in configuration namelist', lwp ) 165 165 IF(lwm) WRITE ( numond, namdrg ) 166 166 ! … … 263 263 IF(ll_top) READ ( numnam_cfg, namdrg_top, IOSTAT = ios, ERR = 902 ) 264 264 IF(ll_bot) READ ( numnam_cfg, namdrg_bot, IOSTAT = ios, ERR = 902 ) 265 902 IF( ios /=0 ) CALL ctl_nam( ios , TRIM(cl_namcfg), lwp )265 902 IF( ios > 0 ) CALL ctl_nam( ios , TRIM(cl_namcfg), lwp ) 266 266 IF(lwm .AND. ll_top) WRITE ( numond, namdrg_top ) 267 267 IF(lwm .AND. ll_bot) WRITE ( numond, namdrg_bot ) -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/module_example
r9019 r9168 153 153 READ ( numnam_ref, namexa, IOSTAT = ios, ERR = 901) 154 154 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namexa in reference namelist', lwp ) 155 155 ! 156 156 REWIND( numnam_cfg ) ! Namelist namexa in configuration namelist : Example 157 157 READ ( numnam_cfg, namexa, IOSTAT = ios, ERR = 902 ) 158 902 IF( ios /=0 ) CALL ctl_nam ( ios , 'namexa in configuration namelist', lwp )158 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namexa in configuration namelist', lwp ) 159 159 ! Output namelist for control 160 160 WRITE ( numond, namexa ) -
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r9161 r9168 257 257 REWIND( numnam_ref ) ! Namelist namctl in reference namelist : Control prints 258 258 READ ( numnam_ref, namctl, IOSTAT = ios, ERR = 901 ) 259 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namctl in reference namelist', .TRUE. ) 260 ! 259 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namctl in reference namelist', .TRUE. ) 261 260 REWIND( numnam_cfg ) ! Namelist namctl in confguration namelist 262 261 READ ( numnam_cfg, namctl, IOSTAT = ios, ERR = 902 ) 263 902 IF( ios /= 0 )CALL ctl_nam ( ios , 'namctl in configuration namelist', .TRUE. )262 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namctl in configuration namelist', .TRUE. ) 264 263 ! 265 264 REWIND( numnam_ref ) ! Namelist namcfg in reference namelist : Control prints 266 265 READ ( numnam_ref, namcfg, IOSTAT = ios, ERR = 903 ) 267 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfg in reference namelist', .TRUE. ) 268 266 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfg in reference namelist', .TRUE. ) 269 267 REWIND( numnam_cfg ) ! Namelist namcfg in confguration namelist : Control prints & Benchmark 270 268 READ ( numnam_cfg, namcfg, IOSTAT = ios, ERR = 904 ) 271 904 IF( ios /= 0 )CALL ctl_nam ( ios , 'namcfg in configuration namelist', .TRUE. )269 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namcfg in configuration namelist', .TRUE. ) 272 270 273 271 ! !--------------------------!
Note: See TracChangeset
for help on using the changeset viewer.