Changeset 7025 for branches/2016/dev_r6999_CONFIGMAN_1
- Timestamp:
- 2016-10-13T11:08:38+02:00 (8 years ago)
- Location:
- branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN
- Files:
-
- 5 added
- 20 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/Doxyfile
r7001 r7025 52 52 # to the output directory. 53 53 54 PROJECT_LOGO = ./ docsrc/Image/logoSirenNemo.png54 PROJECT_LOGO = ./src/docsrc/Image/logoSirenNemo.png 55 55 56 56 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path … … 59 59 # left blank the current directory will be used. 60 60 61 OUTPUT_DIRECTORY = . ./doc61 OUTPUT_DIRECTORY = ./doc 62 62 63 63 # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub- … … 754 754 # Note: If this tag is empty the current directory is searched. 755 755 756 INPUT = . ./docsrc756 INPUT = ./src ./src/docsrc 757 757 758 758 # This tag can be used to specify the character encoding of the source files … … 842 842 # \image command). 843 843 844 IMAGE_PATH = ./ docsrc/Image844 IMAGE_PATH = ./src/docsrc/Image 845 845 846 846 # The INPUT_FILTER tag can be used to specify a program that doxygen should -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/README
r5037 r7025 1 This is a first release of SIREN.2 1 3 To create SIREN documentation, go to ./src and run doxygen2 To create SIREN documentation, run doxygen in TOOLS/SIREN directory 4 3 (http://www.stack.nl/~dimitri/doxygen/index.html version 1.8.3.1 or upper) 5 4 then 6 open . ./doc/index.html5 open ./TOOLS/SIREN/doc/html/index.html in your web browser 7 6 or 8 run ../doc/latex/gmake and open refman.pdf 9 10 11 templates of namelists could be find in templates directory. 12 read documentation for more information. 13 14 1- program to create coordinate file : 15 16 ./create_coord create_coord.nam 17 18 19 Variables are extracted from the input coordinates coarse grid and 20 interpolated to create fine coordinates files. 21 22 2- program to create bathymetry file: 23 24 ./create_bathy create_bathy.nam 25 26 Bathymetry could be extracted from fine grid Bathymetry file, or 27 interpolated from coarse grid Bathymetry file. 28 29 3- program to merge bathymetry file at boundaries : 30 31 ./merge_bathy merge_bathy.nam 32 33 Coarse grid Bathymetry is interpolated on fine grid. 34 Then fine Bathymetry and refined coarse bathymetry are merged at 35 boundaries. 36 37 4- program to create restart file : 38 39 ./create_restart create_restart.nam 40 41 Variables are read from restart file, or standard output. 42 Then theses variables are interpolated on fine grid. 43 Finally table are split over new decomposition. 44 45 5- program to create boundary files (OBC) : 46 47 ./create_boundary create_boundary.nam 48 49 Variables are read from standard output. 50 Then theses variables are interpolated on fine grid boundaries. 7 run ./TOOLS/SIREN/doc/latex/gmake and open ./TOOLS/SIREN/doc/latex/refman.pdf -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/boundary.f90
r6393 r7025 1529 1529 !> @author J.Paul 1530 1530 !> @date November, 2013 - Initial Version 1531 ! 1531 !> @date June, 2016 1532 !> - Bug fix: take into account that boundaries are compute on T point, 1533 !> but expressed on U,V point 1534 !> 1532 1535 !> @param[inout] td_bdy boundary structure 1533 1536 !> @param[in] td_var variable structure … … 1552 1555 il_max(jp_west )=td_var%t_dim(2)%i_len 1553 1556 1554 il_maxindex(jp_north)=td_var%t_dim(2)%i_len-ip_ghost 1557 ! index expressed on U,V point, move on T point. 1558 il_maxindex(jp_north)=td_var%t_dim(2)%i_len-ip_ghost+1 1555 1559 il_maxindex(jp_south)=td_var%t_dim(2)%i_len-ip_ghost 1556 il_maxindex(jp_east )=td_var%t_dim(1)%i_len-ip_ghost 1560 il_maxindex(jp_east )=td_var%t_dim(1)%i_len-ip_ghost+1 1557 1561 il_maxindex(jp_west )=td_var%t_dim(1)%i_len-ip_ghost 1558 1562 -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/create_bathy.f90
r6393 r7025 22 22 !> <br/> 23 23 !> \image html bathy_40.png 24 !> \image latex bathy_30.png 24 !> <center>\image latex bathy_30.png 25 !> </center> 25 26 !> 26 27 !> @note -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/create_boundary.F90
r6393 r7025 26 26 !> <br/> 27 27 !> \image html boundary_NEATL36_70.png 28 !> \image latex boundary_NEATL36_70.png 28 !> <center>\image latex boundary_NEATL36_70.png 29 !> </center> 29 30 !> 30 31 !> @note … … 65 66 !> 66 67 !> * _vertical grid namelist (namzgr)_:<br/> 67 !> - dn_pp_to_be_computed :68 68 !> - dn_ppsur : 69 69 !> - dn_ppa0 : … … 161 161 !> - cn_north='index1(width),first1:last1|index2,first2:last2' 162 162 !> \image html boundary_50.png 163 !> \image latex boundary_50.png 163 !> <center>\image latex boundary_50.png 164 !> </center> 164 165 !> - cn_south : south boundary indices on fine grid 165 166 !> - cn_east : east boundary indices on fine grid … … 198 199 !> @date January, 2016 199 200 !> - same process use for variable extracted or interpolated from input file. 201 !> 202 !> @todo 203 !> - rewitre using meshmask instead of bathymetry and coordinates files. 200 204 !> 201 205 !> @note Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 396 400 397 401 !namzgr 398 REAL(dp) :: dn_pp_to_be_computed = 0._dp399 402 REAL(dp) :: dn_ppsur = -3958.951371276829_dp 400 403 REAL(dp) :: dn_ppa0 = 103.953009600000_dp … … 457 460 458 461 NAMELIST /namzgr/ & 459 & dn_pp_to_be_computed, &460 462 & dn_ppsur, & 461 463 & dn_ppa0, & -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/create_coord.f90
r6393 r7025 76 76 !> 77 77 !> * _nesting namelist (namnst)_:<br/> 78 !> you could define sub domain with coarse grid indices or with coordinates. 78 79 !> - in_imin0 : i-direction lower left point indice 79 80 !> of coarse grid subdomain to be used … … 84 85 !> - in_jmax0 : j-direction upper right point indice 85 86 !> of coarse grid subdomain to be used 87 !> - rn_lonmin0 : lower left longitude of coarse grid subdomain to be used 88 !> - rn_lonmax0 : upper right longitude of coarse grid subdomain to be used 89 !> - rn_latmin0 : lower left latitude of coarse grid subdomain to be used 90 !> - rn_latmax0 : upper right latitude of coarse grid subdomain to be used 86 91 !> - in_rhoi : refinement factor in i-direction 87 92 !> - in_rhoj : refinement factor in j-direction<br/> 88 93 !> 89 94 !> \image html grid_zoom_40.png 90 !> \image latex grid_zoom_40.png 95 !> <center> \image latex grid_zoom_40.png 96 !> </center> 91 97 !> 92 98 !> * _output namelist (namout)_: … … 102 108 !> @date September, 2015 103 109 !> - manage useless (dummy) variable, attributes, and dimension 110 !> @date September, 2016 111 !> - allow to use coordinate to define subdomain 104 112 !> 105 113 !> @note Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 139 147 INTEGER(i4) :: il_nvar 140 148 INTEGER(i4) :: il_ew 149 INTEGER(i4) :: il_imin0 150 INTEGER(i4) :: il_imax0 151 INTEGER(i4) :: il_jmin0 152 INTEGER(i4) :: il_jmax0 153 141 154 INTEGER(i4) , DIMENSION(ip_maxdim) :: il_rho 155 INTEGER(i4) , DIMENSION(2) :: il_index 142 156 INTEGER(i4) , DIMENSION(2,2,ip_npoint) :: il_offset 143 157 … … 177 191 178 192 !namnst 193 REAL(sp) :: rn_lonmin0 = -360. 194 REAL(sp) :: rn_lonmax0 = -360. 195 REAL(sp) :: rn_latmin0 = -360. 196 REAL(sp) :: rn_latmax0 = -360. 179 197 INTEGER(i4) :: in_imin0 = 0 180 198 INTEGER(i4) :: in_imax0 = 0 … … 207 225 208 226 NAMELIST /namnst/ & ! nesting namelist 227 & rn_lonmin0, & !< lower left coarse grid longitude 228 & rn_lonmax0, & !< upper right coarse grid longitude 229 & rn_latmin0, & !< lower left coarse grid latitude 230 & rn_latmax0, & !< upper right coarse grid latitude 209 231 & in_imin0, & !< i-direction lower left point indice 210 232 & in_imax0, & !< i-direction upper right point indice … … 301 323 302 324 ! check nesting parameters 303 IF( in_imin0 < 0 .OR. in_imax0 < 0 .OR. in_jmin0 < 0 .OR. in_jmax0 < 0)THEN 325 il_index(:)=0 326 IF( rn_lonmin0 >= -180. .AND. rn_lonmin0 <= 360 .AND. & 327 & rn_latmin0 >= -90. .AND. rn_latmin0 <= 90. )THEN 328 329 il_index(:)=grid_get_closest(tl_coord0, & 330 & REAL(rn_lonmin0,dp), REAL(rn_latmin0,dp), & 331 & cd_pos='ll') 332 il_imin0=il_index(1) 333 il_jmin0=il_index(2) 334 ELSE 335 il_imin0=in_imin0 336 il_jmin0=in_jmin0 337 ENDIF 338 339 il_index(:)=0 340 IF( rn_lonmax0 >= -180. .AND. rn_lonmax0 <= 360 .AND. & 341 & rn_latmax0 >= -90. .AND. rn_latmax0 <= 90. )THEN 342 il_index(:)=grid_get_closest(tl_coord0, & 343 & REAL(rn_lonmax0,dp), REAL(rn_latmax0,dp), & 344 & cd_pos='ur') 345 il_imax0=il_index(1) 346 il_jmax0=il_index(2) 347 ELSE 348 il_imax0=in_imax0 349 il_jmax0=in_jmax0 350 ENDIF 351 352 ! forced indices for east west cyclic domain 353 IF( rn_lonmin0 == rn_lonmax0 .AND. & 354 & rn_lonmin0 /= -360. )THEN 355 il_imin0=0 356 il_imax0=0 357 ENDIF 358 359 IF( il_imin0 < 0 .OR. il_imax0 < 0 .OR. il_jmin0 < 0 .OR. il_jmax0 < 0)THEN 304 360 CALL logger_fatal("CREATE COORD: invalid points indices."//& 305 361 & " check namelist "//TRIM(cl_namelist)) … … 318 374 319 375 ! check domain validity 320 CALL grid_check_dom(tl_coord0, i n_imin0, in_imax0, in_jmin0, in_jmax0 )376 CALL grid_check_dom(tl_coord0, il_imin0, il_imax0, il_jmin0, il_jmax0 ) 321 377 322 378 ! compute domain 323 379 tl_dom=dom_init( tl_coord0, & 324 & i n_imin0, in_imax0,&325 & i n_jmin0, in_jmax0 )380 & il_imin0, il_imax0,& 381 & il_jmin0, il_jmax0 ) 326 382 327 383 ! add extra band (if need be) to compute interpolation -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/create_restart.f90
r6393 r7025 62 62 !> 63 63 !> * _vertical grid namelist (namzgr)_:<br/> 64 !> - dn_pp_to_be_computed : 65 !> - dn_ppsur : 66 !> - dn_ppa0 : 67 !> - dn_ppa1 : 68 !> - dn_ppa2 : 69 !> - dn_ppkth : 70 !> - dn_ppkth2 : 71 !> - dn_ppacr : 72 !> - dn_ppacr2 : 73 !> - dn_ppdzmin : 74 !> - dn_pphmax : 64 !> - dn_ppsur : coefficient to compute vertical grid 65 !> - dn_ppa0 : coefficient to compute vertical grid 66 !> - dn_ppa1 : coefficient to compute vertical grid 67 !> - dn_ppa2 : double tanh function parameter 68 !> - dn_ppkth : coefficient to compute vertical grid 69 !> - dn_ppkth2 : double tanh function parameter 70 !> - dn_ppacr : coefficient to compute vertical grid 71 !> - dn_ppacr2 : double tanh function parameter 72 !> - dn_ppdzmin : minimum vertical spacing 73 !> - dn_pphmax : maximum depth 75 74 !> - in_nlevel : number of vertical level 76 75 !> 76 !> @note If ppa1 and ppa0 and ppsur are undefined 77 !> NEMO will compute them from ppdzmin , pphmax, ppkth, ppacr 78 !> 77 79 !> * _partial step namelist (namzps)_:<br/> 78 !> - dn_e3zps_min : 79 !> - dn_e3zps_rat : 80 !> - dn_e3zps_min : minimum thickness of partial step level (meters) 81 !> - dn_e3zps_rat : minimum thickness ratio of partial step level 80 82 !> 81 83 !> * _variable namelist (namvar)_:<br/> … … 158 160 !> @date September, 2015 159 161 !> - manage useless (dummy) variable, attributes, and dimension 162 !> 163 !> @todo 164 !> - rewrite using meshmask instead of bathymetry and coordinates files 160 165 !> 161 166 !> @note Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 262 267 263 268 !namzgr 264 REAL(dp) :: dn_pp_to_be_computed = 0._dp265 269 REAL(dp) :: dn_ppsur = -3958.951371276829_dp 266 270 REAL(dp) :: dn_ppa0 = 103.953009600000_dp … … 316 320 317 321 NAMELIST /namzgr/ & 318 & dn_pp_to_be_computed, &319 322 & dn_ppsur, & 320 323 & dn_ppa0, & … … 402 405 ! match variable with file 403 406 tl_multi=multi_init(cn_varfile) 404 407 405 408 READ( il_fileid, NML = namnst ) 406 409 READ( il_fileid, NML = namout ) … … 592 595 !- check grid coincidence 593 596 IF( ll_sameGrid )THEN 597 il_rho(:)=1 594 598 CALL grid_check_coincidence( tl_mpp, tl_coord1, & 595 599 & il_imin1, il_imax1, & -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/docsrc/1_install.md
r6393 r7025 20 20 <b> 21 21 - @ref index 22 - @ref md_ docsrc_2_quickstart23 - @ref md_ docsrc_3_support_bug24 - @ref md_ docsrc_4_codingRules25 - @ref md_ docsrc_5_changeLog22 - @ref md_src_docsrc_2_quickstart 23 - @ref md_src_docsrc_3_support_bug 24 - @ref md_src_docsrc_4_codingRules 25 - @ref md_src_docsrc_5_changeLog 26 26 - @ref todo 27 27 </b> -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/docsrc/2_quickstart.md
r6393 r7025 7 7 Actually SIREN creates all the input files you need to run a NEMO regional configuration.<br/> 8 8 9 SIREN is composed of a set of 5Fortran programs :9 SIREN is composed of a set of 6 Fortran programs : 10 10 <ul> 11 11 <li>create_coord.f90 to create regional grid coordinates.</li> … … 16 16 This break may cause inconsistency between forcing fields at boundary and regional fields. 17 17 </li> 18 <li>create_meshmask.f90 to create meshmask file(s) which contain(s) all the ocean domain informations.</li> 18 19 <li>create_restart.f90 to create initial state file from coarse grid restart 19 20 or standard outputs. … … 35 36 Here after we briefly describe how to use each programs, 36 37 and so how to create your own regional configuration. 37 @note A set of GLORYS files (global reanalysis on *ORCA025* 38 grid), as well as examples of namelists are available in dods repository.<br/> 39 You could create and forced a first release of your own regional configuration, 40 with those files. 38 @note As demonstrator for a first start a set of GLORYS files (global reanalysis on *ORCA025* grid), as well as examples of namelists are available [here](https://cloud.mercator-ocean.fr/public.php?service=files&t=877fb1b6e4f589340fc0df1ea6a53228). 39 41 40 <!-- ###################################################################### --> 42 41 # Create coordinates file # {#coord} … … 121 120 example: ORCA05</dd> 122 121 </dl> 123 @sa For more information see @ref md_ docsrc_6_perio122 @sa For more information see @ref md_src_docsrc_6_perio 124 123 </dd> 125 124 </dl> … … 150 149 ~~~~~~~~~~~ 151 150 @image html grid_zoom_60.png 152 @image latex grid_zoom_40.png 151 <center>@image latex grid_zoom_40.png 152 </center> 153 153 <!-- @note ghost cells all around the grid are not shown here. --> 154 154 … … 167 167 ~~~~~~~~~~~ 168 168 @image html grid_glob_over_30.png 169 @image latex grid_glob_over_20.png 169 <center>@image latex grid_glob_over_20.png 170 </center> 170 171 <!-- @note in blue, the east-west overlap band of ORCA grid. --> 171 172 … … 184 185 ~~~~~~~~~~~ 185 186 @image html grid_glob_band_30.png 186 @image latex grid_glob_band_20.png 187 <center>@image latex grid_glob_band_20.png 188 </center> 187 189 188 190 </ul> … … 361 363 362 364 <!-- ###################################################################### --> 365 # Create meshmask (ocean domain informations) # {#meshmask} 366 367 368 Depending on the vertical grid you choose to use, NEMO may not see the bathymetry as you defined it just before. To get the ocean domain informations as seen by NEMO, SIREN allows you to create the meshmask file(s) which contain(s) all those informations. 369 370 To create this new meshmask file(s), you have to run : 371 ~~~~~~~~~~~~~~~~~~ 372 ./SIREN/create_meshmask.exe create_meshmask.nam 373 ~~~~~~~~~~~~~~~~~~ 374 375 Here after is an example of namelist for *create_meshmask.exe*.<br/> 376 In this example, you create one meshmask file named *mesh_mask.nc*.<br/> 377 It uses coordinates file *coord_fine.nc* to define horizontal grid. 378 and defines z-coordinate with partial steps. 379 The minimum depth of the final Bathymetry is 10m. 380 ~~~~~~~~~~~ 381 &namlog 382 / 383 384 &namcfg 385 cn_varcfg = "PATH/NEMOGCM/TOOLS/SIREN/cfg/variable.cfg" 386 / 387 388 &namin 389 cn_bathy = "PATH/bathy_merged.nc" 390 cn_coord = "PATH/coord_fine.nc" 391 in_perio = 4 392 / 393 394 &namhgr 395 in_mshhgr = 0 396 / 397 398 &namzgr 399 ln_zps = .TRUE. 400 in_nlevel= 75 401 / 402 403 &namdmin 404 dn_hmin=10. 405 / 406 407 &namzco 408 dn_ppsur = -3958.951371276829 409 dn_ppa0 = 103.953009600000 410 dn_ppa1 = 2.415951269000 411 dn_ppkth = 15.351013700000 412 dn_ppacr = 7.000000000000 413 dn_ppdzmin = 6. 414 dn_pphmax = 5750. 415 ln_dbletanh= .TRUE. 416 dn_ppa2 = 100.760928500000 417 dn_ppkth2 = 48.029893720000 418 dn_ppacr2 = 13.000000000000 419 / 420 421 &namzps 422 dn_e3zps_min = 25. 423 dn_e3zps_rat = 0.2 424 / 425 426 &namsco 427 / 428 429 &namcla 430 / 431 432 &namlbc 433 / 434 435 &namwd 436 / 437 438 &namgrd 439 / 440 441 &namzoom 442 / 443 444 &namout 445 in_msh = 1 446 / 447 ~~~~~~~~~~~ 448 449 Let's get describe this namelist more accurately.<br/> 450 451 As previously, we have the **namlog** and **namcfg** describe above.<br/> 452 453 The **namin** sub-namelist defines the Bathymetry to be used. 454 Mainly SIREN need Bathymetry to create meshmask. 455 Here we also read coordinates directly on a file. 456 @note here again you could add the *in_perio* parameter if need be i.e. if your 457 Bathymetry was not created by SIREN.<br/> 458 @note By default SIREN suppress closed sea/lake from the ORCA domain. 459 460 The **namhgr** sub-namelist defines the horizontal grid. 461 the type of horizontal mesh is choose between :<ul> 462 <li> in_mshhgr=0 : curvilinear coordinate on the sphere read in coordinate.nc</li> 463 <li> in_mshhgr=1 : geographical mesh on the sphere with regular grid-spacing</li> 464 <li> in_mshhgr=2 : f-plane with regular grid-spacing</li> 465 <li> in_mshhgr=3 : beta-plane with regular grid-spacing</li> 466 <li> in_mshhgr=4 : Mercator grid with T/U point at the equator</li> 467 <li> in_mshhgr=5 : beta-plane with regular grid-spacing and rotated domain (GYRE configuration)</li> 468 </ul> 469 470 The **namzgr** sub-namelist allows to choose the type of vertical grid (z-coordinate full steps, partial steps, sigma or hybrid coordinates) and the number of level. 471 472 The **namdmin** sub-namelist dfines the minimum ocean depth. It could be defines in meter (>0) or in number of level (<0). 473 474 The **namzco** sub-namelist defines respectively parameters to compute z-coordinate vertical grid (**needed for all type of vertical grid**) 475 <!-- By default, those parameters are defined the same way than in GLORYS (i.e. 75 vertical levels).<br/> --> 476 477 The **namzps** sub-namelist defines extra parameters needed to define z-coordinates partial steps. 478 479 The **namsco** sub-namelist defines extra parameters needed to define sigma or hybrid coordinates (not needed here). 480 481 The **namcla** sub-namelist defines cross land advection for exchanges through some straits only used for ORCA2 (see namgrd). 482 483 The **namlbc** sub-namelist defines lateral boundary conditions at the coast. It is needed to modify the fmask. 484 485 The **namwd** sub-namelist defines the wetting and drying parameters if activated (see namzgr sub-namelist) 486 487 The **namgrd** and **namzoom** sub-namelists define grid configuration. Those namelist only activated local correction. 488 489 Finally, this **namout** sub-namelist defines the number output file(s).<br/> 490 491 @sa For more information about how to create meshmask, see create_meshmask.f90 492 493 <!-- ###################################################################### --> 363 494 # Create initial state # {#restart} 364 495 … … 442 573 Finally, this **namout** sub-namelist defines the output files.<br/> 443 574 Here we ask for output on 81 processors, with *restart_out.nc* as file "basename".<br/> 444 So SIREN computes the optimal layout for 81 p orcessors575 So SIREN computes the optimal layout for 81 processors 445 576 available,<br/> 446 and split restart on output files named *restart_out_num.nc*, where *num* is the p orc number.577 and split restart on output files named *restart_out_num.nc*, where *num* is the proc number. 447 578 448 579 @note SIREN could also create the other fields you may need for … … 592 723 <b> 593 724 - @ref index 594 - @ref md_ docsrc_1_install595 - @ref md_ docsrc_2_quickstart596 - @ref md_ docsrc_3_support_bug597 - @ref md_ docsrc_4_codingRules598 - @ref md_ docsrc_5_changeLog725 - @ref md_src_docsrc_1_install 726 - @ref md_src_docsrc_2_quickstart 727 - @ref md_src_docsrc_3_support_bug 728 - @ref md_src_docsrc_4_codingRules 729 - @ref md_src_docsrc_5_changeLog 599 730 - @ref todo 600 731 </b> -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/docsrc/3_support_bug.md
r6393 r7025 20 20 <b> 21 21 - @ref index 22 - @ref md_ docsrc_1_install23 - @ref md_ docsrc_2_quickstart24 - @ref md_ docsrc_3_support_bug25 - @ref md_ docsrc_4_codingRules26 - @ref md_ docsrc_5_changeLog22 - @ref md_src_docsrc_1_install 23 - @ref md_src_docsrc_2_quickstart 24 - @ref md_src_docsrc_3_support_bug 25 - @ref md_src_docsrc_4_codingRules 26 - @ref md_src_docsrc_5_changeLog 27 27 - @ref todo 28 28 </b> -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/docsrc/4_codingRules.md
r6393 r7025 15 15 _GET_COMMAND_ARGUMENT_.<br/> 16 16 There exist no equivalent for those Fortran 03 intrinsec functions in Fortran 17 95.<br/> At least none convenient for compilers tested (see @ref md_ docsrc_1_install).17 95.<br/> At least none convenient for compilers tested (see @ref md_src_docsrc_1_install). 18 18 19 19 # Free Form Source {#free} … … 93 93 <b> 94 94 - @ref index 95 - @ref md_ docsrc_1_install96 - @ref md_ docsrc_2_quickstart97 - @ref md_ docsrc_3_support_bug98 - @ref md_ docsrc_5_changeLog95 - @ref md_src_docsrc_1_install 96 - @ref md_src_docsrc_2_quickstart 97 - @ref md_src_docsrc_3_support_bug 98 - @ref md_src_docsrc_5_changeLog 99 99 - @ref todo 100 100 </b> -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/docsrc/5_changeLog.md
- Property svn:keywords set to Revision Date
r6393 r7025 3 3 @tableofcontents 4 4 5 # Release $Revision$ 6 Initial release (2016-03-17) 5 # Release $Date:: $ ($Revision$) 7 6 7 ## New Features 8 - create_meshmask.F90 program to create meshmask from coordinates and bathymetry files. 8 9 ## Changes 9 ## New Features 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 cdf 10 13 ## Bug fixes 14 - boundary.F90:boundary_check: take into account that boundaries are compute on T point, but expressed on U,V point 15 16 # Initial Release 2016-03-17 11 17 12 18 <HR> 13 19 <b> 14 20 - @ref index 15 - @ref md_ docsrc_1_install16 - @ref md_ docsrc_2_quickstart17 - @ref md_ docsrc_3_support_bug18 - @ref md_ docsrc_4_codingRules21 - @ref md_src_docsrc_1_install 22 - @ref md_src_docsrc_2_quickstart 23 - @ref md_src_docsrc_3_support_bug 24 - @ref md_src_docsrc_4_codingRules 19 25 - @ref todo 20 26 </b> -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/docsrc/6_perio.md
r6393 r7025 6 6 <dd>ghost cells (solid walls) are imposed at all model boundaries.</dd> 7 7 @image html perio0_20.png 8 @image latex perio0_20.png 8 <center>@image latex perio0_20.png 9 </center> 9 10 <dt>cyclic east-west boundary (in_perio=1)</dt> 10 11 <dd>first and last rows are closed, whilst the first column is set to the value of the last-but-one column and the last column to the value of the second one.</dd> 11 12 @image html perio1_20.png 12 @image latex perio1_20.png 13 <center>@image latex perio1_20.png 14 </center> 13 15 <dt>symmetric boundary condition across the equator. (in_perio=2)</dt> 14 16 <dd>last row, and first and last columns are closed. </dd> 15 17 @image html perio2_20.png 16 @image latex perio2_20.png 18 <center>@image latex perio2_20.png 19 </center> 17 20 <dt>North fold boundary with a T -point pivot (in_perio=3)</dt> 18 21 <dd>first row, and first and last columns are closed. </dd> 19 22 @image html perio3_20.png 20 @image latex perio3_20.png 23 <center>@image latex perio3_20.png 24 </center> 21 25 <dt>North fold boundary with a T -point pivot and cyclic east-west boundary (in_perio=4)</dt> 22 26 <dd>first row is closed. The first column is set to the value of the last-but-one column and the last column to the value of the second one. </dd> 23 27 @image html perio4_20.png 24 @image latex perio4_20.png 28 <center>@image latex perio4_20.png 29 </center> 25 30 <dt>North fold boundary with a F -point pivot (in_perio=5)</dt> 26 31 <dd>first row, and first and last columns are closed. </dd> 27 32 @image html perio5_20.png 28 @image latex perio5_20.png 33 <center>@image latex perio5_20.png 34 </center> 29 35 <dt>North fold boundary with a F -point pivot and cyclic east-west boundary (in_perio=6)</dt> 30 36 <dd>first row is closed. The first column is set to the value of the last-but-one column and the last column to the value of the second one.</dd> 31 37 @image html perio6_20.png 32 @image latex perio6_20.png 38 <center>@image latex perio6_20.png 39 </center> 33 40 </dl> 34 41 @sa For more information about NEMO periodicity, see _Model Boundary Condition_ chapter in [NEMO documentation](http://www.nemo-ocean.eu/About-NEMO/Reference-manuals)) -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/docsrc/main.dox
r6393 r7025 2 2 @mainpage About 3 3 4 SIREN is a software to create regional configuration with [NEMO](http://www.nemo-ocean.eu).<br/> 5 Actually SIREN create input files needed for a basic NEMO configuration.<br/> 4 SIREN is a software to set up regional configuration with [NEMO](http://www.nemo-ocean.eu).<br/> 5 Actually SIREN creates the input files you need to run a NEMO regional configuration.<br/> 6 7 SIREN allows you to create your own regional configuration embedded in a wider one.<br/> 6 8 7 SIREN allows you to create your own regional configuration embedded in a wider one.<br/> 8 In order to help you, a set of GLORYS files (global reanalysis on ORCA025 grid), as well as examples 9 of namelists are available in dods repository. 9 To know how to install SIREN see @ref md_src_docsrc_1_install. 10 10 11 @note This software was created, and is maintain by the Configuration Manager Working Group, composed 12 of NEMO system team members. 13 14 To know how to install SIREN see @ref md_docsrc_1_install. 15 16 You could find a tutorial for a quick start with SIREN in @ref md_docsrc_2_quickstart.<br/> 11 You could find a tutorial for a quick start with SIREN in @ref md_src_docsrc_2_quickstart.<br/> 17 12 For more information about how to use each component of SIREN 18 13 - see create_coord.f90 to create fine grid coordinate file 19 14 - see create_bathy.f90 to create fine grid bathymetry 20 15 - see merge_bathy.f90 to merge fine grid bathymetry 16 - see create_meshmask.f90 to create mesh mask grid 21 17 - see create_restart.f90 to create initial state file, or other fields. 22 18 - see create_boundary.F90 to create boundary condition … … 24 20 <HR> 25 21 <b> 26 - @ref md_ docsrc_1_install27 - @ref md_ docsrc_2_quickstart28 - @ref md_ docsrc_3_support_bug29 - @ref md_ docsrc_4_codingRules30 - @ref md_ docsrc_5_changeLog22 - @ref md_src_docsrc_1_install 23 - @ref md_src_docsrc_2_quickstart 24 - @ref md_src_docsrc_3_support_bug 25 - @ref md_src_docsrc_4_codingRules 26 - @ref md_src_docsrc_5_changeLog 31 27 - @ref todo 32 28 </b> -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/global.f90
r6393 r7025 101 101 REAL(dp) , PARAMETER :: dp_fill_i4=NF90_FILL_INT !< INT fill value 102 102 REAL(dp) , PARAMETER :: dp_fill_sp=NF90_FILL_FLOAT !< real fill value 103 REAL(dp) , PARAMETER :: dp_fill=NF90_FILL_DOUBLE !< double fill value103 REAL(dp) , PARAMETER :: dp_fill=NF90_FILL_DOUBLE !< double fill value 104 104 105 105 INTEGER(i4) , PARAMETER :: ip_npoint=4 -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/grid.f90
r6393 r7025 218 218 !> @date February, 2015 219 219 !> - add function grid_fill_small_msk to fill small domain inside bigger one 220 !> @ February, 2016220 !> @date February, 2016 221 221 !> - improve way to check coincidence (bug fix) 222 222 !> - manage grid cases for T,U,V or F point, with even or odd refinment (bug fix) 223 !> @date April, 2016 224 !> - add function to get closest grid point using coarse grid coordinates strucutre 223 225 ! 224 226 !> @note Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 271 273 PRIVATE :: grid__get_coarse_index_cc ! - using coarse and fine grid array of lon,lat 272 274 275 ! return closest coarse grid point from another point 276 PRIVATE :: grid__get_closest_str ! - using coarse grid coordinates strucutre 277 PRIVATE :: grid__get_closest_arr ! - using coarse grid array of lon,lat 278 273 279 ! get offset between fine and coarse grid 274 280 PRIVATE :: grid__get_fine_offset_ff ! - using coarse and fine grid coordinates files … … 333 339 MODULE PROCEDURE grid__get_ghost_mpp 334 340 END INTERFACE grid_get_ghost 341 342 INTERFACE grid_get_closest 343 MODULE PROCEDURE grid__get_closest_str 344 MODULE PROCEDURE grid__get_closest_arr 345 END INTERFACE grid_get_closest 335 346 336 347 INTERFACE grid_get_coarse_index … … 1365 1376 END SELECT 1366 1377 ELSE 1378 il_perio=-1 1367 1379 ! check periodicity 1368 1380 IF(ANY(td_var%d_value( 1 ,:,1,1)/=td_var%d_fill).OR.& … … 3020 3032 !> 3021 3033 !> @author J.Paul 3034 !> @date April, 2016 - Initial Version 3035 ! 3036 !> @param[in] td_coord0 coarse grid coordinate mpp structure 3037 !> @param[in] dd_lon1 fine grid longitude 3038 !> @param[in] dd_lat1 fine grid latitude 3039 !> @param[in] cd_pos relative position of grid point from point 3040 !> @param[in] dd_fill fill value 3041 !> @return coarse grid indices of closest point of fine grid point 3042 !------------------------------------------------------------------- 3043 FUNCTION grid__get_closest_str( td_coord0, dd_lon1, dd_lat1, cd_pos, dd_fill ) & 3044 & RESULT(id_res) 3045 3046 IMPLICIT NONE 3047 ! Argument 3048 TYPE(TMPP ) , INTENT(IN) :: td_coord0 3049 REAL(dp), INTENT(IN) :: dd_lon1 3050 REAL(dp), INTENT(IN) :: dd_lat1 3051 CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: cd_pos 3052 REAL(dp), INTENT(IN), OPTIONAL :: dd_fill 3053 3054 ! function 3055 INTEGER(i4), DIMENSION(2) :: id_res 3056 3057 ! local variable 3058 CHARACTER(LEN=lc) :: cl_point 3059 CHARACTER(LEN=lc) :: cl_name 3060 3061 INTEGER(i4) :: il_ind 3062 3063 REAL(dp) , DIMENSION(:,:), ALLOCATABLE :: dl_lon0 3064 REAL(dp) , DIMENSION(:,:), ALLOCATABLE :: dl_lat0 3065 3066 TYPE(TVAR) :: tl_lon0 3067 TYPE(TVAR) :: tl_lat0 3068 TYPE(TMPP) :: tl_coord0 3069 !---------------------------------------------------------------- 3070 3071 id_res(:)=-1 3072 cl_point='T' 3073 3074 ! copy structure 3075 tl_coord0=mpp_copy(td_coord0) 3076 3077 IF( .NOT. ASSOCIATED(tl_coord0%t_proc) )THEN 3078 3079 CALL logger_error("GRID GET CLOSEST: decompsition of mpp "//& 3080 & "file "//TRIM(tl_coord0%c_name)//" not defined." ) 3081 3082 ELSE 3083 3084 ! open mpp files 3085 CALL iom_mpp_open(tl_coord0) 3086 3087 ! read coarse longitue and latitude 3088 WRITE(cl_name,*) 'longitude_'//TRIM(cl_point) 3089 il_ind=var_get_id(tl_coord0%t_proc(1)%t_var(:), cl_name) 3090 IF( il_ind == 0 )THEN 3091 CALL logger_warn("GRID GET CLOSEST: no variable "//& 3092 & TRIM(cl_name)//"in file "//TRIM(tl_coord0%c_name)//". & 3093 & try to use longitude.") 3094 WRITE(cl_name,*) 'longitude' 3095 ENDIF 3096 tl_lon0=iom_mpp_read_var(tl_coord0, TRIM(cl_name)) 3097 3098 WRITE(cl_name,*) 'latitude_'//TRIM(cl_point) 3099 il_ind=var_get_id(tl_coord0%t_proc(1)%t_var(:), cl_name) 3100 IF( il_ind == 0 )THEN 3101 CALL logger_warn("GRID GET CLOSEST: no variable "//& 3102 & TRIM(cl_name)//"in file "//TRIM(tl_coord0%c_name)//". & 3103 & try to use latitude.") 3104 WRITE(cl_name,*) 'latitude' 3105 ENDIF 3106 tl_lat0=iom_mpp_read_var(tl_coord0, TRIM(cl_name)) 3107 3108 ! close mpp files 3109 CALL iom_mpp_close(tl_coord0) 3110 3111 ALLOCATE(dl_lon0(tl_coord0%t_dim(jp_I)%i_len-tl_coord0%i_ew, & 3112 & tl_coord0%t_dim(jp_J)%i_len) ) 3113 ALLOCATE(dl_lat0(tl_coord0%t_dim(jp_I)%i_len-tl_coord0%i_ew, & 3114 & tl_coord0%t_dim(jp_J)%i_len) ) 3115 3116 dl_lon0(:,:)=tl_lon0%d_value(tl_coord0%i_ew+1:,:,1,1) 3117 dl_lat0(:,:)=tl_lat0%d_value(tl_coord0%i_ew+1:,:,1,1) 3118 3119 id_res(:)=grid_get_closest( dl_lon0, dl_lat0, dd_lon1, dd_lat1, cd_pos, dd_fill ) 3120 3121 DEALLOCATE(dl_lon0, dl_lat0) 3122 CALL var_clean(tl_lon0) 3123 CALL var_clean(tl_lat0) 3124 CALL mpp_clean(tl_coord0) 3125 3126 ENDIF 3127 3128 END FUNCTION grid__get_closest_str 3129 !------------------------------------------------------------------- 3130 !> @brief This function return grid indices of the closest point 3131 !> from point (lon1,lat1) 3132 !> 3133 !> @details 3134 !> 3135 !> @note overlap band should have been already removed from coarse grid array 3136 !> of longitude and latitude, before running this function 3137 !> 3138 !> if you add cd_pos argument, you could choice to return closest point at 3139 !> - lower left (ll) of the point 3140 !> - lower right (lr) of the point 3141 !> - upper left (ul) of the point 3142 !> - upper right (ur) of the point 3143 !> - lower (lo) of the point 3144 !> - upper (up) of the point 3145 !> - left (le) of the point 3146 !> - right (ri) of the point 3147 !> 3148 !> @author J.Paul 3022 3149 !> @date November, 2013 - Initial Version 3023 3150 !> @date February, 2015 … … 3034 3161 !> @return coarse grid indices of closest point of fine grid point 3035 3162 !------------------------------------------------------------------- 3036 FUNCTION grid_ get_closest( dd_lon0, dd_lat0, dd_lon1, dd_lat1, cd_pos, dd_fill )3163 FUNCTION grid__get_closest_arr( dd_lon0, dd_lat0, dd_lon1, dd_lat1, cd_pos, dd_fill ) 3037 3164 IMPLICIT NONE 3038 3165 ! Argument … … 3045 3172 3046 3173 ! function 3047 INTEGER(i4), DIMENSION(2) :: grid_ get_closest3174 INTEGER(i4), DIMENSION(2) :: grid__get_closest_arr 3048 3175 3049 3176 ! local variable … … 3261 3388 END SELECT 3262 3389 ENDIF 3263 grid_ get_closest(:)=MINLOC(dl_dist(:,:),dl_dist(:,:)/=NF90_FILL_DOUBLE)3264 3265 grid_ get_closest(1)=grid_get_closest(1)+il_iinf-13266 grid_ get_closest(2)=grid_get_closest(2)+il_jinf-13390 grid__get_closest_arr(:)=MINLOC(dl_dist(:,:),dl_dist(:,:)/=NF90_FILL_DOUBLE) 3391 3392 grid__get_closest_arr(1)=grid__get_closest_arr(1)+il_iinf-1 3393 grid__get_closest_arr(2)=grid__get_closest_arr(2)+il_jinf-1 3267 3394 3268 3395 DEALLOCATE( dl_dist ) 3269 3396 DEALLOCATE( dl_lon0 ) 3270 3397 3271 END FUNCTION grid_ get_closest3398 END FUNCTION grid__get_closest_arr 3272 3399 !------------------------------------------------------------------- 3273 3400 !> @brief This function compute the distance between a point A and grid points. … … 4647 4774 4648 4775 IF( ll_even )THEN 4776 4649 4777 ! look for variable value on domain for F point 4650 4778 il_ind=var_get_index(tl_coord0%t_proc(1)%t_var(:), 'longitude_F') -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/iom.f90
r5617 r7025 157 157 !> @author J.Paul 158 158 !> @date November, 2013 - Initial Version 159 ! 159 !> @date October, 2016 160 !> - open cdf4 file as cdf 161 !> 160 162 !> @param[inout] td_file file structure 161 163 !------------------------------------------------------------------- … … 172 174 SELECT CASE(TRIM(ADJUSTL(fct_lower(td_file%c_type)))) 173 175 174 CASE('cdf' )176 CASE('cdf','cdf4') 175 177 CALL iom_cdf_open(td_file) 176 178 CASE('dimg') -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/iom_cdf.f90
r6393 r7025 652 652 & " IOM CDF READ DIM: no id associated to file "//TRIM(td_file%c_name)) 653 653 654 ELSE 654 ELSE 655 655 656 656 CALL logger_trace( & -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/mpp.f90
r6393 r7025 266 266 PRIVATE :: mpp__copy_arr ! copy array of mpp structure 267 267 PRIVATE :: mpp__get_use_unit ! get sub domains to be used (which cover "zoom domain") 268 PRIVATE :: mpp__init_mask ! initialise mpp structure, given file name268 PRIVATE :: mpp__init_mask ! initialise mpp structure, given mask array 269 269 PRIVATE :: mpp__init_var ! initialise mpp structure, given variable strcuture 270 270 PRIVATE :: mpp__init_file ! initialise a mpp structure, given file structure -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/phycst.f90
r6393 r7025 49 49 REAL(dp), PARAMETER :: dp_siday = dp_day / ( 1._wp + dp_day / dp_siyea ) 50 50 51 REAL(dp), PARAMETER :: dp_delta=1.e- 651 REAL(dp), PARAMETER :: dp_delta=1.e-5 52 52 REAL(dp), PARAMETER :: dp_omega= 2._dp * dp_pi / dp_siday 53 53 END MODULE phycst -
branches/2016/dev_r6999_CONFIGMAN_1/NEMOGCM/TOOLS/SIREN/src/vgrid.f90
r6393 r7025 14 14 !> CALL vgrid_zgr_z(dd_gdepw(:), dd_gdept(:), dd_e3w(:), dd_e3t(:), 15 15 !> dd_ppkth, dd_ppkth2, dd_ppacr, dd_ppacr2, 16 !> dd_ppdzmin, dd_pphmax, dd_pp_to_be_computed,16 !> dd_ppdzmin, dd_pphmax, 17 17 !> dd_ppa0, dd_ppa1, dd_ppa2, dd_ppsur) 18 18 !> @endcode … … 26 26 !> - dd_ppdzmin see NEMO documentation 27 27 !> - dd_pphmax see NEMO documentation 28 !> - dd_pp_to_be_computed see NEMO documentation29 28 !> - dd_ppa1 see NEMO documentation 30 29 !> - dd_ppa2 see NEMO documentation … … 133 132 !> @param[in] dd_ppdzmin 134 133 !> @param[in] dd_pphmax 135 !> @param[in] dd_pp_to_be_computed136 134 !> @param[in] dd_ppa1 137 135 !> @param[in] dd_ppa2 … … 140 138 !------------------------------------------------------------------- 141 139 SUBROUTINE vgrid_zgr_z( dd_gdepw, dd_gdept, dd_e3w, dd_e3t, & 142 & dd_e3w_1d, dd_e3t_1d, &140 & dd_e3w_1d, dd_e3t_1d, & 143 141 & dd_ppkth, dd_ppkth2, dd_ppacr, dd_ppacr2, & 144 & dd_ppdzmin, dd_pphmax, dd_pp_to_be_computed,&142 & dd_ppdzmin, dd_pphmax, & 145 143 & dd_ppa0, dd_ppa1, dd_ppa2, dd_ppsur ) 146 144 IMPLICIT NONE … … 160 158 REAL(dp) , INTENT(IN ) :: dd_ppdzmin 161 159 REAL(dp) , INTENT(IN ) :: dd_pphmax 162 REAL(dp) , INTENT(IN ) :: dd_pp_to_be_computed160 REAL(dp), PARAMETER :: dp_pp_to_be_computed = NF90_FILL_DOUBLE 163 161 164 162 REAL(dp) , INTENT(IN ) :: dd_ppa0 … … 207 205 ! za0, za1, zsur are computed from ppdzmin , pphmax, ppkth, ppacr 208 206 ! 209 IF( dd_ppa1 == d d_pp_to_be_computed .AND. &210 & dd_ppa0 == d d_pp_to_be_computed .AND. &211 & dd_ppsur == d d_pp_to_be_computed ) THEN207 IF( dd_ppa1 == dp_pp_to_be_computed .AND. & 208 & dd_ppa0 == dp_pp_to_be_computed .AND. & 209 & dd_ppsur == dp_pp_to_be_computed ) THEN 212 210 dl_za1 = ( dl_zdzmin - dl_zhmax / REAL((il_jpk-1),dp) ) & 213 211 & / ( TANH((1-dl_zkth)/dl_zacr) - dl_zacr/REAL((il_jpk-1),dp) & … … 667 665 668 666 !namelist (intialise with GLORYS 75 levels parameters) 669 REAL(dp) :: dn_pp_to_be_computed = 0._dp670 667 REAL(dp) :: dn_ppsur = -3958.951371276829_dp 671 668 REAL(dp) :: dn_ppa0 = 103.9530096000000_dp … … 684 681 !---------------------------------------------------------------- 685 682 NAMELIST /namzgr/ & 686 & dn_pp_to_be_computed, &687 683 & dn_ppsur, & 688 684 & dn_ppa0, & … … 788 784 & dl_e3w_1d, dl_e3t_1d, & 789 785 & dn_ppkth, dn_ppkth2, dn_ppacr, dn_ppacr2, & 790 & dn_ppdzmin, dn_pphmax, dn_pp_to_be_computed,&786 & dn_ppdzmin, dn_pphmax, & 791 787 & dn_ppa0, dn_ppa1, dn_ppa2, dn_ppsur ) 792 788
Note: See TracChangeset
for help on using the changeset viewer.