Changeset 13727 for NEMO/branches/2020/dev_12905_xios_restart/src/OCE/OBS
- Timestamp:
- 2020-11-05T15:18:53+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_12905_xios_restart
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_12905_xios_restart
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEADext/AGRIF5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 8 9 9 # SETTE 10 ^/utils/CI/sette@ HEADsette10 ^/utils/CI/sette@13559 sette
-
- Property svn:externals
-
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/OBS/ddatetoymdhms.h90
r10068 r13727 21 21 22 22 !! * Arguments 23 real( wp), INTENT(IN) :: ddate23 real(dp), INTENT(IN) :: ddate 24 24 INTEGER, INTENT(OUT) :: kyea 25 25 INTEGER, INTENT(OUT) :: kmon -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/OBS/diaobs.F90
r12489 r13727 94 94 TYPE(obs_prof), PUBLIC, POINTER, DIMENSION(:) :: profdataqc !: Profile data after quality control 95 95 96 CHARACTER(len= 6), PUBLIC, DIMENSION(:), ALLOCATABLE :: cobstypesprof, cobstypessurf !: Profile & surface obs types96 CHARACTER(len=lca), PUBLIC, DIMENSION(:), ALLOCATABLE :: cobstypesprof, cobstypessurf !: Profile & surface obs types 97 97 98 98 !!---------------------------------------------------------------------- -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/OBS/find_obs_proc.h90
r10068 r13727 41 41 ! first and last indoor i- and j-indexes kldi, klei, kldj, klej 42 42 ! exclude any obs in the bottom-left overlap region 43 ! also any obs outside to whole region (defined by nlci and nlcj)43 ! also any obs outside to whole region (defined by jpi and jpj) 44 44 ! I am assuming that kobsp does not need to be the correct processor 45 45 ! number -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/OBS/grt_cir_dis.h90
r10068 r13727 28 28 REAL(KIND=wp) :: pc2 ! cos(lat2) * sin(lon2) 29 29 30 REAL(KIND=wp) :: cosdist ! cosine of great circle distance 31 32 ! Compute cosine of great circle distance, constraining it to be between 33 ! -1 and 1 (rounding errors can take it slightly outside this range 34 cosdist = MAX( MIN( pa1 * pa2 + pb1 * pb2 + pc1 * pc2, 1.0_wp), -1.0_wp ) 35 30 36 grt_cir_dis = & 31 & ASIN( SQRT( 1.0 - ( pa1 * pa2 + pb1 * pb2 + pc1 * pc2 )**2) )37 & ASIN( SQRT( 1.0_wp - cosdist**2.0_wp ) ) 32 38 33 39 END FUNCTION grt_cir_dis -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/OBS/mpp_map.F90
r10068 r13727 11 11 !!---------------------------------------------------------------------- 12 12 USE par_kind, ONLY : wp ! Precision variables 13 USE par_oce , ONLY : jpi, jpj 14 USE dom_oce , ONLY : mig, mjg, n ldi, nlei, nldj, nlej, nlci, nlcj, narea! Ocean space and time domain variables13 USE par_oce , ONLY : jpi, jpj, Nis0, Nie0, Njs0, Nje0 ! Ocean parameters 14 USE dom_oce , ONLY : mig, mjg, narea ! Ocean space and time domain variables 15 15 #if defined key_mpp_mpi 16 USE lib_mpp , ONLY : mpi_comm_oce ! MPP library16 USE lib_mpp , ONLY : mpi_comm_oce ! MPP library 17 17 #endif 18 18 USE in_out_manager ! I/O manager … … 65 65 66 66 ! ! Setup local grid points 67 imppmap(mig(1):mig( nlci),mjg(1):mjg(nlcj)) = narea67 imppmap(mig(1):mig(jpi),mjg(1):mjg(jpj)) = narea 68 68 69 69 ! Get global data -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/OBS/obs_grid.F90
r10068 r13727 129 129 IF ( cdgrid == 'T' ) THEN 130 130 CALL obs_grd_bruteforce( jpi, jpj, jpiglo, jpjglo, & 131 & 1, nlci, 1, nlcj,&131 & 1, jpi, 1, jpj, & 132 132 & nproc, jpnij, & 133 133 & glamt, gphit, tmask, & … … 136 136 ELSEIF ( cdgrid == 'U' ) THEN 137 137 CALL obs_grd_bruteforce( jpi, jpj, jpiglo, jpjglo, & 138 & 1, nlci, 1, nlcj,&138 & 1, jpi, 1, jpj, & 139 139 & nproc, jpnij, & 140 140 & glamu, gphiu, umask, & … … 143 143 ELSEIF ( cdgrid == 'V' ) THEN 144 144 CALL obs_grd_bruteforce( jpi, jpj, jpiglo, jpjglo, & 145 & 1, nlci, 1, nlcj,&145 & 1, jpi, 1, jpj, & 146 146 & nproc, jpnij, & 147 147 & glamv, gphiv, vmask, & … … 150 150 ELSEIF ( cdgrid == 'F' ) THEN 151 151 CALL obs_grd_bruteforce( jpi, jpj, jpiglo, jpjglo, & 152 & 1, nlci, 1, nlcj,&152 & 1, jpi, 1, jpj, & 153 153 & nproc, jpnij, & 154 154 & glamf, gphif, fmask, & … … 279 279 zmskg(:,:) = -1.e+10 280 280 ! Add various grids here. 281 DO jj = 1, nlcj282 DO ji = 1, nlci281 DO jj = 1, jpj 282 DO ji = 1, jpi 283 283 zlamg(mig(ji),mjg(jj)) = glamt(ji,jj) 284 284 zphig(mig(ji),mjg(jj)) = gphit(ji,jj) … … 684 684 & fhistx1, fhistx2, fhisty1, fhisty2 685 685 REAL(wp) :: histtol 686 686 CHARACTER(LEN=26) :: clfmt ! writing format 687 INTEGER :: idg ! number of digits 688 687 689 IF (ln_grid_search_lookup) THEN 688 690 … … 709 711 710 712 IF ( ln_grid_global ) THEN 711 WRITE(cfname, FMT="(A,'_',A)") & 712 & TRIM(cn_gridsearchfile), 'global.nc' 713 WRITE(cfname, FMT="(A,'_',A)") TRIM(cn_gridsearchfile), 'global.nc' 713 714 ELSE 714 WRITE(cfname, FMT="(A,'_',I4.4,'of',I4.4,'by',I4.4,'.nc')") & 715 & TRIM(cn_gridsearchfile), nproc, jpni, jpnj 715 idg = MAX( INT(LOG10(REAL(jpnij,wp))) + 1, 4 ) ! how many digits to we need to write? min=4, max=9 716 ! define the following format: "(a,a,ix.x,a,ix.x,a,ix.x,a)" 717 WRITE(clfmt, "('(a,a,i', i1, '.', i1',a,i', i1, '.', i1',a,i', i1, '.', i1',a)')") idg, idg, idg, idg, idg, idg 718 WRITE(cfname, clfmt ) TRIM(cn_gridsearchfile),'_', nproc,'of', jpni,'by', jpnj,'.nc' 716 719 ENDIF 717 720 … … 816 819 817 820 CALL obs_grd_bruteforce( jpi, jpj, jpiglo, jpjglo, & 818 & 1, nlci, 1, nlcj,&821 & 1, jpi, 1, jpj, & 819 822 & nproc, jpnij, & 820 823 & glamt, gphit, tmask, & -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/OBS/obs_oper.F90
r12377 r13727 189 189 ! Initialize daily mean for first timestep of the day 190 190 IF ( idayend == 1 .OR. kt == 0 ) THEN 191 DO_3D _11_11(1, jpk )191 DO_3D( 1, 1, 1, 1, 1, jpk ) 192 192 prodatqc%vdmean(ji,jj,jk,1) = 0.0 193 193 prodatqc%vdmean(ji,jj,jk,2) = 0.0 … … 195 195 ENDIF 196 196 197 DO_3D _11_11(1, jpk )197 DO_3D( 1, 1, 1, 1, 1, jpk ) 198 198 ! Increment field 1 for computing daily mean 199 199 prodatqc%vdmean(ji,jj,jk,1) = prodatqc%vdmean(ji,jj,jk,1) & … … 209 209 IF (lwp) WRITE(numout,*) 'Calculating prodatqc%vdmean on time-step: ',kt 210 210 CALL FLUSH(numout) 211 DO_3D _11_11(1, jpk )211 DO_3D( 1, 1, 1, 1, 1, jpk ) 212 212 prodatqc%vdmean(ji,jj,jk,1) = prodatqc%vdmean(ji,jj,jk,1) & 213 213 & * zdaystp … … 750 750 ! Initialize night-time mean for first timestep of the day 751 751 IF ( idayend == 1 .OR. kt == 0 ) THEN 752 DO_2D _11_11752 DO_2D( 1, 1, 1, 1 ) 753 753 surfdataqc%vdmean(ji,jj) = 0.0 754 754 zmeanday(ji,jj) = 0.0 … … 761 761 imask_night(:,:) = INT( zouttmp(:,:) ) 762 762 763 DO_2D _11_11763 DO_2D( 1, 1, 1, 1 ) 764 764 ! Increment the temperature field for computing night mean and counter 765 765 surfdataqc%vdmean(ji,jj) = surfdataqc%vdmean(ji,jj) & … … 773 773 IF ( idayend == 0 ) THEN 774 774 IF (lwp) WRITE(numout,*) 'Calculating surfdataqc%vdmean on time-step: ',kt 775 DO_2D _11_11775 DO_2D( 1, 1, 1, 1 ) 776 776 ! Test if "no night" point 777 777 IF ( icount_night(ji,jj) > 0 ) THEN -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/OBS/obs_read_altbias.F90
r12377 r13727 125 125 ! Get the Alt bias data 126 126 127 CALL iom_get( numaltbias, jpdom_ data, 'altbias', z_altbias(:,:), 1)127 CALL iom_get( numaltbias, jpdom_global, 'altbias', z_altbias(:,:) ) 128 128 129 129 ! Close the file -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/OBS/obs_read_prof.F90
r10068 r13727 140 140 & zphi, & 141 141 & zlam 142 REAL( wp), DIMENSION(:), ALLOCATABLE :: &142 REAL(dp), DIMENSION(:), ALLOCATABLE :: & 143 143 & zdat 144 REAL( wp), DIMENSION(knumfiles) :: &144 REAL(dp), DIMENSION(knumfiles) :: & 145 145 & djulini, & 146 146 & djulend -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/OBS/obs_read_surf.F90
r10069 r13727 112 112 & zphi, & 113 113 & zlam 114 REAL( wp), DIMENSION(:), ALLOCATABLE :: &114 REAL(dp), DIMENSION(:), ALLOCATABLE :: & 115 115 & zdat 116 REAL( wp), DIMENSION(knumfiles) :: &116 REAL(dp), DIMENSION(knumfiles) :: & 117 117 & djulini, & 118 118 & djulend -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/OBS/obs_readmdt.F90
r12377 r13727 90 90 CALL iom_open( mdtname, nummdt ) ! Open the file 91 91 ! ! Get the MDT data 92 CALL iom_get ( nummdt, jpdom_ data, 'sossheig', z_mdt(:,:), 1)92 CALL iom_get ( nummdt, jpdom_global, 'sossheig', z_mdt(:,:) ) 93 93 CALL iom_close(nummdt) ! Close the file 94 94 … … 215 215 zeta2 = 0.0 216 216 217 DO_2D _11_11217 DO_2D( 1, 1, 1, 1 ) 218 218 zdxdy = e1e2t(ji,jj) * zpromsk(ji,jj) 219 219 zarea = zarea + zdxdy -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/OBS/obs_sstbias.F90
r12377 r13727 139 139 cl_bias_files(jtype) ) 140 140 ! Get the SST bias data 141 CALL iom_get( numsstbias, jpdom_ data, 'tn', z_sstbias_2d(:,:), 1 )141 CALL iom_get( numsstbias, jpdom_global, 'tn', z_sstbias_2d(:,:), 1 ) 142 142 z_sstbias(:,:,jtype) = z_sstbias_2d(:,:) 143 143 ! Close the file -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/OBS/obs_write.F90
r12377 r13727 86 86 CHARACTER(LEN=40) :: clfname 87 87 CHARACTER(LEN=10) :: clfiletype 88 CHARACTER(LEN=12) :: clfmt ! writing format 89 INTEGER :: idg ! number of digits 88 90 INTEGER :: ilevel 89 91 INTEGER :: jvar … … 181 183 fbdata%caddname(1) = 'Hx' 182 184 183 WRITE(clfname, FMT="(A,'_fdbk_',I4.4,'.nc')") TRIM(clfiletype), nproc 185 idg = MAX( INT(LOG10(REAL(jpnij,wp))) + 1, 4 ) ! how many digits to we need to write? min=4, max=9 186 WRITE(clfmt, "('(a,a,i', i1, '.', i1, ',a)')") idg, idg ! '(a,a,ix.x,a)' 187 WRITE(clfname,clfmt) TRIM(clfiletype), '_fdbk_', nproc, '.nc' 184 188 185 189 IF(lwp) THEN … … 326 330 CHARACTER(LEN=10) :: clfiletype 327 331 CHARACTER(LEN=12), PARAMETER :: cpname = 'obs_wri_surf' 332 CHARACTER(LEN=12) :: clfmt ! writing format 333 INTEGER :: idg ! number of digits 328 334 INTEGER :: jo 329 335 INTEGER :: ja … … 453 459 fbdata%caddname(1) = 'Hx' 454 460 455 WRITE(clfname, FMT="(A,'_fdbk_',I4.4,'.nc')") TRIM(clfiletype), nproc 461 idg = MAX( INT(LOG10(REAL(jpnij,wp))) + 1, 4 ) ! how many digits to we need to write? min=4, max=9 462 WRITE(clfmt, "('(a,a,i', i1, '.', i1, ',a)')") idg, idg ! '(a,a,ix.x,a)' 463 WRITE(clfname,clfmt) TRIM(clfiletype), '_fdbk_', nproc, '.nc' 456 464 457 465 IF(lwp) THEN -
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/OBS/obsinter_z1d.h90
r10068 r13727 62 62 z1dm = ( pdep(kkco(jdep)) - pobsdep(jdep) ) 63 63 z1dp = ( pobsdep(jdep) - pdep(kkco(jdep)-1) ) 64 IF ( pobsmask(kkco(jdep)) == 0.0_wp ) z1dp = 0.0_wp 64 65 ! If kkco(jdep) is masked then set pobs(jdep) to the lowest value located above bathymetry 66 IF ( pobsmask(kkco(jdep)) == 0.0_wp ) THEN 67 pobs(jdep) = pobsk(kkco(jdep)-1) 68 ELSE 69 zsum = z1dm + z1dp 65 70 66 zsum = z1dm + z1dp 67 68 IF ( k1dint == 0 ) THEN 71 IF ( k1dint == 0 ) THEN 69 72 70 !-----------------------------------------------------------------71 ! Linear interpolation72 !-----------------------------------------------------------------73 pobs(jdep) = ( z1dm * pobsk(kkco(jdep)-1) &74 & + z1dp * pobsk(kkco(jdep) ) ) / zsum73 !----------------------------------------------------------------- 74 ! Linear interpolation 75 !----------------------------------------------------------------- 76 pobs(jdep) = ( z1dm * pobsk(kkco(jdep)-1) & 77 & + z1dp * pobsk(kkco(jdep) ) ) / zsum 75 78 76 ELSEIF ( k1dint == 1 ) THEN79 ELSEIF ( k1dint == 1 ) THEN 77 80 78 !-----------------------------------------------------------------79 ! Cubic spline interpolation80 !-----------------------------------------------------------------81 zsum2 = zsum * zsum82 pobs(jdep) = ( z1dm * pobsk (kkco(jdep)-1) &83 & + z1dp * pobsk (kkco(jdep) ) &84 & + ( z1dm * ( z1dm * z1dm - zsum2 ) * pobs2k(kkco(jdep)-1) &85 & + z1dp * ( z1dp * z1dp - zsum2 ) * pobs2k(kkco(jdep) ) &86 & ) / 6.0_wp &87 & ) / zsum81 !----------------------------------------------------------------- 82 ! Cubic spline interpolation 83 !----------------------------------------------------------------- 84 zsum2 = zsum * zsum 85 pobs(jdep) = ( z1dm * pobsk (kkco(jdep)-1) & 86 & + z1dp * pobsk (kkco(jdep) ) & 87 & + ( z1dm * ( z1dm * z1dm - zsum2 ) * pobs2k(kkco(jdep)-1) & 88 & + z1dp * ( z1dp * z1dp - zsum2 ) * pobs2k(kkco(jdep) ) & 89 & ) / 6.0_wp & 90 & ) / zsum 88 91 92 ENDIF 89 93 ENDIF 90 94 END DO
Note: See TracChangeset
for help on using the changeset viewer.