- Timestamp:
- 2018-04-23T10:44:07+02:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/OBS/obs_oper.F90
r9023 r9490 10 10 !! obs_surf_opt : Compute the model counterpart of surface data 11 11 !!---------------------------------------------------------------------- 12 13 !! * Modules used 14 USE par_kind, ONLY : & ! Precision variables 15 & wp 16 USE in_out_manager ! I/O manager 17 USE obs_inter_sup ! Interpolation support 18 USE obs_inter_h2d, ONLY : & ! Horizontal interpolation to the obs pt 19 & obs_int_h2d, & 20 & obs_int_h2d_init 21 USE obs_averg_h2d, ONLY : & ! Horizontal averaging to the obs footprint 22 & obs_avg_h2d, & 23 & obs_avg_h2d_init, & 24 & obs_max_fpsize 25 USE obs_inter_z1d, ONLY : & ! Vertical interpolation to the obs pt 26 & obs_int_z1d, & 27 & obs_int_z1d_spl 28 USE obs_const, ONLY : & ! Obs fill value 29 & obfillflt 30 USE dom_oce, ONLY : & 31 & glamt, glamf, & 32 & gphit, gphif 33 USE lib_mpp, ONLY : & ! Warning and stopping routines 34 & ctl_warn, ctl_stop 35 USE sbcdcy, ONLY : & ! For calculation of where it is night-time 36 & sbc_dcy, nday_qsr 37 USE obs_grid, ONLY : & 38 & obs_level_search 12 USE obs_inter_sup ! Interpolation support 13 USE obs_inter_h2d, ONLY : obs_int_h2d, obs_int_h2d_init ! Horizontal interpolation to the obs pt 14 USE obs_averg_h2d, ONLY : obs_avg_h2d, obs_avg_h2d_init, obs_max_fpsize ! Horizontal averaging to the obs footprint 15 USE obs_inter_z1d, ONLY : obs_int_z1d, obs_int_z1d_spl ! Vertical interpolation to the obs pt 16 USE obs_const , ONLY : obfillflt ! Obs fill value 17 USE dom_oce, ONLY : glamt, glamf, gphit, gphif ! lat/lon of ocean grid-points 18 USE lib_mpp, ONLY : ctl_warn, ctl_stop ! Warning and stopping routines 19 USE sbcdcy, ONLY : sbc_dcy, nday_qsr ! For calculation of where it is night-time 20 USE obs_grid, ONLY : obs_level_search 21 ! 22 USE par_kind , ONLY : wp ! Precision variables 23 USE in_out_manager ! I/O manager 39 24 40 25 IMPLICIT NONE 41 42 !! * Routine accessibility43 26 PRIVATE 44 27 45 PUBLIC obs_prof_opt, & ! Compute the model counterpart of profile obs 46 & obs_surf_opt ! Compute the model counterpart of surface obs 47 48 INTEGER, PARAMETER, PUBLIC :: & 49 & imaxavtypes = 20 ! Max number of daily avgd obs types 28 PUBLIC obs_prof_opt !: Compute the model counterpart of profile obs 29 PUBLIC obs_surf_opt !: Compute the model counterpart of surface obs 30 31 INTEGER, PARAMETER, PUBLIC :: imaxavtypes = 20 !: Max number of daily avgd obs types 50 32 51 33 !!---------------------------------------------------------------------- 52 !! NEMO/OPA 3.3 , NEMO Consortium (2010)34 !! NEMO/OPA 4.0 , NEMO Consortium (2018) 53 35 !! $Id$ 54 36 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 55 37 !!---------------------------------------------------------------------- 56 57 38 CONTAINS 58 59 39 60 40 SUBROUTINE obs_prof_opt( prodatqc, kt, kpi, kpj, kpk, & … … 64 44 & plam1, plam2, pphi1, pphi2, & 65 45 & k1dint, k2dint, kdailyavtypes ) 66 67 46 !!----------------------------------------------------------------------- 68 !!69 47 !! *** ROUTINE obs_pro_opt *** 70 48 !! … … 114 92 !! ! 17-02 (M. Martin) Include generalised vertical coordinate changes 115 93 !!----------------------------------------------------------------------- 116 117 !! * Modules used118 94 USE obs_profiles_def ! Definition of storage space for profile obs. 119 95 120 96 IMPLICIT NONE 121 97 122 !! * Arguments 123 TYPE(obs_prof), INTENT(INOUT) :: & 124 & prodatqc ! Subset of profile data passing QC 125 INTEGER, INTENT(IN) :: kt ! Time step 126 INTEGER, INTENT(IN) :: kpi ! Model grid parameters 127 INTEGER, INTENT(IN) :: kpj 128 INTEGER, INTENT(IN) :: kpk 129 INTEGER, INTENT(IN) :: kit000 ! Number of the first time step 130 ! (kit000-1 = restart time) 131 INTEGER, INTENT(IN) :: k1dint ! Vertical interpolation type (see header) 132 INTEGER, INTENT(IN) :: k2dint ! Horizontal interpolation type (see header) 133 INTEGER, INTENT(IN) :: kdaystp ! Number of time steps per day 134 REAL(KIND=wp), INTENT(IN), DIMENSION(kpi,kpj,kpk) :: & 135 & pvar1, & ! Model field 1 136 & pvar2, & ! Model field 2 137 & pmask1, & ! Land-sea mask 1 138 & pmask2 ! Land-sea mask 2 139 REAL(KIND=wp), INTENT(IN), DIMENSION(kpi,kpj) :: & 140 & plam1, & ! Model longitudes for variable 1 141 & plam2, & ! Model longitudes for variable 2 142 & pphi1, & ! Model latitudes for variable 1 143 & pphi2 ! Model latitudes for variable 2 144 REAL(KIND=wp), INTENT(IN), DIMENSION(kpi,kpj,kpk) :: & 145 & pgdept, & ! Model array of depth T levels 146 & pgdepw ! Model array of depth W levels 147 INTEGER, DIMENSION(imaxavtypes), OPTIONAL :: & 148 & kdailyavtypes ! Types for daily averages 98 TYPE(obs_prof), INTENT(inout) :: prodatqc ! Subset of profile data passing QC 99 INTEGER , INTENT(in ) :: kt ! Time step 100 INTEGER , INTENT(in ) :: kpi, kpj, kpk ! Model grid parameters 101 INTEGER , INTENT(in ) :: kit000 ! Number of the first time step (kit000-1 = restart time) 102 INTEGER , INTENT(in ) :: k1dint ! Vertical interpolation type (see header) 103 INTEGER , INTENT(in ) :: k2dint ! Horizontal interpolation type (see header) 104 INTEGER , INTENT(in ) :: kdaystp ! Number of time steps per day 105 REAL(KIND=wp) , INTENT(in ), DIMENSION(kpi,kpj,kpk) :: pvar1 , pvar2 ! Model field 1 and 2 106 REAL(KIND=wp) , INTENT(in ), DIMENSION(kpi,kpj,kpk) :: pmask1, pmask2 ! Land-sea mask 1 and 2 107 REAL(KIND=wp) , INTENT(in ), DIMENSION(kpi,kpj) :: plam1 , plam2 ! Model longitude 1 and 2 108 REAL(KIND=wp) , INTENT(in ), DIMENSION(kpi,kpj) :: pphi1 , pphi2 ! Model latitudes 1 and 2 109 REAL(KIND=wp) , INTENT(in ), DIMENSION(kpi,kpj,kpk) :: pgdept, pgdepw ! depth of T and W levels 110 INTEGER, DIMENSION(imaxavtypes), OPTIONAL :: kdailyavtypes ! Types for daily averages 149 111 150 112 !! * Local declarations … … 706 668 !! ! 17-03 (M. Martin) Added horizontal averaging options 707 669 !!----------------------------------------------------------------------- 708 709 !! * Modules used710 670 USE obs_surf_def ! Definition of storage space for surface observations 711 671 712 672 IMPLICIT NONE 713 673 714 !! * Arguments715 674 TYPE(obs_surf), INTENT(INOUT) :: & 716 675 & surfdataqc ! Subset of surface data passing QC … … 866 825 DO ji = 0, imaxifp 867 826 imodi = surfdataqc%mi(jobs) - int(imaxifp/2) + ji - 1 868 827 ! 869 828 !Deal with wrap around in longitude 870 829 IF ( imodi < 1 ) imodi = imodi + jpiglo 871 830 IF ( imodi > jpiglo ) imodi = imodi - jpiglo 872 831 ! 873 832 DO jj = 0, imaxjfp 874 833 imodj = surfdataqc%mj(jobs) - int(imaxjfp/2) + jj - 1 … … 877 836 IF ( imodj < 1 ) imodj = 1 878 837 IF ( imodj > jpjglo ) imodj = jpjglo 879 838 ! 880 839 igrdip1(ji+1,jj+1,iobs) = imodi 881 840 igrdjp1(ji+1,jj+1,iobs) = imodj 882 841 ! 883 842 IF ( ji >= 1 .AND. jj >= 1 ) THEN 884 843 igrdi(ji,jj,iobs) = imodi 885 844 igrdj(ji,jj,iobs) = imodj 886 845 ENDIF 887 846 ! 888 847 END DO 889 848 END DO … … 1010 969 & ) 1011 970 ENDIF 1012 971 ! 1013 972 surfdataqc%nsurfup = surfdataqc%nsurfup + isurf 1014 973 ! 1015 974 END SUBROUTINE obs_surf_opt 1016 975 976 !!====================================================================== 1017 977 END MODULE obs_oper
Note: See TracChangeset
for help on using the changeset viewer.