Changeset 5979 for branches/2015/dev_MetOffice_merge_2015/NEMOGCM
- Timestamp:
- 2015-12-02T14:59:21+01:00 (9 years ago)
- Location:
- branches/2015/dev_MetOffice_merge_2015/NEMOGCM/NEMO/OPA_SRC/OBS
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_MetOffice_merge_2015/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
r5963 r5979 1081 1081 & kstp, jpi, jpj, jpk, nit000, idaystp, & 1082 1082 & tsn(:,:,:,jp_tem), tsn(:,:,:,jp_sal), & 1083 & fsdept(:,:,:), tmask, n1dint, n2dint, & 1083 & fsdept(:,:,:), fsdepw(:,:,:), & 1084 & tmask, n1dint, n2dint, & 1084 1085 & kdailyavtypes = endailyavtypes ) 1085 1086 ELSE … … 1087 1088 & kstp, jpi, jpj, jpk, nit000, idaystp, & 1088 1089 & tsn(:,:,:,jp_tem), tsn(:,:,:,jp_sal), & 1089 & fsdept(:,:,:), tmask, n1dint, n2dint ) 1090 & fsdept(:,:,:), fsdepw(:,:,:), & 1091 & tmask, n1dint, n2dint ) 1090 1092 ENDIF 1091 1093 ENDIF -
branches/2015/dev_MetOffice_merge_2015/NEMOGCM/NEMO/OPA_SRC/OBS/obs_oper.F90
r5963 r5979 331 331 zobsk(:) = obfillflt 332 332 333 333 IF ( ANY (idailyavtypes(:) == prodatqc%ntyp(jobs)) ) THEN 334 334 335 335 IF ( idayend == 0 ) THEN … … 464 464 465 465 SUBROUTINE obs_pro_sco_opt( prodatqc, kt, kpi, kpj, kpk, kit000, kdaystp, & 466 & ptn, psn, pgdept, p tmask, k1dint, k2dint, &466 & ptn, psn, pgdept, pgdepw, ptmask, k1dint, k2dint, & 467 467 & kdailyavtypes ) 468 468 !!----------------------------------------------------------------------- … … 548 548 & ptmask ! Land-sea mask 549 549 REAL(KIND=wp), INTENT(IN), DIMENSION(kpi,jpj,kpk) :: & 550 & pgdept ! Model array of depth levels 550 & pgdept ! Model array of depth T levels 551 & pgdepw ! Model array of depth W levels 551 552 INTEGER, DIMENSION(imaxavtypes), OPTIONAL :: & 552 553 & kdailyavtypes ! Types for daily averages … … 681 682 igrdj(2,2,iobs) = prodatqc%mj(jobs,1) 682 683 END DO 684 685 ! Initialise depth arrays 686 zgdept = 0.0 687 zgdepw = 0.0 683 688 684 689 CALL obs_int_comm_2d( 2, 2, ipro, igrdi, igrdj, glamt, zglam ) … … 687 692 CALL obs_int_comm_3d( 2, 2, ipro, kpk, igrdi, igrdj, ptn, zintt ) 688 693 CALL obs_int_comm_3d( 2, 2, ipro, kpk, igrdi, igrdj, psn, zints ) 689 CALL obs_int_comm_3d( 2, 2, ipro, kpk, igrdi, igrdj, fsdept(:,:,:), &694 CALL obs_int_comm_3d( 2, 2, ipro, kpk, igrdi, igrdj, pgdept(:,:,:), & 690 695 & zgdept ) 691 CALL obs_int_comm_3d( 2, 2, ipro, kpk, igrdi, igrdj, fsdepw(:,:,:), &696 CALL obs_int_comm_3d( 2, 2, ipro, kpk, igrdi, igrdj, pgdepw(:,:,:), & 692 697 & zgdepw ) 693 698 … … 780 785 IF ( k1dint == 1 ) THEN 781 786 CALL obs_int_z1d_spl( kpk, & 782 & zinmt(iin,ijn,:, jobs), &783 & zobs2k, zgdept(iin,ijn,:, jobs), &784 & zmask(iin,ijn,:, jobs))787 & zinmt(iin,ijn,:,iobs), & 788 & zobs2k, zgdept(iin,ijn,:,iobs), & 789 & zmask(iin,ijn,:,iobs)) 785 790 ENDIF 786 791 787 792 CALL obs_level_search(kpk, & 788 & zgdept(iin,ijn,:, jobs), &793 & zgdept(iin,ijn,:,iobs), & 789 794 & inum_obs, prodatqc%var(1)%vdep(ista:iend), & 790 795 & iv_indic) 791 796 CALL obs_int_z1d(kpk, iv_indic, k1dint, inum_obs, & 792 797 & prodatqc%var(1)%vdep(ista:iend), & 793 & zinmt(iin,ijn,:, jobs), &798 & zinmt(iin,ijn,:,iobs), & 794 799 & zobs2k, interp_corner(iin,ijn,:), & 795 & zgdept(iin,ijn,:, jobs), &796 & zmask(iin,ijn,:, jobs))800 & zgdept(iin,ijn,:,iobs), & 801 & zmask(iin,ijn,:,iobs)) 797 802 798 803 ENDDO … … 823 828 IF ( k1dint == 1 ) THEN 824 829 CALL obs_int_z1d_spl( kpk, & 825 & zintt(iin,ijn,:, jobs),&826 & zobs2k, zgdept(iin,ijn,:, jobs), &827 & zmask(iin,ijn,:, jobs))830 & zintt(iin,ijn,:,iobs),& 831 & zobs2k, zgdept(iin,ijn,:,iobs), & 832 & zmask(iin,ijn,:,iobs)) 828 833 829 834 ENDIF 830 835 831 836 CALL obs_level_search(kpk, & 832 & zgdept(iin,ijn,:, jobs),&837 & zgdept(iin,ijn,:,iobs),& 833 838 & inum_obs, prodatqc%var(1)%vdep(ista:iend), & 834 839 & iv_indic) 835 840 CALL obs_int_z1d(kpk, iv_indic, k1dint, inum_obs, & 836 841 & prodatqc%var(1)%vdep(ista:iend), & 837 & zintt(iin,ijn,:, jobs), &842 & zintt(iin,ijn,:,iobs), & 838 843 & zobs2k,interp_corner(iin,ijn,:), & 839 & zgdept(iin,ijn,:, jobs), &840 & zmask(iin,ijn,:, jobs) )844 & zgdept(iin,ijn,:,iobs), & 845 & zmask(iin,ijn,:,iobs) ) 841 846 842 847 ENDDO … … 851 856 DO ikn=1,inum_obs 852 857 iend=ista+ikn-1 853 858 859 l_zweig(:,:,1) = 0._wp 860 854 861 ! This code forces the horizontal weights to be 855 862 ! zero IF the observation is below the bottom of the … … 861 868 862 869 depth_loop1: DO ik=kpk,2,-1 863 IF(zmask(iin,ijn,ik-1, jobs ) > 0.9 )THEN870 IF(zmask(iin,ijn,ik-1,iobs ) > 0.9 )THEN 864 871 865 872 l_zweig(iin,ijn,1) = & 866 873 & zweig(iin,ijn,1) * & 867 & MAX( SIGN(1._wp,(zgdepw(iin,ijn,ik, jobs) ) &874 & MAX( SIGN(1._wp,(zgdepw(iin,ijn,ik,iobs) ) & 868 875 & - prodatqc%var(1)%vdep(iend)),0._wp) 869 876 … … 899 906 900 907 ! vertically interpolate all 4 corners 901 ista = prodatqc%npvsta( jobs,2)902 iend = prodatqc%npvend( jobs,2)908 ista = prodatqc%npvsta(iobs,2) 909 iend = prodatqc%npvend(iobs,2) 903 910 inum_obs = iend - ista + 1 904 911 ALLOCATE(interp_corner(2,2,inum_obs),iv_indic(inum_obs)) … … 911 918 IF ( k1dint == 1 ) THEN 912 919 CALL obs_int_z1d_spl( kpk, & 913 & zinms(iin,ijn,:, jobs), &914 & zobs2k, zgdept(iin,ijn,:, jobs), &915 & zmask(iin,ijn,:, jobs))920 & zinms(iin,ijn,:,iobs), & 921 & zobs2k, zgdept(iin,ijn,:,iobs), & 922 & zmask(iin,ijn,:,iobs)) 916 923 ENDIF 917 924 918 925 CALL obs_level_search(kpk, & 919 & zgdept(iin,ijn,:, jobs), &926 & zgdept(iin,ijn,:,iobs), & 920 927 & inum_obs, prodatqc%var(2)%vdep(ista:iend), & 921 928 & iv_indic) 922 929 CALL obs_int_z1d(kpk, iv_indic, k1dint, inum_obs, & 923 930 & prodatqc%var(2)%vdep(ista:iend), & 924 & zinms(iin,ijn,:, jobs), &931 & zinms(iin,ijn,:,iobs), & 925 932 & zobs2k, interp_corner(iin,ijn,:), & 926 & zgdept(iin,ijn,:, jobs), &927 & zmask(iin,ijn,:, jobs))933 & zgdept(iin,ijn,:,iobs), & 934 & zmask(iin,ijn,:,iobs)) 928 935 929 936 ENDDO … … 955 962 IF ( k1dint == 1 ) THEN 956 963 CALL obs_int_z1d_spl( kpk, & 957 & zints(iin,ijn,:, jobs),&958 & zobs2k, zgdept(iin,ijn,:, jobs), &959 & zmask(iin,ijn,:, jobs))964 & zints(iin,ijn,:,iobs),& 965 & zobs2k, zgdept(iin,ijn,:,iobs), & 966 & zmask(iin,ijn,:,iobs)) 960 967 961 968 ENDIF 962 969 963 970 CALL obs_level_search(kpk, & 964 & zgdept(iin,ijn,:, jobs),&971 & zgdept(iin,ijn,:,iobs),& 965 972 & inum_obs, prodatqc%var(2)%vdep(ista:iend), & 966 973 & iv_indic) 967 974 CALL obs_int_z1d(kpk, iv_indic, k1dint, inum_obs, & 968 975 & prodatqc%var(2)%vdep(ista:iend), & 969 & zints(iin,ijn,:, jobs), &976 & zints(iin,ijn,:,iobs), & 970 977 & zobs2k,interp_corner(iin,ijn,:), & 971 & zgdept(iin,ijn,:, jobs), &972 & zmask(iin,ijn,:, jobs) )978 & zgdept(iin,ijn,:,iobs), & 979 & zmask(iin,ijn,:,iobs) ) 973 980 974 981 ENDDO … … 983 990 DO ikn=1,inum_obs 984 991 iend=ista+ikn-1 992 993 l_zweig(:,:,1) = 0._wp 985 994 986 995 ! This code forces the horizontal weights to be … … 993 1002 994 1003 depth_loop2: DO ik=kpk,2,-1 995 IF(zmask(iin,ijn,ik-1, jobs ) > 0.9 )THEN1004 IF(zmask(iin,ijn,ik-1,iobs ) > 0.9 )THEN 996 1005 997 1006 l_zweig(iin,ijn,1) = & 998 1007 & zweig(iin,ijn,1) * & 999 & MAX( SIGN(1._wp,(zgdepw(iin,ijn,ik, jobs) ) &1008 & MAX( SIGN(1._wp,(zgdepw(iin,ijn,ik,iobs) ) & 1000 1009 & - prodatqc%var(2)%vdep(iend)),0._wp) 1001 1010 … … 1029 1038 & zmask, & 1030 1039 & zintt, & 1031 & zints & 1040 & zints, & 1041 & zgdept,& 1042 & zgdepw & 1032 1043 & ) 1033 1044 ! At the end of the day also get interpolated means
Note: See TracChangeset
for help on using the changeset viewer.