- 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_prep.F90
r9023 r9490 108 108 imin0 = ( nn_time0 - ihou0 * 100 ) 109 109 110 icycle = n o ! Assimilation cycle110 icycle = nn_no ! Assimilation cycle 111 111 112 112 ! Diagnotics counters for various failures. … … 339 339 imin0 = ( nn_time0 - ihou0 * 100 ) 340 340 341 icycle = n o ! Assimilation cycle341 icycle = nn_no ! Assimilation cycle 342 342 343 343 ! Diagnotics counters for various failures. 344 344 345 iotdobs = 0346 igrdobs = 0345 iotdobs = 0 346 igrdobs = 0 347 347 iosdv1obs = 0 348 348 iosdv2obs = 0 … … 884 884 !! ! 2007-01 (K. Mogensen) Original 885 885 !!---------------------------------------------------------------------- 886 !! * Arguments887 886 INTEGER, INTENT(IN) :: kobsno ! Number of observations 888 887 INTEGER, DIMENSION(kobsno), INTENT(IN ) :: & … … 924 923 !! ** Action : 925 924 !! 926 !! History : 927 !! ! 2007-03 (A. Weaver, K. Mogensen) Original 928 !! ! 2007-06 (K. Mogensen et al) Reject obs. near land. 929 !!---------------------------------------------------------------------- 930 !! * Modules used 931 932 !! * Arguments 933 INTEGER, INTENT(IN) :: kobsno ! Total number of observations 934 INTEGER, INTENT(IN) :: kpi ! Number of grid points in (i,j) 935 INTEGER, INTENT(IN) :: kpj 936 INTEGER, DIMENSION(kobsno), INTENT(IN) :: & 937 & kobsi, & ! Observation (i,j) coordinates 938 & kobsj 939 REAL(KIND=wp), DIMENSION(kobsno), INTENT(IN) :: & 940 & pobslam, & ! Observation (lon,lat) coordinates 941 & pobsphi 942 REAL(KIND=wp), DIMENSION(kpi,kpj), INTENT(IN) :: & 943 & plam, pphi ! Model (lon,lat) coordinates 944 REAL(KIND=wp), DIMENSION(kpi,kpj), INTENT(IN) :: & 945 & pmask ! Land mask array 946 INTEGER, DIMENSION(kobsno), INTENT(INOUT) :: & 947 & kobsqc ! Observation quality control 948 INTEGER, INTENT(INOUT) :: kosdobs ! Observations outside space domain 949 INTEGER, INTENT(INOUT) :: klanobs ! Observations within a model land cell 950 INTEGER, INTENT(INOUT) :: knlaobs ! Observations near land 951 INTEGER, INTENT(INOUT) :: kbdyobs ! Observations near boundary 952 LOGICAL, INTENT(IN) :: ld_nea ! Flag observations near land 953 LOGICAL, INTENT(IN) :: ld_bound_reject ! Flag observations near open boundary 954 INTEGER, INTENT(IN) :: kqc_cutoff ! Cutoff QC value 955 956 !! * Local declarations 957 REAL(KIND=wp), DIMENSION(2,2,kobsno) :: & 958 & zgmsk ! Grid mask 959 960 REAL(KIND=wp), DIMENSION(2,2,kobsno) :: & 961 & zbmsk ! Boundary mask 962 REAL(KIND=wp), DIMENSION(jpi,jpj) :: zbdymask 963 REAL(KIND=wp), DIMENSION(2,2,kobsno) :: & 964 & zglam, & ! Model longitude at grid points 965 & zgphi ! Model latitude at grid points 966 INTEGER, DIMENSION(2,2,kobsno) :: & 967 & igrdi, & ! Grid i,j 968 & igrdj 969 LOGICAL :: lgridobs ! Is observation on a model grid point. 970 INTEGER :: iig, ijg ! i,j of observation on model grid point. 971 INTEGER :: jobs, ji, jj 925 !! History : 2007-03 (A. Weaver, K. Mogensen) Original 926 !! ! 2007-06 (K. Mogensen et al) Reject obs. near land. 927 !!---------------------------------------------------------------------- 928 INTEGER , INTENT(in ) :: kobsno ! Total number of observations 929 INTEGER , INTENT(in ) :: kpi , kpj ! Number of grid points in (i,j) 930 INTEGER , INTENT(in ), DIMENSION(kobsno) :: kobsi , kobsj ! Observation (i,j) coordinates 931 REAL(wp), INTENT(in ), DIMENSION(kobsno) :: pobslam, pobsphi ! Observation (lon,lat) coordinates 932 REAL(wp), INTENT(in ), DIMENSION(kpi,kpj) :: plam , pphi ! Model (lon,lat) coordinates 933 REAL(wp), INTENT(in ), DIMENSION(kpi,kpj) :: pmask ! Land mask array 934 INTEGER , INTENT(inout), DIMENSION(kobsno) :: kobsqc ! Observation quality control 935 INTEGER , INTENT(inout) :: kosdobs ! Observations outside space domain 936 INTEGER , INTENT(inout) :: klanobs ! Observations within a model land cell 937 INTEGER , INTENT(inout) :: knlaobs ! Observations near land 938 INTEGER , INTENT(inout) :: kbdyobs ! Observations near boundary 939 LOGICAL , INTENT(in ) :: ld_nea ! Flag observations near land 940 LOGICAL , INTENT(in ) :: ld_bound_reject ! Flag observations near open boundary 941 INTEGER , INTENT(in ) :: kqc_cutoff ! Cutoff QC value 942 ! 943 REAL(KIND=wp), DIMENSION(2,2,kobsno) :: zgmsk ! Grid mask 944 REAL(KIND=wp), DIMENSION(2,2,kobsno) :: zbmsk ! Boundary mask 945 REAL(KIND=wp), DIMENSION(jpi,jpj) :: zbdymask 946 REAL(KIND=wp), DIMENSION(2,2,kobsno) :: zglam, zgphi ! Model Lon/lat at grid points 947 INTEGER , DIMENSION(2,2,kobsno) :: igrdi, igrdj ! Grid i,j 948 LOGICAL :: lgridobs ! Is observation on a model grid point. 949 INTEGER :: iig, ijg ! i,j of observation on model grid point. 950 INTEGER :: jobs, ji, jj 951 !!---------------------------------------------------------------------- 972 952 973 953 ! Get grid point indices … … 1100 1080 ENDIF 1101 1081 ENDIF 1102 1082 ! 1103 1083 END DO 1104 1084 ! 1105 1085 END SUBROUTINE obs_coo_spc_2d 1086 1106 1087 1107 1088 SUBROUTINE obs_coo_spc_3d( kprofno, kobsno, kpstart, kpend, & … … 1198 1179 INTEGER :: iig, ijg ! i,j of observation on model grid point. 1199 1180 INTEGER :: jobs, jobsp, jk, ji, jj 1181 !!---------------------------------------------------------------------- 1200 1182 1201 1183 ! Get grid point indices … … 1359 1341 ENDIF 1360 1342 ENDIF 1361 1343 ! 1362 1344 END DO 1363 1345 END DO 1364 1346 ! 1365 1347 END SUBROUTINE obs_coo_spc_3d 1348 1366 1349 1367 1350 SUBROUTINE obs_pro_rej( profdata, kqc_cutoff ) … … 1377 1360 !! References : 1378 1361 !! 1379 !! History : 1380 !! ! 2007-10 (K. Mogensen) Original code 1381 !!---------------------------------------------------------------------- 1382 !! * Modules used 1383 !! * Arguments 1384 TYPE(obs_prof), INTENT(INOUT) :: profdata ! Profile data 1385 INTEGER, INTENT(IN) :: kqc_cutoff ! QC cutoff value 1386 1387 !! * Local declarations 1362 !! History : 2007-10 (K. Mogensen) Original code 1363 !!---------------------------------------------------------------------- 1364 TYPE(obs_prof), INTENT(inout) :: profdata ! Profile data 1365 INTEGER , INTENT(in ) :: kqc_cutoff ! QC cutoff value 1366 ! 1388 1367 INTEGER :: jprof 1389 1368 INTEGER :: jvar 1390 1369 INTEGER :: jobs 1370 !!---------------------------------------------------------------------- 1391 1371 1392 1372 ! Loop over profiles … … 1411 1391 1412 1392 END DO 1413 1393 ! 1414 1394 END SUBROUTINE obs_pro_rej 1395 1415 1396 1416 1397 SUBROUTINE obs_uv_rej( profdata, knumu, knumv, kqc_cutoff ) … … 1426 1407 !! References : 1427 1408 !! 1428 !! History : 1429 !! ! 2009-2 (K. Mogensen) Original code 1430 !!---------------------------------------------------------------------- 1431 !! * Modules used 1432 !! * Arguments 1409 !! History : 2009-2 (K. Mogensen) Original code 1410 !!---------------------------------------------------------------------- 1433 1411 TYPE(obs_prof), INTENT(INOUT) :: profdata ! Profile data 1434 1412 INTEGER, INTENT(INOUT) :: knumu ! Number of u rejected 1435 1413 INTEGER, INTENT(INOUT) :: knumv ! Number of v rejected 1436 1414 INTEGER, INTENT(IN) :: kqc_cutoff ! QC cutoff value 1437 1438 !! * Local declarations 1415 ! 1439 1416 INTEGER :: jprof 1440 1417 INTEGER :: jvar 1441 1418 INTEGER :: jobs 1442 1443 ! Loop over profiles 1444 1445 DO jprof = 1, profdata%nprof 1446 1419 !!---------------------------------------------------------------------- 1420 1421 DO jprof = 1, profdata%nprof !== Loop over profiles ==! 1422 ! 1447 1423 IF ( ( profdata%npvsta(jprof,1) /= profdata%npvsta(jprof,2) ) .OR. & 1448 1424 & ( profdata%npvend(jprof,1) /= profdata%npvend(jprof,2) ) ) THEN 1449 1425 ! 1450 1426 CALL ctl_stop('U,V profiles inconsistent in obs_uv_rej') 1451 1427 RETURN 1452 1453 ENDIF 1454 1428 ! 1429 ENDIF 1430 ! 1455 1431 DO jobs = profdata%npvsta(jprof,1), profdata%npvend(jprof,1) 1456 1432 ! 1457 1433 IF ( ( profdata%var(1)%nvqc(jobs) > kqc_cutoff ) .AND. & 1458 1434 & ( profdata%var(2)%nvqc(jobs) <= kqc_cutoff) ) THEN … … 1465 1441 knumu = knumu + 1 1466 1442 ENDIF 1467 1443 ! 1468 1444 END DO 1469 1445 ! 1470 1446 END DO 1471 1447 ! 1472 1448 END SUBROUTINE obs_uv_rej 1473 1449 1450 !!===================================================================== 1474 1451 END MODULE obs_prep
Note: See TracChangeset
for help on using the changeset viewer.