###############
# This script write the config files needed for 1D simulation
#
# ### To Do ###
# - test with all optional arguments
#
# Maelle CD & Romain Roehrig - avril 2026 
###############


import os
import argparse


parser=argparse.ArgumentParser()
parser.add_argument("-nwave",help='wave number',metavar="N")
parser.add_argument("-nsimus",help='simulation numbers',metavar="N")
parser.add_argument("-configref",help='path + name of the reference config_.py',metavar="${path}/config_${expref}.py")
parser.add_argument("-group",help='group name',metavar="group")
parser.add_argument("-namsfx",help='name of the SURFEX namelist in /{DIRMUSC}/namelist/SURFAXE',metavar="nam.sfx.tl127.CMIP6.v642")
parser.add_argument("-bindir",help='path to the ARPCLIMAT bin directory')
parser.add_argument("-nlev",help='number of vertical level')
parser.add_argument("-dt",help='time step')
parser.add_argument("-muscdir",help='path to MUSC directory')
parser.add_argument("-prefix",help='prefix name',metavar="SCM",default="SCM")
args=parser.parse_args()

if args.nwave :
  nwave=int(args.nwave)
else :
  print("miss -nwave argument")
  sys.exit()
if args.nsimus :
  nsimus=int(args.nsimus)
else :
  print("miss -nsimus argument")
  sys.exit()
if args.configref :
  configref=args.configref
else :
  print("miss -configref argument")
  sys.exit()
if args.group :
  group=args.group
else :
  print("miss -group argument")
  sys.exit()

if args.namsfx :
  namsfx=args.namsfx
else :
  namsfx="" 

if args.bindir :
  bindir=args.bindir
else :
  bindir="" 

if args.nlev :
  nlev=int(args.nlev)
else :
  nlev=""

if args.dt :
  dt=int(args.dt)
else :
  dt=""

if args.muscdir :
  muscdir=args.muscdir
else :
  print("you should specify path toward MUSC directory in argument")
  sys.exit()


if args.prefix :
  prefix=args.prefix
else :
  prefix="SCM" 

## Begining og the script

EXPREF = configref.split('/')[-1][7:-3]
print(EXPREF)
repnamelist = os.getcwd() + f'/WAVE{nwave}/namelist'
print(repnamelist)

with open(configref) as f:
    lines = f.readlines()


for i in range(1,nsimus+1):
    fout = f'config_{EXPREF}.{prefix}-{nwave}-{i:0>3}.py'
    with open(fout, 'w') as g:
        for line in lines:
            namevar=line.split("=")[0].replace(" ","")
            if(namevar=='GROUP'):
                g.write(f"GROUP = '{group}'\n")
            elif(namevar=='ATMNAM'):
                g.write(f"ATMNAM = '{repnamelist}//namref.{prefix}-{nwave}-{i:0>3}'\n")
            elif(namevar=='SFXNAM'):
                g.write(f"SFXNAM = 'namelist/SURFEX/{namsfx}'\n") if namsfx  else g.write(line)
            elif(namevar=='bindir'):
                g.write(f"bindir = '{bindir}'\n") if bindir else g.write(line)
            elif(namevar=='vert_grid'):
                g.write(f"vert_grid = '{muscdir}/grid/L{nlev}.dta'\n") if nlev else g.write(line)
            else :
                g.write(line)
