New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
create_coordinates.f90 in trunk/UTIL/CFG_TOOLS – NEMO

source: trunk/UTIL/CFG_TOOLS/create_coordinates.f90 @ 1799

Last change on this file since 1799 was 1799, checked in by blelod, 14 years ago

First import cfg_tools see ticket #636

File size: 3.2 KB
Line 
1program create_coordinates
2!-----------------------------------------------------------
3!
4!    to create coordinates file (e.g. 1_coordinates.nc)
5!    for fine grid from coarse grid (e.g. coordinates.nc)
6!
7!   to make it we use a 4th order polynomial interpolation
8!
9!          Created by Brice Lemaire on 12/2009.
10!
11!-----------------------------------------------------------
12USE netcdf
13USE agrif_readwrite
14USE tools_brice
15!------------
16IMPLICIT NONE
17   !
18   TYPE(coordinates) :: G1, G2, G3, G4     !from agrif_types from agrif_readwrite
19   TYPE(coordinates) :: fine_grid
20   TYPE(mixed_coordinates) :: Gmix      !from agrif_types from agrif_readwrite
21   !INTEGER :: nxG1, nyG1, nxG2, nyG2, nxG3, nyG3, nxG4, nyG4
22   INTEGER :: narg,iargc
23   INTEGER :: status
24   CHARACTER(len=80) :: namelistname, Child_filename
25   !
26   !!!Read input file (namelist file)
27   narg = iargc()
28   !
29   IF (narg == 0) THEN
30      namelistname = 'namelist.input'
31   ELSE
32      CALL getarg(1,namelistname)
33   ENDIF
34   !
35   CALL read_namelist(namelistname)      !imin,imax,jmin,jmax,parent_coordinate_file
36   !
37   !!!Read parent coordinate file
38   IF((imin.LT.imax).AND.(jmin.LT.jmax)) THEN
39      status = Read_Coordinates(TRIM(parent_coordinate_file),G1)      !from agrif_readwrite
40   ELSEIF((imin.GE.imax).AND.(jmin.LT.jmax)) THEN
41      status = Read_Coordinates(TRIM(parent_coordinate_file),G1)      !from agrif_readwrite
42      status = Read_Coordinates(TRIM(parent_coordinate_file),G2)      !from agrif_readwrite
43   ELSEIF((imin.GE.imax).AND.(jmin.GE.jmax)) THEN
44     status = Read_Coordinates(TRIM(parent_coordinate_file),G1)      !from agrif_readwrite
45      status = Read_Coordinates(TRIM(parent_coordinate_file),G2)      !from agrif_readwrite
46      status = Read_Coordinates(TRIM(parent_coordinate_file),G3)      !from agrif_readwrite
47      status = Read_Coordinates(TRIM(parent_coordinate_file),G4)      !from agrif_readwrite
48   ENDIF
49   !
50   !
51   !!!Create the mixed grid with U,V,F & W values
52   IF((imin.LT.imax).AND.(jmin.LT.jmax)) THEN
53      CALL mixed_grid(G1,Gmix)
54   ELSEIF((imin.GE.imax).AND.(jmin.LT.jmax)) THEN
55      CALL mixed_grid(G1,G2,Gmix)
56   ELSEIF((imin.GE.imax).AND.(jmin.GE.jmax)) THEN
57      CALL mixed_grid(G1,G2,G3,G4,Gmix)      !from tools_brice
58   !ELSEIF()
59   ENDIF
60   
61   
62!print*, 'G1%nav_lat= '
63!DO j=jmin-1,jmax+1
64!print*, G1%nav_lat(imin-1:imax+1,j)
65!END DO 
66
67!print*, 'G1%nav_lon= '
68!DO j=jmin-1,jmax+1
69!print*, G1%nav_lon(imin-1:imax+1,j)
70!END DO
71   !
72   !!!Interpolation inside the mixed grid
73   IF(rho>1) THEN
74      CALL interp_grid(Gmix)      !from tools_brice
75   ENDIF
76   !   
77   !!!Define name of child coordinate file
78   CALL set_child_name(parent_coordinate_file,Child_filename)      !coordinates.nc -> 1_coordinates.nc
79   !
80   !!!Allocation of child grid elements
81   CALL agrif_grid_allocate(fine_grid,nx_fine,ny_fine)      !from agrif_types
82   !
83   !!!Break the mixed grid Gmix into 4 grids (G1%u, G1%v, G1%t, GI%f)
84   CALL alloc_child_grid(Gmix,fine_grid)      !from tools_brice
85   !
86print*, 'fine_grid%glamf= '
87DO j=1,ny_fine
88print*, fine_grid%glamf(:,j)
89END DO 
90    !!!Read parent coordinate file
91   status = Write_Coordinates(Child_filename,fine_grid,nx_fine,ny_fine)      !from agrif_readwrite
92   !
93end program create_coordinates
Note: See TracBrowser for help on using the repository browser.