- Timestamp:
- 2017-06-29T11:41:55+02:00 (7 years ago)
- Location:
- branches/UKMO/test_moci_test_suite/NEMOGCM/NEMO/OPA_SRC/SBC
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/test_moci_test_suite/NEMOGCM/NEMO/OPA_SRC/SBC/cyclone.F90
r6486 r8243 120 120 ! Interpolation of lon lat vmax... at the current timestep 121 121 ! *************************************************************** 122 122 lspr = .false. 123 123 CALL fld_read( kt, nn_fsbc, sf ) ! input fields provided at the current time-step 124 lspr = .false. 124 125 125 126 ztct(:,:) = sf(1)%fnow(:,:,1) -
branches/UKMO/test_moci_test_suite/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90
r6487 r8243 334 334 llprevday = .FALSE. 335 335 isec_week = 0 336 336 337 337 ! define record informations 338 338 CALL fld_rec( kn_fsbc, sdjf, ldbefore = .TRUE. ) ! return before values in sdjf%nrec_a (as we will swap it later) … … 941 941 & ' data type: ' , sdf(jf)%cltype , & 942 942 & ' land/sea mask:' , TRIM( sdf(jf)%lsmname ) 943 call flush(numout)944 943 END DO 945 944 ENDIF … … 1434 1433 jpj1 = 2 + rec1(2) - jpjmin 1435 1434 jpj2 = jpj1 + recn(2) - 1 1436 IF( jpi1 == 2 ) THEN 1435 1437 1436 rec1(1) = ref_wgts(kw)%ddims(1) - ref_wgts(kw)%overlap 1438 1437 SELECT CASE( SIZE( ref_wgts(kw)%col(:,jpj1:jpj2,:),3) ) … … 1442 1441 CALL iom_get( num, jpdom_unknown, clvar, ref_wgts(kw)%col(:,jpj1:jpj2,:), nrec, rec1, recn) 1443 1442 END SELECT 1443 IF( jpi1 == 2 ) THEN 1444 1444 ref_wgts(kw)%fly_dta(jpi1-1,jpj1:jpj2,:) = ref_wgts(kw)%col(1,jpj1:jpj2,:) 1445 1445 ENDIF 1446 IF( jpi2 + jpimin - 1 == ref_wgts(kw)%ddims(1)+1 ) THEN 1446 1447 1447 rec1(1) = 1 + ref_wgts(kw)%overlap 1448 1448 SELECT CASE( SIZE( ref_wgts(kw)%col(:,jpj1:jpj2,:),3) ) … … 1452 1452 CALL iom_get( num, jpdom_unknown, clvar, ref_wgts(kw)%col(:,jpj1:jpj2,:), nrec, rec1, recn) 1453 1453 END SELECT 1454 IF( jpi2 + jpimin - 1 == ref_wgts(kw)%ddims(1)+1 ) THEN 1454 1455 ref_wgts(kw)%fly_dta(jpi2+1,jpj1:jpj2,:) = ref_wgts(kw)%col(1,jpj1:jpj2,:) 1455 1456 ENDIF -
branches/UKMO/test_moci_test_suite/NEMOGCM/NEMO/OPA_SRC/SBC/sbcapr.F90
r8161 r8243 19 19 USE iom ! IOM library 20 20 USE lib_mpp ! MPP library 21 USE iom_def, ONLY : lwxios 21 22 22 23 IMPLICIT NONE … … 29 30 LOGICAL, PUBLIC :: ln_ref_apr !: ref. pressure: global mean Patm (F) or a constant (F) 30 31 REAL(wp) :: rn_pref ! reference atmospheric pressure [N/m2] 32 LOGICAL :: ln_apr_sio ! single processor read flag 31 33 32 34 REAL(wp), ALLOCATABLE, SAVE, PUBLIC, DIMENSION(:,:) :: ssh_ib ! Inverse barometer now sea surface height [m] … … 77 79 IF( kt == nit000 ) THEN ! First call kt=nit000 ! 78 80 ! ! -------------------- ! 81 ln_apr_sio = .FALSE. 79 82 REWIND( numnam_ref ) ! Namelist namsbc_apr in reference namelist : File for atmospheric pressure forcing 80 83 READ ( numnam_ref, namsbc_apr, IOSTAT = ios, ERR = 901) … … 126 129 IF( kt /= nit000 ) ssh_ibb(:,:) = ssh_ib(:,:) !* Swap of ssh_ib fields 127 130 ! 131 lspr = ln_apr_sio 128 132 CALL fld_read( kt, nn_fsbc, sf_apr ) !* input Patm provided at kt + nn_fsbc/2 133 lspr = .false. 129 134 ! 130 135 ! !* update the reference atmospheric pressure (if necessary) … … 157 162 IF(lwp) WRITE(numout,*) 'sbc_apr : ssh_ib written in ocean restart file at it= ', kt,' date= ', ndastp 158 163 IF(lwp) WRITE(numout,*) '~~~~' 159 CALL iom_rstput( kt, nitrst, numrow, 'ssh_ibb' , ssh_ib ) 164 IF( lwxios ) CALL iom_swap( wxios_context ) 165 CALL iom_rstput( kt, nitrst, numrow, 'ssh_ibb' , ssh_ib, lxios = lwxios ) 166 IF( lwxios ) CALL iom_swap( cxios_context ) 160 167 ENDIF 161 168 ! -
branches/UKMO/test_moci_test_suite/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90
r6498 r8243 84 84 85 85 REAL(wp) :: eps20 = 1.e-20 ! constant values 86 LOGICAL :: ln_clio_sio ! single processor read 86 87 87 88 !! * Substitutions … … 137 138 !! 138 139 NAMELIST/namsbc_clio/ cn_dir, sn_utau, sn_vtau, sn_wndm, sn_humi, & 139 & sn_ccov, sn_tair, sn_prec 140 & sn_ccov, sn_tair, sn_prec, ln_clio_sio 140 141 !!--------------------------------------------------------------------- 141 142 … … 143 144 IF( kt == nit000 ) THEN ! First call kt=nit000 ! 144 145 ! ! ====================== ! 145 146 ln_clio_sio = .FALSE. 146 147 REWIND( numnam_ref ) ! Namelist namsbc_clio in reference namelist : CLIO files 147 148 READ ( numnam_ref, namsbc_clio, IOSTAT = ios, ERR = 901) … … 180 181 ! ! ====================== ! 181 182 ! 183 lspr = ln_clio_sio 182 184 CALL fld_read( kt, nn_fsbc, sf ) ! input fields provided at the current time-step 185 lspr = .false. 183 186 ! 184 187 IF( MOD( kt - 1, nn_fsbc ) == 0 ) CALL blk_oce_clio( sf, sst_m ) -
branches/UKMO/test_moci_test_suite/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90
r6823 r8243 91 91 REAL(wp) :: rn_zqt ! z(q,t) : height of humidity and temperature measurements 92 92 REAL(wp) :: rn_zu ! z(u) : height of wind measurements 93 LOGICAL :: ln_core_sio ! single processor read flag 93 94 94 95 !! * Substitutions … … 151 152 & sn_wndi, sn_wndj, sn_humi , sn_qsr , & 152 153 & sn_qlw , sn_tair, sn_prec , sn_snow, & 153 & sn_tdif, rn_zqt, rn_zu 154 & sn_tdif, rn_zqt, rn_zu, ln_core_sio 154 155 !!--------------------------------------------------------------------- 155 156 ! … … 158 159 ! ! ====================== ! 159 160 ! 161 ln_core_sio = .FALSE. 160 162 REWIND( numnam_ref ) ! Namelist namsbc_core in reference namelist : CORE bulk parameters 161 163 READ ( numnam_ref, namsbc_core, IOSTAT = ios, ERR = 901) … … 197 199 ! 198 200 ENDIF 199 201 lspr = ln_core_sio 200 202 CALL fld_read( kt, nn_fsbc, sf ) ! input fields provided at the current time-step 203 lspr = .false. 201 204 202 205 ! ! compute the surface ocean fluxes using CORE bulk formulea -
branches/UKMO/test_moci_test_suite/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_mfs.F90
r6486 r8243 40 40 INTEGER , PARAMETER :: jp_prec = 7 ! index of total precipitation (rain+snow) (Kg/m2/s) 41 41 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf ! structure of input fields (file informations, fields read) 42 LOGICAL :: ln_msf_sio ! single processor read flag 42 43 43 44 !! * Substitutions … … 120 121 NAMELIST/namsbc_mfs/ cn_dir , & 121 122 & sn_wndi , sn_wndj, sn_clc , sn_msl , & 122 & sn_tair , sn_rhm , sn_prec 123 & sn_tair , sn_rhm , sn_prec, ln_msf_sio 123 124 !!--------------------------------------------------------------------- 124 125 ! 125 126 IF( nn_timing == 1 ) CALL timing_start('sbc_blk_mfs') 126 127 ! 128 ln_msf_sio = .FALSE. 127 129 ! ! ====================== ! 128 130 IF( kt == nit000 ) THEN ! First call kt=nit000 ! … … 161 163 ! 162 164 ENDIF 163 165 lspr = ln_msf_sio 164 166 CALL fld_read( kt, nn_fsbc, sf ) ! input fields provided at the current time-step 167 lspr = .false. 165 168 166 169 catm(:,:) = 0.0 ! initializze cloud cover variable -
branches/UKMO/test_moci_test_suite/NEMOGCM/NEMO/OPA_SRC/SBC/sbcflx.F90
r6486 r8243 35 35 INTEGER , PARAMETER :: jp_emp = 5 ! index of evaporation-precipation file 36 36 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf ! structure of input fields (file informations, fields read) 37 LOGICAL, PRIVATE :: ln_lfx_sio ! single processor read flag 37 38 38 39 !! * Substitutions … … 86 87 TYPE(FLD_N), DIMENSION(jpfld) :: slf_i ! array of namelist information structures 87 88 TYPE(FLD_N) :: sn_utau, sn_vtau, sn_qtot, sn_qsr, sn_emp ! informations about the fields to be read 88 NAMELIST/namsbc_flx/ cn_dir, sn_utau, sn_vtau, sn_qtot, sn_qsr, sn_emp 89 NAMELIST/namsbc_flx/ cn_dir, sn_utau, sn_vtau, sn_qtot, sn_qsr, sn_emp, ln_lfx_sio 89 90 !!--------------------------------------------------------------------- 90 91 ! 91 92 IF( kt == nit000 ) THEN ! First call kt=nit000 92 93 ! set file information 94 ln_lfx_sio = .FALSE. 93 95 REWIND( numnam_ref ) ! Namelist namsbc_flx in reference namelist : Files for fluxes 94 96 READ ( numnam_ref, namsbc_flx, IOSTAT = ios, ERR = 901) … … 124 126 ENDIF 125 127 128 lspr = ln_lfx_sio 126 129 CALL fld_read( kt, nn_fsbc, sf ) ! input fields provided at the current time-step 130 lspr = .false. 127 131 128 132 IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN ! update ocean fluxes at each SBC frequency … … 170 174 CALL prihre( sf(jf)%fnow, jpi, jpj, 1, jpi, 20, 1, jpj, 10, zfact, numout ) 171 175 END DO 172 CALL FLUSH(numout)173 176 ENDIF 174 177 ! -
branches/UKMO/test_moci_test_suite/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90
r6500 r8243 897 897 ! 898 898 ENDIF 899 899 lspr = .false. 900 900 CALL fld_read( kt, nn_fsbc, sf ) ! Read input fields and provides the 901 901 ! ! input fields at the current time-step 902 lspr = .false. 902 903 903 904 ! set the fluxes from read fields -
branches/UKMO/test_moci_test_suite/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_if.F90
r6498 r8243 29 29 IMPLICIT NONE 30 30 PRIVATE 31 32 31 PUBLIC sbc_ice_if ! routine called in sbcmod 33 32 … … 93 92 ! 94 93 ENDIF 95 94 lspr = .FALSE. 96 95 CALL fld_read( kt, nn_fsbc, sf_ice ) ! Read input fields and provides the 97 96 ! ! input fields at the current time-step 97 lspr = .FALSE. 98 98 99 99 IF( MOD( kt-1, nn_fsbc) == 0 ) THEN -
branches/UKMO/test_moci_test_suite/NEMOGCM/NEMO/OPA_SRC/SBC/sbcisf.F90
r7924 r8243 92 92 CHARACTER (LEN=32) :: cvarLeff ! variable name for efficient Length scale 93 93 INTEGER :: ios ! Local integer output status for namelist read 94 94 LOGICAL :: ln_isf_sio ! single processor read 95 95 REAL(wp), DIMENSION(:,:,:), POINTER :: zfwfisf3d, zqhcisf3d, zqlatisf3d 96 96 REAL(wp), DIMENSION(:,: ), POINTER :: zqhcisf2d … … 98 98 !!--------------------------------------------------------------------- 99 99 NAMELIST/namsbc_isf/ nn_isfblk, rn_hisf_tbl, ln_divisf, ln_conserve, rn_gammat0, rn_gammas0, nn_gammablk, & 100 & sn_fwfisf, sn_qisf, sn_rnfisf, sn_depmax_isf, sn_depmin_isf, sn_Leff_isf 100 & sn_fwfisf, sn_qisf, sn_rnfisf, sn_depmax_isf, sn_depmin_isf, sn_Leff_isf, ln_isf_sio 101 101 ! 102 102 ! … … 104 104 IF( kt == nit000 ) THEN ! First call kt=nit000 ! 105 105 ! ! ====================== ! 106 ln_isf_sio = .FALSE. 106 107 REWIND( numnam_ref ) ! Namelist namsbc_rnf in reference namelist : Runoffs 107 108 READ ( numnam_ref, namsbc_isf, IOSTAT = ios, ERR = 901) … … 230 231 231 232 ! compute salf and heat flux 233 lspr = ln_isf_sio 232 234 IF (nn_isf == 1) THEN 233 235 ! realistic ice shelf formulation … … 293 295 294 296 ENDIF 297 lspr = .FALSE. 295 298 ENDIF 296 299 -
branches/UKMO/test_moci_test_suite/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r7924 r8243 55 55 USE bdy_par ! Require lk_bdy 56 56 USE iom_def, ONLY : lxios_read 57 USE iom_def, ONLY : lwxios 57 58 58 59 IMPLICIT NONE … … 444 445 & 'at it= ', kt,' date= ', ndastp 445 446 IF(lwp) WRITE(numout,*) '~~~~' 446 CALL iom_rstput( kt, nitrst, numrow, 'utau_b' , utau ) 447 CALL iom_rstput( kt, nitrst, numrow, 'vtau_b' , vtau ) 448 CALL iom_rstput( kt, nitrst, numrow, 'qns_b' , qns ) 447 IF( lwxios ) CALL iom_swap( wxios_context ) 448 CALL iom_rstput( kt, nitrst, numrow, 'utau_b' , utau, lxios = lwxios ) 449 CALL iom_rstput( kt, nitrst, numrow, 'vtau_b' , vtau, lxios = lwxios ) 450 CALL iom_rstput( kt, nitrst, numrow, 'qns_b' , qns, lxios = lwxios ) 449 451 ! The 3D heat content due to qsr forcing is treated in traqsr 450 452 ! CALL iom_rstput( kt, nitrst, numrow, 'qsr_b' , qsr ) 451 CALL iom_rstput( kt, nitrst, numrow, 'emp_b' , emp ) 452 CALL iom_rstput( kt, nitrst, numrow, 'sfx_b' , sfx ) 453 CALL iom_rstput( kt, nitrst, numrow, 'emp_b' , emp, lxios = lwxios ) 454 CALL iom_rstput( kt, nitrst, numrow, 'sfx_b' , sfx, lxios = lwxios ) 455 IF( lwxios ) CALL iom_swap( cxios_context ) 453 456 ENDIF 454 457 -
branches/UKMO/test_moci_test_suite/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90
r7924 r8243 27 27 USE eosbn2 28 28 USE wrk_nemo ! Memory allocation 29 USE iom_def, ONLY : lxios_read 29 USE iom_def, ONLY : lxios_read, lwxios 30 30 31 31 IMPLICIT NONE … … 56 56 57 57 LOGICAL , PUBLIC :: l_rnfcpl = .false. ! runoffs recieved from oasis 58 LOGICAL :: ln_rnf_sio !: single processor read 58 59 59 60 INTEGER , PUBLIC :: nkrnf = 0 !: nb of levels over which Kz is increased at river mouths … … 172 173 & 'at it= ', kt,' date= ', ndastp 173 174 IF(lwp) WRITE(numout,*) '~~~~' 174 CALL iom_rstput( kt, nitrst, numrow, 'rnf_b' , rnf ) 175 CALL iom_rstput( kt, nitrst, numrow, 'rnf_hc_b', rnf_tsc(:,:,jp_tem) ) 176 CALL iom_rstput( kt, nitrst, numrow, 'rnf_sc_b', rnf_tsc(:,:,jp_sal) ) 175 IF( lwxios ) CALL iom_swap( wxios_context ) 176 CALL iom_rstput( kt, nitrst, numrow, 'rnf_b' , rnf, lxios = lwxios ) 177 CALL iom_rstput( kt, nitrst, numrow, 'rnf_hc_b', rnf_tsc(:,:,jp_tem), lxios = lwxios ) 178 CALL iom_rstput( kt, nitrst, numrow, 'rnf_sc_b', rnf_tsc(:,:,jp_sal), lxios = lwxios ) 179 IF( lwxios ) CALL iom_swap( cxios_context ) 177 180 ENDIF 178 181 ! … … 258 261 & sn_rnf, sn_cnf , sn_s_rnf , sn_t_rnf , sn_dep_rnf, & 259 262 & ln_rnf_mouth , rn_hrnf , rn_avt_rnf, rn_rfact, & 260 & ln_rnf_depth_ini , rn_dep_max , rn_rnf_max, nn_rnf_depth_file 263 & ln_rnf_depth_ini , rn_dep_max , rn_rnf_max, nn_rnf_depth_file, & 264 & ln_rnf_sio 261 265 !!---------------------------------------------------------------------- 262 266 ! … … 278 282 ! ! ============ 279 283 ! 284 ln_rnf_sio = .FALSE. 280 285 REWIND( numnam_ref ) ! Namelist namsbc_rnf in reference namelist : Runoffs 281 286 READ ( numnam_ref, namsbc_rnf, IOSTAT = ios, ERR = 901) … … 302 307 ! ! ================== 303 308 ! 309 lspr = ln_rnf_sio 304 310 IF( .NOT. l_rnfcpl ) THEN 305 311 ALLOCATE( sf_rnf(1), STAT=ierror ) ! Create sf_rnf structure (runoff inflow) … … 482 488 ENDIF 483 489 ! 490 lspr = .false. 484 491 END SUBROUTINE sbc_rnf_init 485 492 -
branches/UKMO/test_moci_test_suite/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90
r7924 r8243 22 22 USE iom ! IOM library 23 23 USE iom_def, ONLY : lxios_read 24 USE iom_def, ONLY : lwxios 24 25 25 26 IMPLICIT NONE … … 157 158 IF(lwp) WRITE(numout,*) '~~~~~~~' 158 159 zf_sbc = REAL( nn_fsbc, wp ) 159 CALL iom_rstput( kt, nitrst, numrow, 'nn_fsbc', zf_sbc ) ! sbc frequency 160 CALL iom_rstput( kt, nitrst, numrow, 'ssu_m' , ssu_m ) ! sea surface mean fields 161 CALL iom_rstput( kt, nitrst, numrow, 'ssv_m' , ssv_m ) 162 CALL iom_rstput( kt, nitrst, numrow, 'sst_m' , sst_m ) 163 CALL iom_rstput( kt, nitrst, numrow, 'sss_m' , sss_m ) 164 CALL iom_rstput( kt, nitrst, numrow, 'ssh_m' , ssh_m ) 165 IF( lk_vvl ) CALL iom_rstput( kt, nitrst, numrow, 'e3t_m' , e3t_m ) 166 CALL iom_rstput( kt, nitrst, numrow, 'frq_m' , frq_m ) 167 ! 160 IF( lwxios ) CALL iom_swap( wxios_context ) 161 CALL iom_rstput( kt, nitrst, numrow, 'nn_fsbc', zf_sbc, lxios = lwxios ) ! sbc frequency 162 CALL iom_rstput( kt, nitrst, numrow, 'ssu_m' , ssu_m, lxios = lwxios ) ! sea surface mean fields 163 CALL iom_rstput( kt, nitrst, numrow, 'ssv_m' , ssv_m, lxios = lwxios ) 164 CALL iom_rstput( kt, nitrst, numrow, 'sst_m' , sst_m, lxios = lwxios ) 165 CALL iom_rstput( kt, nitrst, numrow, 'sss_m' , sss_m, lxios = lwxios ) 166 CALL iom_rstput( kt, nitrst, numrow, 'ssh_m' , ssh_m, lxios = lwxios ) 167 IF( lk_vvl ) CALL iom_rstput( kt, nitrst, numrow, 'e3t_m' , e3t_m ) 168 CALL iom_rstput( kt, nitrst, numrow, 'frq_m' , frq_m, lxios = lwxios ) 169 ! 170 IF( lwxios ) CALL iom_swap( cxios_context ) 168 171 ENDIF 169 172 ! -
branches/UKMO/test_moci_test_suite/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssr.F90
r6486 r8243 42 42 LOGICAL :: ln_sssr_bnd ! flag to bound erp term 43 43 REAL(wp) :: rn_sssr_bnd ! ABS(Max./Min.) value of erp term [mm/day] 44 LOGICAL :: ln_ssr_sio ! single processor read flag 44 45 45 46 REAL(wp) , ALLOCATABLE, DIMENSION(:) :: buffer ! Temporary buffer for exchange … … 87 88 IF( nn_sstr + nn_sssr /= 0 ) THEN 88 89 ! 90 lspr = ln_ssr_sio 89 91 IF( nn_sstr == 1) CALL fld_read( kt, nn_fsbc, sf_sst ) ! Read SST data and provides it at kt 90 92 IF( nn_sssr >= 1) CALL fld_read( kt, nn_fsbc, sf_sss ) ! Read SSS data and provides it at kt 93 lspr = .false. 91 94 ! 92 95 ! ! ========================= ! … … 163 166 CHARACTER(len=100) :: cn_dir ! Root directory for location of ssr files 164 167 TYPE(FLD_N) :: sn_sst, sn_sss ! informations about the fields to be read 165 NAMELIST/namsbc_ssr/ cn_dir, nn_sstr, nn_sssr, rn_dqdt, rn_deds, sn_sst, sn_sss, ln_sssr_bnd, rn_sssr_bnd 168 NAMELIST/namsbc_ssr/ cn_dir, nn_sstr, nn_sssr, rn_dqdt, rn_deds, sn_sst, sn_sss, ln_sssr_bnd, rn_sssr_bnd, & 169 & ln_ssr_sio 166 170 INTEGER :: ios 167 171 !!---------------------------------------------------------------------- 168 172 ! 169 173 174 ln_ssr_sio = .FALSE. 170 175 REWIND( numnam_ref ) ! Namelist namsbc_ssr in reference namelist : 171 176 READ ( numnam_ref, namsbc_ssr, IOSTAT = ios, ERR = 901) -
branches/UKMO/test_moci_test_suite/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90
r6486 r8243 121 121 ! 122 122 ! 123 lspr = .false. 123 124 IF ( ln_cdgw ) THEN 124 125 CALL fld_read( kt, nn_fsbc, sf_cd ) !* read drag coefficient from external forcing … … 189 190 CALL wrk_dealloc( jpi,jpj,jpk,udummy,vdummy,hdivdummy,rotdummy) 190 191 ENDIF 192 lspr = .false. 191 193 END SUBROUTINE sbc_wave 192 194
Note: See TracChangeset
for help on using the changeset viewer.