- Timestamp:
- 2015-12-07T17:42:57+01:00 (9 years ago)
- Location:
- branches/UKMO/dev_r4650_general_vert_coord_obsoper/NEMOGCM/NEMO/OPA_SRC/OBS
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r4650_general_vert_coord_obsoper/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
r5838 r6016 1063 1063 IF ( ln_t3d .OR. ln_s3d ) THEN 1064 1064 DO jprofset = 1, nprofsets 1065 IF( ln_zco .OR. ln_zps ) THEN 1065 IF( (.NOT. lk_vvl) .AND. (ln_zco .OR. ln_zps) ) THEN 1066 IF(lwp) THEN 1067 WRITE(numout,*) 'dia_obs : calling obs_pro_opt' 1068 ENDIF 1066 1069 IF ( ld_enact(jprofset) ) THEN 1067 1070 CALL obs_pro_opt( prodatqc(jprofset), & … … 1077 1080 ENDIF 1078 1081 ELSE 1082 IF(lwp) THEN 1083 WRITE(numout,*) 'dia_obs : calling obs_pro_sco_opt' 1084 ENDIF 1079 1085 IF ( ld_enact(jprofset) ) THEN 1080 1086 CALL obs_pro_sco_opt( prodatqc(jprofset), & 1081 1087 & kstp, jpi, jpj, jpk, nit000, idaystp, & 1082 1088 & tsn(:,:,:,jp_tem), tsn(:,:,:,jp_sal), & 1083 & fsdept(:,:,:), tmask, n1dint, n2dint, & 1089 & fsdept(:,:,:), fsdepw(:,:,:), & 1090 & tmask, n1dint, n2dint, & 1084 1091 & kdailyavtypes = endailyavtypes ) 1085 1092 ELSE … … 1087 1094 & kstp, jpi, jpj, jpk, nit000, idaystp, & 1088 1095 & tsn(:,:,:,jp_tem), tsn(:,:,:,jp_sal), & 1089 & fsdept(:,:,:), tmask, n1dint, n2dint ) 1096 & fsdept(:,:,:), fsdepw(:,:,:), & 1097 & tmask, n1dint, n2dint ) 1090 1098 ENDIF 1091 1099 ENDIF -
branches/UKMO/dev_r4650_general_vert_coord_obsoper/NEMOGCM/NEMO/OPA_SRC/OBS/obs_oper.F90
r5838 r6016 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 !!----------------------------------------------------------------------- … … 547 547 & psn, & ! Model salinity field 548 548 & ptmask ! Land-sea mask 549 REAL(KIND=wp), INTENT(IN), DIMENSION(kpi,jpj,kpk) :: & 550 & pgdept ! Model array of depth levels 549 REAL(KIND=wp), INTENT(IN), DIMENSION(kpi,kpj,kpk) :: & 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 … … 682 683 END DO 683 684 685 ! Initiialise depth arrays 686 zgdept = 0.0 687 zgdepw = 0.0 688 684 689 CALL obs_int_comm_2d( 2, 2, ipro, igrdi, igrdj, glamt, zglam ) 685 690 CALL obs_int_comm_2d( 2, 2, ipro, igrdi, igrdj, gphit, zgphi ) … … 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 … … 850 855 851 856 DO ikn=1,inum_obs 852 iend=ista+ikn-1 857 iend=ista+ikn-1 858 859 l_zweig(:,:,1) = 0._wp 853 860 854 861 ! This code forces the horizontal weights to be … … 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 … … 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 … … 982 989 983 990 DO ikn=1,inum_obs 984 iend=ista+ikn-1 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.