Changeset 7026 for branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS
- Timestamp:
- 2016-10-13T15:50:54+02:00 (8 years ago)
- Location:
- branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/docsrc/5_changeLog.md
r7025 r7026 6 6 7 7 ## New Features 8 - create_meshmask.F90 program to create meshmask from coordinates and bathymetry files. 8 - create_meshmask.f90 program to create meshmask from coordinates and bathymetry files. 9 - merge_bathy.f90: allow to choose the number of boundary point with coarse grid value. 9 10 ## Changes 10 - create_coord. F90: allow to define sub domain with coarse grid indices or coordinates.11 - grid. F90:grid__get_closest_str: add function to get closest grid point using coarse grid coordinates strucutre.12 - iom. F90:iom_open: open cdf4 file as cdf11 - create_coord.f90: allow to define sub domain with coarse grid indices or coordinates. 12 - grid.f90:grid__get_closest_str: add function to get closest grid point using coarse grid coordinates strucutre. 13 - iom.f90:iom_open: open cdf4 file as cdf 13 14 ## Bug fixes 14 - boundary. F90:boundary_check: take into account that boundaries are compute on T point, but expressed on U,V point15 - boundary.f90:boundary_check: take into account that boundaries are compute on T point, but expressed on U,V point 15 16 16 17 # Initial Release 2016-03-17 -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/merge_bathy.f90
r6393 r7026 115 115 !> - cn_east : east boundary indices on fine grid<br/> 116 116 !> - cn_west : west boundary indices on fine grid<br/> 117 !> - in_ncrs : number of point(s) with coarse value save at boundaries<br/> 117 118 !> - ln_oneseg: use only one segment for each boundary or not 118 119 !> … … 130 131 !> @date September, 2015 131 132 !> - manage useless (dummy) variable, attributes, and dimension 133 !> @date October, 2016 134 !> - allow to choose the number of boundary point with coarse grid value. 132 135 !> 133 136 !> @note Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 231 234 LOGICAL :: ln_east = .TRUE. 232 235 LOGICAL :: ln_west = .TRUE. 233 LOGICAL :: ln_oneseg= .TRUE.234 236 CHARACTER(LEN=lc) :: cn_north = '' 235 237 CHARACTER(LEN=lc) :: cn_south = '' 236 238 CHARACTER(LEN=lc) :: cn_east = '' 237 239 CHARACTER(LEN=lc) :: cn_west = '' 240 INTEGER(i4) :: in_ncrs = 2 241 LOGICAL :: ln_oneseg= .TRUE. 238 242 239 243 ! namout … … 276 280 & cn_east , & !< east boundary indices on fine grid 277 281 & cn_west , & !< west boundary indices on fine grid 282 & in_ncrs, & !< number of point with coarse value save at boundaries 278 283 & ln_oneseg !< use only one segment for each boundary or not 279 284 … … 435 440 DO jk=1,ip_ncard 436 441 CALL merge_bathy_get_boundary(tl_bathy0, tl_bathy1, tl_bdy(jk), & 437 & il_rho(:), 442 & il_rho(:), in_ncrs, & 438 443 & dl_refined(:,:,:,:), dl_weight(:,:,:,:), & 439 444 & dl_fill) … … 638 643 !> @param[in] td_bdy boundary structure 639 644 !> @param[in] id_rho array of refinement factor 645 !> @param[in] id_ncrs number of point with coarse value save at boundaries 640 646 !> @param[inout] dd_refined array of refined bathymetry 641 647 !> @param[inout] dd_weight array of weight 642 648 !> @param[in] dd_fill fillValue 643 649 !> 644 !> @todo improve boundary weight function645 650 !------------------------------------------------------------------- 646 651 SUBROUTINE merge_bathy_get_boundary( td_bathy0, td_bathy1, td_bdy, & 647 & id_rho, 652 & id_rho, id_ncrs, & 648 653 & dd_refined, dd_weight, dd_fill ) 649 654 … … 655 660 TYPE(TBDY) , INTENT(IN ) :: td_bdy 656 661 INTEGER(i4), DIMENSION(:) , INTENT(IN ) :: id_rho 662 INTEGER(i4) , INTENT(IN ) :: id_ncrs 657 663 REAL(dp) , DIMENSION(:,:,:,:), INTENT(INOUT) :: dd_refined 658 664 REAL(dp) , DIMENSION(:,:,:,:), INTENT(INOUT) :: dd_weight … … 670 676 INTEGER(i4) :: il_jmax0 671 677 678 INTEGER(i4) :: il_width 679 672 680 INTEGER(i4), DIMENSION(2,2) :: il_offset 673 681 INTEGER(i4), DIMENSION(2,2) :: il_ind … … 838 846 CASE('north') 839 847 840 ! ! npoint coarse 841 ! il_width=td_bdy%t_seg(jl)%i_width-id_npoint 842 ! ! compute "distance" 843 ! dl_tmp1d(:)=(/(ji,ji=il_width-1,1,-1),(0,ji=1,id_npoint)/) 844 ! ! compute weight on segment 845 ! dl_tmp1d(:)= 0.5 + 0.5*COS( (dp_pi*dl_tmp1d(:)) / & 846 ! & (il_width) ) 847 848 849 ! save n coarse point 850 il_width=td_bdy%t_seg(jl)%i_width-id_ncrs 848 851 ! compute "distance" 849 dl_tmp1d(:)=(/(ji -1,ji=td_bdy%t_seg(jl)%i_width-1,1,-1),0/)852 dl_tmp1d(:)=(/(ji,ji=il_width-1,1,-1),(0,ji=1,id_ncrs)/) 850 853 851 854 ! compute weight on segment 852 855 dl_tmp1d(:)= 0.5 + 0.5*COS( (dp_pi*dl_tmp1d(:)) / & 853 & (td_bdy%t_seg(jl)%i_width) ) 856 & (il_width) ) 857 854 858 855 859 ALLOCATE( dl_wseg(tl_dom1%t_dim(1)%i_len, & … … 862 866 CASE('south') 863 867 868 ! save n coarse point 869 il_width=td_bdy%t_seg(jl)%i_width-id_ncrs 864 870 ! compute "distance" 865 dl_tmp1d(:)=(/ 0,(ji-1,ji=1,td_bdy%t_seg(jl)%i_width-1)/)871 dl_tmp1d(:)=(/(0,ji=1,id_ncrs),(ji,ji=1,il_width-1)/) 866 872 867 873 ! compute weight on segment 868 874 dl_tmp1d(:)= 0.5 + 0.5*COS( (dp_pi*dl_tmp1d(:)) / & 869 & (td_bdy%t_seg(jl)%i_width) ) 875 & (il_width) ) 876 870 877 871 878 ALLOCATE( dl_wseg(tl_dom1%t_dim(1)%i_len, & … … 878 885 CASE('east') 879 886 887 ! save n coarse point 888 il_width=td_bdy%t_seg(jl)%i_width-id_ncrs 880 889 ! compute "distance" 881 dl_tmp1d(:)=(/(ji -1,ji=td_bdy%t_seg(jl)%i_width-1,1,-1),0/)890 dl_tmp1d(:)=(/(ji,ji=il_width-1,1,-1),(0,ji=1,id_ncrs)/) 882 891 883 892 ! compute weight on segment 884 893 dl_tmp1d(:)= 0.5 + 0.5*COS( (dp_pi*dl_tmp1d(:)) / & 885 & (td_bdy%t_seg(jl)%i_width) ) 894 & (il_width) ) 895 886 896 887 897 ALLOCATE( dl_wseg(tl_dom1%t_dim(1)%i_len, & … … 894 904 CASE('west') 895 905 906 ! save n coarse point 907 il_width=td_bdy%t_seg(jl)%i_width-id_ncrs 896 908 ! compute "distance" 897 dl_tmp1d(:)=(/ 0,(ji-1,ji=1,td_bdy%t_seg(jl)%i_width-1)/)909 dl_tmp1d(:)=(/(0,ji=1,id_ncrs),(ji,ji=1,il_width-1)/) 898 910 899 911 ! compute weight on segment 900 912 dl_tmp1d(:)= 0.5 + 0.5*COS( (dp_pi*dl_tmp1d(:)) / & 901 & (td_bdy%t_seg(jl)%i_width) ) 913 & (il_width) ) 914 902 915 903 916 ALLOCATE( dl_wseg(tl_dom1%t_dim(1)%i_len, & -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/templates/merge_bathy.nam
r6393 r7026 34 34 cn_east= 35 35 cn_west= 36 in_ncrs= 36 37 ln_oneseg= 37 38 /
Note: See TracChangeset
for help on using the changeset viewer.