[1799] | 1 | program 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 | !----------------------------------------------------------- |
---|
| 12 | USE netcdf |
---|
| 13 | USE agrif_readwrite |
---|
| 14 | USE tools_brice |
---|
| 15 | !------------ |
---|
| 16 | IMPLICIT 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 | ! |
---|
| 86 | print*, 'fine_grid%glamf= ' |
---|
| 87 | DO j=1,ny_fine |
---|
| 88 | print*, fine_grid%glamf(:,j) |
---|
| 89 | END DO |
---|
| 90 | !!!Read parent coordinate file |
---|
| 91 | status = Write_Coordinates(Child_filename,fine_grid,nx_fine,ny_fine) !from agrif_readwrite |
---|
| 92 | ! |
---|
| 93 | end program create_coordinates |
---|