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.
make_namelist.py in utils/tools/DOMAINcfg – NEMO

source: utils/tools/DOMAINcfg/make_namelist.py @ 13204

Last change on this file since 13204 was 13204, checked in by smasson, 4 years ago

tools: update with tools_dev_r12970_AGRIF_CMEMS

  • Property svn:executable set to *
File size: 3.5 KB
Line 
1#!/usr/bin/env python
2# coding: utf-8
3import argparse
4import sys
5
6if len(sys.argv) == 1 :
7   namfile='namelist_cfg'
8   topofile='GEBCO_2020.nc' 
9elif len(sys.argv) == 2 :
10   namfile=sys.argv[1]
11   topofile='GEBCO_2020.nc' 
12elif len(sys.argv) == 3 :
13   namfile=sys.argv[1]
14   topofile=sys.argv[2] 
15else:
16   print ("Usage : make_namelist.py namelist_cfg topofile")
17   sys.exit (1)
18
19
20Agrilefile="AGRIF_FixedGrids.in"
21grid=[]
22nbghostcells  = 3
23nbghostcells_x = nbghostcells
24nbghostcells_y = nbghostcells
25nbghostcells_y_n = nbghostcells_y
26nbghostcells_y_s = nbghostcells_y
27
28
29with open(Agrilefile) as fp:
30   line = fp.readline()
31   cnt = 1
32   while line:
33#       print("Line {}: {}".format(cnt, line.strip()))
34     #  print (line.strip(' '))
35       if len(line.split()) >=4 :
36            #print(line.split())
37            grid.append(line.split()[0:6])
38           #for word in line.split() :
39               #print(word)
40       line = fp.readline()
41       cnt += 1
42
43print("Found", len(grid), "grids", ":")
44
45f1="namelist_ref"
46
47
48
49cnt = 1
50for g in range(len(grid)) :
51   
52    f2 = open(str(cnt)+'_'+f1,'w')
53    with open(f1) as fp:
54        line = fp.readline()
55        cnt1 = 1
56        while line :
57           line = fp.readline()
58           if line.strip().startswith('jpiglo'):
59               jpi_parent=line.strip().split()[2]               
60           f2.write(line)
61           cnt1 += 1
62    f2.close()
63
64    if int(grid[cnt-1][2]) == 1:
65        nbghostcells_y_s = 0
66    if int(grid[cnt-1][1]) + int(grid[cnt-1][0]) == int(jpi_parent) :
67        nbghostcells_x = 0
68
69    jpiglo = (int(grid[cnt-1][1])-int(grid[cnt-1][0]))*int(grid[cnt-1][4]) +2 +2*nbghostcells_x
70    jpjglo = (int(grid[cnt-1][3])-int(grid[cnt-1][2]))*int(grid[cnt-1][5]) +2 + nbghostcells_y_n  + nbghostcells_y_s
71    #print( "Grid "+str(cnt)+" : jpiglo = "+cnt(jpiglo)+ "  jpjglo = "+str(jpjglo) )
72    print('Grid {:1d} : jpiglo = {:3d} , jpjglo = {:3d}'.format(cnt, jpiglo, jpjglo))
73
74    f2 = open(str(cnt)+'_'+namfile,'w')
75    with open(namfile) as fp:
76        line = fp.readline()
77        cnt1 = 1
78        while line :
79           line = fp.readline()
80           if line.strip().startswith('jperio'):
81               if int(grid[cnt-1][1]) + int(grid[cnt-1][0]) == int(jpi_parent) :
82                   line = "   jperio = 1\n"
83               else:
84                   line = "   jperio = 0\n"
85           if line.strip().startswith('nn_bathy'):
86               line = "   nn_bathy = 2\n"
87           if line.strip().startswith('nn_interp'):
88               line = "   nn_interp = 1\n"
89           if line.strip().startswith('cn_topo'):
90               line = "   cn_topo = '"+topofile+"'\n"
91           if line.strip().startswith('cn_bath'):
92               line = "   cn_bath = 'elevation'\n"
93           if line.strip().startswith('cn_lon'):
94               line = "   cn_lon = 'lon'\n"
95           if line.strip().startswith('cn_lat'):
96               line = "   cn_lat = 'lat'\n"
97           if line.strip().startswith('rn_scale'):
98               line = "   rn_scale = -1\n"
99           if line.strip().startswith('jpiglo'):
100               line = "   jpiglo = "+str(jpiglo)+"\n"
101           if line.strip().startswith('jpjglo'):
102               line = "   jpjglo = "+str(jpjglo)+"\n"
103           if line.strip().startswith('jpidta'):
104               line = "   jpidta = "+str(jpiglo)+"\n"
105           if line.strip().startswith('jpjdta'):
106               line = "   jpjdta = "+str(jpjglo)+"\n"
107           if line.strip().startswith('cp_cfg'):
108               line = "   cp_cfg = 'dumb'\n"                 
109           f2.write(line)
110           cnt1 += 1
111    f2.close()     
112    cnt +=1         
Note: See TracBrowser for help on using the repository browser.