Changeset 8193 for branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
- Timestamp:
- 2017-06-20T10:46:27+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_package_fix_rnf_MOCI_TEST_SUITE/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
r8191 r8193 41 41 USE dianam ! build name of file 42 42 USE xios 43 USE iom_def, ONLY : max_rst_fields, rst_fields44 43 # endif 45 44 USE ioipsl, ONLY : ju2ymds ! for calendar 46 45 USE crs ! Grid coarsening 47 USE lib_fortran48 46 49 47 IMPLICIT NONE … … 64 62 PRIVATE iom_set_domain_attr, iom_set_axis_attr, iom_set_field_attr, iom_set_file_attr, iom_get_file_attr, iom_set_grid_attr 65 63 PRIVATE set_grid, set_grid_bounds, set_scalar, set_xmlatt, set_mooring, iom_update_file_name, iom_sdate 66 PRIVATE set_rst_vars, set_rstr_active67 64 # endif 68 65 … … 139 136 & start_date = xios_date(nyear,nmonth,nday,0,0,0) ) 140 137 END SELECT 141 142 138 #endif 143 139 ! horizontal grid definition … … 146 142 147 143 IF( TRIM(cdname) == TRIM(cxios_context) ) THEN 148 CALL set_grid( "T", glamt, gphit , ln_mskland)149 CALL set_grid( "U", glamu, gphiu , ln_mskland)150 CALL set_grid( "V", glamv, gphiv , ln_mskland)151 CALL set_grid( "W", glamt, gphit , ln_mskland)144 CALL set_grid( "T", glamt, gphit ) 145 CALL set_grid( "U", glamu, gphiu ) 146 CALL set_grid( "V", glamv, gphiv ) 147 CALL set_grid( "W", glamt, gphit ) 152 148 CALL set_grid_znl( gphit ) 153 CALL set_grid("N",glamt, gphit, .FALSE.) ! not masked values154 149 ! 155 IF( ln_cfmeta .AND. TRIM(cdname) .NE. TRIM(rxios_context)) THEN ! Add additional grid metadata150 IF( ln_cfmeta ) THEN ! Add additional grid metadata 156 151 CALL iom_set_domain_attr("grid_T", area = e12t(nldi:nlei, nldj:nlej)) 157 152 CALL iom_set_domain_attr("grid_U", area = e12u(nldi:nlei, nldj:nlej)) … … 168 163 CALL dom_grid_crs ! Save the parent grid information & Switch to coarse grid domain 169 164 ! 170 CALL set_grid( "T", glamt_crs, gphit_crs , ln_mskland)171 CALL set_grid( "U", glamu_crs, gphiu_crs , ln_mskland)172 CALL set_grid( "V", glamv_crs, gphiv_crs , ln_mskland)173 CALL set_grid( "W", glamt_crs, gphit_crs , ln_mskland)165 CALL set_grid( "T", glamt_crs, gphit_crs ) 166 CALL set_grid( "U", glamu_crs, gphiu_crs ) 167 CALL set_grid( "V", glamv_crs, gphiv_crs ) 168 CALL set_grid( "W", glamt_crs, gphit_crs ) 174 169 CALL set_grid_znl( gphit_crs ) 175 170 ! 176 171 CALL dom_grid_glo ! Return to parent grid domain 177 172 ! 178 IF( ln_cfmeta .AND. TRIM(cdname) .NE. TRIM(rxios_context)) THEN ! Add additional grid metadata173 IF( ln_cfmeta ) THEN ! Add additional grid metadata 179 174 CALL iom_set_domain_attr("grid_T", area = e1e2t_crs(nldi:nlei, nldj:nlej)) 180 175 CALL iom_set_domain_attr("grid_U", area = e1u_crs(nldi:nlei, nldj:nlej) * e2u_crs(nldi:nlei, nldj:nlej)) … … 232 227 233 228 ! automatic definitions of some of the xml attributs 234 IF( TRIM(cdname) == TRIM(rxios_context)) THEN 235 !set names of the fields in restart file IF using XIOS to read/write data 236 CALL set_rst_vars() 237 !set which fields are to be read from restart file 238 CALL set_rstr_active() 239 ELSE 240 CALL set_xmlatt 241 ENDIF 229 CALL set_xmlatt 242 230 243 231 CALL set_1point … … 256 244 END SUBROUTINE iom_init 257 245 258 259 SUBROUTINE set_rst_vars()260 !set names for variables in restart file261 262 rst_fields(:)%vname="NO_NAME"; rst_fields(:)%grid="NO_GRID"263 264 rst_fields(1)%vname="rdt"; rst_fields(1)% grid="grid_scalar"265 rst_fields(2)%vname="rdttra1"; rst_fields(2)% grid="grid_scalar"266 rst_fields(3)%vname="un"; rst_fields(3)% grid="grid_N_3D"267 rst_fields(4)%vname="ub"; rst_fields(4)% grid="grid_N_3D"268 rst_fields(5)%vname="vn"; rst_fields(5)% grid="grid_N_3D"269 rst_fields(6)%vname="vb"; rst_fields(6)% grid="grid_N_3D"270 rst_fields(7)%vname="tn"; rst_fields(7)% grid="grid_N_3D"271 rst_fields(8)%vname="tb"; rst_fields(8)% grid="grid_N_3D"272 rst_fields(9)%vname="sn"; rst_fields(9)% grid="grid_N_3D"273 rst_fields(10)%vname="sb"; rst_fields(10)%grid="grid_N_3D"274 rst_fields(11)%vname="sshn"; rst_fields(11)%grid="grid_N"275 rst_fields(12)%vname="sshb"; rst_fields(12)%grid="grid_N"276 rst_fields(13)%vname="hdivn"; rst_fields(13)%grid="grid_N_3D"277 rst_fields(14)%vname="hdivb"; rst_fields(14)%grid="grid_N_3D"278 rst_fields(15)%vname="rhop"; rst_fields(15)%grid="grid_N_3D"279 rst_fields(16)%vname="rotn"; rst_fields(16)%grid="grid_N_3D"280 rst_fields(17)%vname="rotb"; rst_fields(17)%grid="grid_N_3D"281 rst_fields(18)%vname="kt"; rst_fields(18)%grid="grid_scalar"282 rst_fields(19)%vname="ndastp"; rst_fields(19)%grid="grid_scalar"283 rst_fields(20)%vname="adatrj"; rst_fields(20)%grid="grid_scalar"284 rst_fields(21)%vname="utau_b"; rst_fields(21)%grid="grid_N"285 rst_fields(22)%vname="vtau_b"; rst_fields(22)%grid="grid_N"286 rst_fields(23)%vname="qns_b"; rst_fields(23)%grid="grid_N"287 rst_fields(24)%vname="emp_b"; rst_fields(24)%grid="grid_N"288 rst_fields(25)%vname="sfx_b"; rst_fields(25)%grid="grid_N"289 rst_fields(26)%vname="en" ; rst_fields(26)%grid="grid_N_3D"290 rst_fields(27)%vname="avt"; rst_fields(27)%grid="grid_N_3D"291 rst_fields(28)%vname="avm"; rst_fields(28)%grid="grid_N_3D"292 rst_fields(29)%vname="avmu"; rst_fields(29)%grid="grid_N_3D"293 rst_fields(30)%vname="avmv"; rst_fields(30)%grid="grid_N_3D"294 rst_fields(31)%vname="dissl"; rst_fields(31)%grid="grid_N_3D"295 rst_fields(32)%vname="sbc_hc_b"; rst_fields(32)%grid="grid_N"296 rst_fields(33)%vname="sbc_sc_b"; rst_fields(33)%grid="grid_N"297 rst_fields(34)%vname="qsr_hc_b"; rst_fields(34)%grid="grid_N_3D"298 rst_fields(35)%vname="gcx"; rst_fields(35)%grid="grid_N"299 rst_fields(36)%vname="gcxb"; rst_fields(36)%grid="grid_N"300 rst_fields(37)%vname="fraqsr_1lev"; rst_fields(37)%grid="grid_N"301 rst_fields(38)%vname="greenland_icesheet_mass"302 rst_fields(38)%grid="grid_scalar"303 rst_fields(39)%vname="greenland_icesheet_timelapsed"304 rst_fields(39)%grid="grid_scalar"305 rst_fields(40)%vname="greenland_icesheet_mass_roc"306 rst_fields(40)%grid="grid_scalar"307 rst_fields(41)%vname="antarctica_icesheet_mass"308 rst_fields(41)%grid="grid_scalar"309 rst_fields(42)%vname="antarctica_icesheet_timelapsed"310 rst_fields(42)%grid="grid_scalar"311 rst_fields(43)%vname="antarctica_icesheet_mass_roc"312 rst_fields(43)%grid="grid_scalar"313 rst_fields(44)%vname="rhd"; rst_fields(44)%grid="grid_N_3D"314 rst_fields(45)%vname="frc_v"; rst_fields(45)%grid="grid_scalar"315 rst_fields(46)%vname="frc_t"; rst_fields(46)%grid="grid_scalar"316 rst_fields(47)%vname="frc_s"; rst_fields(47)%grid="grid_scalar"317 rst_fields(48)%vname="frc_wn_t"; rst_fields(48)%grid="grid_scalar"318 rst_fields(49)%vname="frc_wn_s"; rst_fields(49)%grid="grid_scalar"319 rst_fields(50)%vname="ssh_ini"; rst_fields(50)%grid="grid_N"320 rst_fields(51)%vname="e3t_ini"; rst_fields(51)%grid="grid_N_3D"321 rst_fields(52)%vname="hc_loc_ini"; rst_fields(52)%grid="grid_N_3D"322 rst_fields(53)%vname="sc_loc_ini"; rst_fields(53)%grid="grid_N_3D"323 rst_fields(54)%vname="ssh_hc_loc_ini"; rst_fields(54)%grid="grid_N"324 rst_fields(55)%vname="ssh_sc_loc_ini"; rst_fields(55)%grid="grid_N"325 rst_fields(56)%vname="fse3t_b"; rst_fields(56)%grid="grid_N_3D"326 rst_fields(57)%vname="fse3t_n"; rst_fields(57)%grid="grid_N_3D"327 rst_fields(58)%vname="tilde_e3t_b"; rst_fields(58)%grid="grid_N"328 rst_fields(59)%vname="tilde_e3t_n"; rst_fields(59)%grid="grid_N"329 rst_fields(60)%vname="hdiv_lf"; rst_fields(60)%grid="grid_N"330 rst_fields(61)%vname="ub2_b"; rst_fields(61)%grid="grid_N"331 rst_fields(62)%vname="vb2_b"; rst_fields(62)%grid="grid_N"332 rst_fields(63)%vname="sshbb_e"; rst_fields(63)%grid="grid_N"333 rst_fields(64)%vname="ubb_e"; rst_fields(64)%grid="grid_N"334 rst_fields(65)%vname="vbb_e"; rst_fields(65)%grid="grid_N"335 rst_fields(66)%vname="sshb_e"; rst_fields(66)%grid="grid_N"336 rst_fields(67)%vname="ub_e"; rst_fields(67)%grid="grid_N"337 rst_fields(68)%vname="vb_e"; rst_fields(68)%grid="grid_N"338 rst_fields(69)%vname="fwf_isf_b"; rst_fields(69)%grid="grid_N"339 rst_fields(70)%vname="isf_sc_b"; rst_fields(70)%grid="grid_N"340 rst_fields(71)%vname="isf_hc_b"; rst_fields(71)%grid="grid_N"341 rst_fields(72)%vname="ssh_ibb"; rst_fields(72)%grid="grid_N"342 rst_fields(73)%vname="rnf_b"; rst_fields(73)%grid="grid_N"343 rst_fields(74)%vname="rnf_hc_b"; rst_fields(74)%grid="grid_N"344 rst_fields(75)%vname="rnf_sc_b"; rst_fields(75)%grid="grid_N"345 rst_fields(76)%vname="nn_fsbc"; rst_fields(76)%grid="grid_scalar"346 rst_fields(77)%vname="ssu_m"; rst_fields(77)%grid="grid_N"347 rst_fields(78)%vname="ssv_m"; rst_fields(78)%grid="grid_N"348 rst_fields(79)%vname="sst_m"; rst_fields(79)%grid="grid_N"349 rst_fields(80)%vname="sss_m"; rst_fields(80)%grid="grid_N"350 rst_fields(81)%vname="ssh_m"; rst_fields(81)%grid="grid_N"351 rst_fields(82)%vname="e3t_m"; rst_fields(82)%grid="grid_N"352 rst_fields(83)%vname="frq_m"; rst_fields(83)%grid="grid_N"353 rst_fields(84)%vname="avmb"; rst_fields(84)%grid="Vgrid"354 rst_fields(85)%vname="avtb"; rst_fields(85)%grid="Vgrid"355 356 END SUBROUTINE set_rst_vars357 358 359 SUBROUTINE set_rstr_active()360 !sets enabled = .TRUE. for each field in restart file361 #if defined key_xios2362 CHARACTER(len=256) :: rst_file363 TYPE(xios_field) :: field_hdl364 TYPE(xios_file) :: file_hdl365 TYPE(xios_filegroup) :: filegroup_hdl366 INTEGER :: i367 CHARACTER(lc) :: clpath368 369 clpath = TRIM(cn_ocerst_indir)370 IF( clpath(LEN_TRIM(clpath):) /= '/' ) clpath = TRIM(clpath) // '/'371 IF( TRIM(Agrif_CFixed()) == '0' ) THEN372 rst_file = TRIM(cn_ocerst_indir)//TRIM(cn_ocerst_in)373 ELSE374 rst_file = TRIM(cn_ocerst_indir)//'1_'//TRIM(cn_ocerst_in)375 ENDIF376 !set name of the restart file and enable available fields377 if(lwp) WRITE(numout,*) 'Setting restart filename (for XIOS) to: ',rst_file378 CALL xios_get_handle("file_definition", filegroup_hdl )379 CALL xios_add_child(filegroup_hdl, file_hdl, 'rrestart')380 CALL xios_set_file_attr( "rrestart", name=trim(rst_file), type="one_file", &381 par_access="collective", enabled=.TRUE., mode="read", &382 output_freq=xios_timestep)383 !defin files for restart context384 DO i = 1, max_rst_fields385 IF( TRIM(rst_fields(i)%vname) /= "NO_NAME") THEN386 IF( iom_varid( numror, TRIM(rst_fields(i)%vname), ldstop = .FALSE. ) > 0 ) THEN387 CALL xios_add_child(file_hdl, field_hdl, TRIM(rst_fields(i)%vname))388 CALL xios_set_attr (field_hdl, enabled = .TRUE., name = TRIM(rst_fields(i)%vname), &389 grid_ref = TRIM(rst_fields(i)%grid ), operation = "instant")390 if(lwp) WRITE(numout,*) TRIM(rst_fields(i)%vname), ' enabled'391 ENDIF392 ENDIF393 END DO394 #endif395 END SUBROUTINE set_rstr_active396 246 397 247 SUBROUTINE iom_swap( cdname ) … … 837 687 ! value for the 2nd dimension (netcdf only) 838 688 ! 839 LOGICAL :: lxios ! local definition for XIOS read840 689 LOGICAL :: llnoov ! local definition to read overlap 841 690 LOGICAL :: luse_jattr ! local definition to read open_ocean_jstart file attribute … … 864 713 !--------------------------------------------------------------------- 865 714 ! 866 REAL(wp) :: gma, gmi 867 lxios = .FALSE. 868 if(PRESENT(lrxios)) lxios = lrxios 869 idvar = iom_varid( kiomid, cdvar ) 715 clname = iom_file(kiomid)%name ! esier to read 716 clinfo = ' iom_get_123d, file: '//trim(clname)//', var: '//trim(cdvar) 717 ! local definition of the domain ? 870 718 idom = kdom 871 872 IF(.NOT.lxios) THEN 873 clname = iom_file(kiomid)%name ! esier to read 874 clinfo = ' iom_get_123d, file: '//trim(clname)//', var: '//trim(cdvar) 875 ! local definition of the domain ? 876 ! do we read the overlap 877 ! ugly patch SM+JMM+RB to overwrite global definition in some cases 878 llnoov = (jpni * jpnj ) == jpnij .AND. .NOT. lk_agrif 879 ! check kcount and kstart optionals parameters... 880 IF( PRESENT(kcount) .AND. (.NOT. PRESENT(kstart)) ) CALL ctl_stop(trim(clinfo), 'kcount present needs kstart present') 881 IF( PRESENT(kstart) .AND. (.NOT. PRESENT(kcount)) ) CALL ctl_stop(trim(clinfo), 'kstart present needs kcount present') 882 IF( PRESENT(kstart) .AND. idom /= jpdom_unknown .AND. idom /= jpdom_autoglo_xy ) & 719 ! do we read the overlap 720 ! ugly patch SM+JMM+RB to overwrite global definition in some cases 721 llnoov = (jpni * jpnj ) == jpnij .AND. .NOT. lk_agrif 722 ! check kcount and kstart optionals parameters... 723 IF( PRESENT(kcount) .AND. (.NOT. PRESENT(kstart)) ) CALL ctl_stop(trim(clinfo), 'kcount present needs kstart present') 724 IF( PRESENT(kstart) .AND. (.NOT. PRESENT(kcount)) ) CALL ctl_stop(trim(clinfo), 'kstart present needs kcount present') 725 IF( PRESENT(kstart) .AND. idom /= jpdom_unknown .AND. idom /= jpdom_autoglo_xy ) & 883 726 & CALL ctl_stop(trim(clinfo), 'kstart present needs kdom = jpdom_unknown or kdom = jpdom_autoglo_xy') 884 727 … … 1082 925 IF(lwp) WRITE(numout,"(10x,' read ',a,' (rec: ',i6,') in ',a,' ok')") TRIM(cdvar), itime, TRIM(iom_file(kiomid)%name) 1083 926 1084 !--- overlap areas and extra hallows (mpp) 1085 IF( PRESENT(pv_r2d) .AND. idom /= jpdom_unknown ) THEN 1086 CALL lbc_lnk( pv_r2d,'Z',-999.,'no0' ) 1087 ELSEIF( PRESENT(pv_r3d) .AND. idom /= jpdom_unknown ) THEN 1088 ! this if could be simplified with the new lbc_lnk that works with any size of the 3rd dimension 1089 IF( icnt(3) == jpk ) THEN 1090 CALL lbc_lnk( pv_r3d,'Z',-999.,'no0' ) 1091 ELSE ! put some arbitrary value (a call to lbc_lnk will be done later...) 1092 DO jj = nlcj+1, jpj ; pv_r3d(1:nlci, jj, :) = pv_r3d(1:nlci, nlej, :) ; END DO 1093 DO ji = nlci+1, jpi ; pv_r3d(ji , : , :) = pv_r3d(nlei , : , :) ; END DO 1094 ENDIF 1095 ENDIF 1096 ! 1097 ELSE 1098 ! return if istop == nstop is false 1099 RETURN 1100 ENDIF 1101 ELSE 1102 ! return if statment idvar > 0 .AND. istop == nstop is false 1103 RETURN 1104 ENDIF 1105 ! 1106 ELSE ! read using XIOS. Only if KEY_IOMPUT is defined 1107 #if defined key_iomput 1108 !would be good to be able to check which context is active and swap only if current is not restart 1109 CALL iom_swap( TRIM(rxios_context) ) 1110 IF( PRESENT(pv_r3d) ) THEN 1111 if(lwp) write(numout,*) 'XIOS RST READ (3D): ',trim(cdvar) 1112 CALL xios_recv_field( trim(cdvar), pv_r3d) 1113 IF(idom /= jpdom_unknown ) then 1114 CALL lbc_lnk( pv_r3d,'Z',-999.,'no0' ) 1115 ENDIF 1116 ELSEIF( PRESENT(pv_r2d) ) THEN 1117 if(lwp) write(numout,*) 'XIOS RST READ (2D): ', trim(cdvar) 1118 CALL xios_recv_field( trim(cdvar), pv_r2d) 1119 IF(idom /= jpdom_unknown ) THEN 1120 CALL lbc_lnk(pv_r2d,'Z',-999.,'no0') 1121 ENDIF 1122 ELSEIF( PRESENT(pv_r1d) ) THEN 1123 if(lwp) write(numout,*) 'XIOS RST READ (1D): ', trim(cdvar) 1124 CALL xios_recv_field( trim(cdvar), pv_r1d) 1125 ENDIF 1126 CALL iom_swap( TRIM(cxios_context) ) 1127 #else 1128 istop = istop + 1 1129 clinfo = 'Can not use XIOS in iom_get_123d, file: '//trim(clname)//', var:'//trim(cdvar) 1130 #endif 1131 ENDIF 1132 !some final adjustments 1133 ! C1D case : always call lbc_lnk to replicate the central value over the whole 3X3 domain 1134 IF( lk_c1d .AND. PRESENT(pv_r2d) ) CALL lbc_lnk( pv_r2d,'Z',1. ) 1135 IF( lk_c1d .AND. PRESENT(pv_r3d) ) CALL lbc_lnk( pv_r3d,'Z',1. ) 1136 1137 !--- Apply scale_factor and offset 1138 zscf = iom_file(kiomid)%scf(idvar) ! scale factor 1139 zofs = iom_file(kiomid)%ofs(idvar) ! offset 1140 IF( PRESENT(pv_r1d) ) THEN 1141 IF( zscf /= 1. ) pv_r1d(:) = pv_r1d(:) * zscf 1142 IF( zofs /= 0. ) pv_r1d(:) = pv_r1d(:) + zofs 1143 ELSEIF( PRESENT(pv_r2d) ) THEN 927 !--- overlap areas and extra hallows (mpp) 928 IF( PRESENT(pv_r2d) .AND. idom /= jpdom_unknown ) THEN 929 CALL lbc_lnk( pv_r2d,'Z',-999.,'no0' ) 930 ELSEIF( PRESENT(pv_r3d) .AND. idom /= jpdom_unknown ) THEN 931 ! this if could be simplified with the new lbc_lnk that works with any size of the 3rd dimension 932 IF( icnt(3) == jpk ) THEN 933 CALL lbc_lnk( pv_r3d,'Z',-999.,'no0' ) 934 ELSE ! put some arbitrary value (a call to lbc_lnk will be done later...) 935 DO jj = nlcj+1, jpj ; pv_r3d(1:nlci, jj, :) = pv_r3d(1:nlci, nlej, :) ; END DO 936 DO ji = nlci+1, jpi ; pv_r3d(ji , : , :) = pv_r3d(nlei , : , :) ; END DO 937 ENDIF 938 ENDIF 939 940 ! C1D case : always call lbc_lnk to replicate the central value over the whole 3X3 domain 941 IF( lk_c1d .AND. PRESENT(pv_r2d) ) CALL lbc_lnk( pv_r2d,'Z',1. ) 942 IF( lk_c1d .AND. PRESENT(pv_r3d) ) CALL lbc_lnk( pv_r3d,'Z',1. ) 943 944 !--- Apply scale_factor and offset 945 zscf = iom_file(kiomid)%scf(idvar) ! scale factor 946 zofs = iom_file(kiomid)%ofs(idvar) ! offset 947 IF( PRESENT(pv_r1d) ) THEN 948 IF( zscf /= 1. ) pv_r1d(:) = pv_r1d(:) * zscf 949 IF( zofs /= 0. ) pv_r1d(:) = pv_r1d(:) + zofs 950 ELSEIF( PRESENT(pv_r2d) ) THEN 1144 951 !CDIR COLLAPSE 1145 952 IF( zscf /= 1.) pv_r2d(:,:) = pv_r2d(:,:) * zscf … … 1150 957 IF( zscf /= 1.) pv_r3d(:,:,:) = pv_r3d(:,:,:) * zscf 1151 958 !CDIR COLLAPSE 1152 IF( zofs /= 0.) pv_r3d(:,:,:) = pv_r3d(:,:,:) + zofs 1153 ENDIF 959 IF( zofs /= 0.) pv_r3d(:,:,:) = pv_r3d(:,:,:) + zofs 960 ENDIF 961 ! 962 ENDIF 963 ! 964 ENDIF 965 ! 1154 966 END SUBROUTINE iom_get_123d 1155 967 … … 1555 1367 1556 1368 1557 SUBROUTINE set_grid( cdgrd, plon, plat , lmask)1369 SUBROUTINE set_grid( cdgrd, plon, plat ) 1558 1370 !!---------------------------------------------------------------------- 1559 1371 !! *** ROUTINE set_grid *** … … 1568 1380 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmask 1569 1381 INTEGER :: ni,nj 1570 LOGICAL :: lmask1571 1382 1572 1383 ni=nlei-nldi+1 ; nj=nlej-nldj+1 … … 1581 1392 & latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /))) 1582 1393 1583 IF ( l mask) THEN1394 IF ( ln_mskland ) THEN 1584 1395 ! mask land points, keep values on coast line -> specific mask for U, V and W points 1585 1396 SELECT CASE ( cdgrd ) … … 1625 1436 ! Offset of coordinate representing bottom-left corner 1626 1437 SELECT CASE ( TRIM(cdgrd) ) 1627 CASE ('T', 'W' , 'N')1438 CASE ('T', 'W') 1628 1439 icnr = -1 ; jcnr = -1 1629 1440 CASE ('U')
Note: See TracChangeset
for help on using the changeset viewer.