COMPONENT_NAME = "HydroSolver"
COMPONENT_ICON = "HYDRO_small.png"
-MASCARET_FILE_TYPE = "MASCARET_EFICAS_FILE"
-MASCARET_ICON = "case1d.png"
-MASCARET_CASE_TYPE_ID = 1
-
VARS_ICON = "icon_variables.png"
-LOG_ICON = "log.png"
-LOG_TYPE_ID = 2
-
-TELEMAC2D_FILE_TYPE = "TELEMAC2D_EFICAS_FILE"
-TELEMAC2D_ICON = "case2d.png"
-TELEMAC2D_CASE_TYPE_ID = 3
-
-COUPLING1D2D_FILE_TYPE = "COUPLING1D2D_EFICAS_FILE"
-COUPLING1D2D_ICON = "case_couplage.png"
-COUPLING1D2D_CASE_TYPE_ID = 4
-
-PYTEL_FILE_TYPE = "PYTEL_EFICAS_FILE"
-PYTEL_ICON = "case_pytel.png"
-PYTEL_CASE_TYPE_ID = 5
-
-# Dictionary used to map Eficas parameters to Mascaret file types
-mascaretFileTypeDict = {"FICHIER_ABAQUES" : "abaques",
- "FICHIER_DICO" : "dico",
- "FICHIER_CASIER" : "casier",
- "FICHIER_GEOMETRIE" : "geo",
- "FICHIER_LOI" : "loi",
- "FICHIER_MOT_CLE" : "cas",
- "LISTING" : "listing",
- "FICHIER_DAMOCLE" : "damocle",
- "RESULTAT" : "res",
- "LISTING_CASIER" : "listing_casier",
- "LISTING_LIAISON" : "listing_liaison",
- "RESULTAT_CASIER" : "res_casier",
- "RESULTAT_LIAISON" : "res_liaison"
- }
+TELMA_FILE_TYPE = "TELMA_EFICAS_FILE"
+TELMA_ICON = "telma_file.png"
+TELMA_TYPE_ID = 1
+
+STUDY_FILE_TYPE = "STUDY_EFICAS_FILE"
+STUDY_ICON = "study_file.png"
+STUDY_TYPE_ID = 2
+
+PARAM_STUDY_FILE_TYPE = "PARAM_STUDY_EFICAS_FILE"
+PARAM_STUDY_ICON = "param_study_file.png"
+PARAM_STUDY_TYPE_ID = 3
def jdc_to_dict(jdc, command_list):
"""
context = {}
for command in command_list:
context[command] = _args_to_dict
- exec "parameters = " + jdc.strip() in context
+ exec("parameters = " + jdc.strip(), context)
return context['parameters']
def _args_to_dict(**kwargs):
return kwargs
def get_jdc_dict_var_as_tuple(jdc_dict, varname):
- if not jdc_dict.has_key(varname):
+ if varname not in jdc_dict:
return tuple()
- elif not isinstance(jdc_dict[varname], types.TupleType):
+ elif not isinstance(jdc_dict[varname], tuple):
return (jdc_dict[varname],)
else:
return jdc_dict[varname]
COMPONENT_ICON)
return self.hydroComp
- def find_or_create_mascaret_case(self, filePath):
+ def find_or_create_telma(self, filePath):
self.find_or_create_hydro_component()
itemName = os.path.splitext(os.path.basename(filePath))[0]
sobj = self.editor.findOrCreateItem(self.hydroComp,
- name = itemName,
- fileType = MASCARET_FILE_TYPE,
- fileName = filePath,
- icon = MASCARET_ICON,
- comment = str(filePath),
- typeId = MASCARET_CASE_TYPE_ID)
- # Create "Variables" item
- (file_list, lig_file, input_vars, output_vars) = self.get_mascaret_params_from_case(sobj)
- input_varname_list = [var["NOM"].strip() for var in input_vars]
- # Remove duplicates
- input_varname_list = list(set(input_varname_list))
- input_var_list = [study_exchange_vars.Variable(varname) for varname in input_varname_list]
- output_var_list = [study_exchange_vars.Variable(var["NOM"].strip()) for var in output_vars]
- exchange_vars = study_exchange_vars.ExchangeVariables(input_var_list, output_var_list)
- study_exchange_vars.createSObjectForExchangeVariables(sobj, exchange_vars, icon = VARS_ICON)
-
- def get_mascaret_params_from_case(self, sobj):
- jdcpath = sobj.GetComment()
- with open(jdcpath) as jdcfile:
- jdc = jdcfile.read()
- params = jdc_to_dict(jdc, ["MASCARET", "_F"])
- input_vars = get_jdc_dict_var_as_tuple(params, "VARIABLE_ENTREE")
- output_vars = get_jdc_dict_var_as_tuple(params, "VARIABLE_SORTIE")
- file_list = []
- for (key, value) in params.iteritems():
- if key == "FICHIER_LOI":
- file_list += [HYDROSOLVER_ORB.MascaretFile(f["NOM"], mascaretFileTypeDict[key]) for f in value]
- elif key != "FICHIER_LIG" and key != "VARIABLE_SORTIE" and key != "VARIABLE_ENTREE":
- file_list.append(HYDROSOLVER_ORB.MascaretFile(value, mascaretFileTypeDict[key]))
- return (file_list, params["FICHIER_LIG"], input_vars, output_vars)
-
- def add_results_to_mascaret_case(self, sobj, output_variables, output_values):
- results = self.editor.createItem(sobj, "Results")
- for (var, value) in zip(output_variables, output_values):
- self.editor.createItem(results, var, comment = unicode(value))
-
- def add_coupling_log(self, varname, log):
+ name=itemName,
+ fileType=TELMA_FILE_TYPE,
+ fileName=filePath,
+ icon=TELMA_ICON,
+ comment=str(filePath),
+ typeId=TELMA_TYPE_ID)
+
+ def find_or_create_param_study(self, filePath):
self.find_or_create_hydro_component()
- sObj = self.editor.createItem(self.hydroComp,
- name = varname,
- icon = LOG_ICON,
- typeId = LOG_TYPE_ID)
- attr = self.editor.builder.FindOrCreateAttribute(sObj,
- "AttributeParameter")
- attr.SetString("log", log)
-
- def find_or_create_telemac2d_case(self, filePath):
+ itemName = os.path.splitext(os.path.basename(filePath))[0]
+ sobj = self.editor.findOrCreateItem(self.hydroComp,
+ name=itemName,
+ fileType=PARAM_STUDY_FILE_TYPE,
+ fileName=filePath,
+ icon=PARAM_STUDY_ICON,
+ comment=str(filePath),
+ typeId=PARAM_STUDY_TYPE_ID)
+
+ def find_or_create_run_study(self, filePath):
self.find_or_create_hydro_component()
itemName = os.path.splitext(os.path.basename(filePath))[0]
sobj = self.editor.findOrCreateItem(self.hydroComp,
- name = itemName,
- fileType = TELEMAC2D_FILE_TYPE,
- fileName = filePath,
- icon = TELEMAC2D_ICON,
- comment = str(filePath),
- typeId = TELEMAC2D_CASE_TYPE_ID)
- # Create "Variables" item
+ name=itemName,
+ fileType=STUDY_FILE_TYPE,
+ fileName=filePath,
+ icon=STUDY_ICON,
+ comment=str(filePath),
+ typeId=STUDY_TYPE_ID)
+
+ def generate_study_script(self, filePath):
+ """
+ Generating a python script from the eficas info
+ """
+ # Create "Python script" item
+ from TelApy.api.generate_study import generate_study_script
with open(filePath) as jdcfile:
jdc = jdcfile.read()
params = jdc_to_dict(jdc, ["TELEMAC2D", "_F"])
- input_vars = get_jdc_dict_var_as_tuple(params, "VARIABLE_ENTREE")
- output_vars = get_jdc_dict_var_as_tuple(params, "VARIABLE_SORTIE")
- input_varname_list = [var["NOM"].strip() for var in input_vars]
- # Remove duplicates
- input_varname_list = list(set(input_varname_list))
- input_var_list = [study_exchange_vars.Variable(varname) for varname in input_varname_list]
- output_var_list = [study_exchange_vars.Variable(var["NOM"].strip()) for var in output_vars]
- exchange_vars = study_exchange_vars.ExchangeVariables(input_var_list, output_var_list)
- study_exchange_vars.createSObjectForExchangeVariables(sobj, exchange_vars, icon = VARS_ICON)
-
- def find_or_create_coupling1d2d_case(self, filePath):
- self.find_or_create_hydro_component()
- itemName = os.path.splitext(os.path.basename(filePath))[0]
- sobj = self.editor.findOrCreateItem(self.hydroComp,
- name = itemName,
- fileType = COUPLING1D2D_FILE_TYPE,
- fileName = filePath,
- icon = COUPLING1D2D_ICON,
- comment = str(filePath),
- typeId = COUPLING1D2D_CASE_TYPE_ID)
-
- def find_or_create_pytel_case(self, filePath):
- self.find_or_create_hydro_component()
- itemName = os.path.splitext(os.path.basename(filePath))[0]
- sobj = self.editor.findOrCreateItem(self.hydroComp,
- name = itemName,
- fileType = PYTEL_FILE_TYPE,
- fileName = filePath,
- icon = PYTEL_ICON,
- comment = str(filePath),
- typeId = PYTEL_CASE_TYPE_ID)
+
+ # Generation script string
+ python_script = generate_study_script(params)
+
+ # Computing name of the file (same as filePath)
+ file_dir, filename = os.path.split(filePath)
+ root, _ = os.path.splitext(filename)
+ python_file = os.path.join(file_dir, root+".py")
+
+ # Writting to file
+ with open(python_file, 'w') as pfile:
+ pfile.write(python_script)
+
+ def generate_study_yacs(self, filePath):
+ """
+ Generating a yacs file from the eficas info
+ """
+ # Create "Python script" item
+ from TelApy.api.generate_study import generate_study_yacs
+ with open(filePath) as jdcfile:
+ jdc = jdcfile.read()
+ params = jdc_to_dict(jdc, ["TELEMAC2D", "_F"])
+
+ # Generation YACS scheme
+ yacs_scheme = generate_study_yacs(params)
+
+ # Computing name of the file (same as filePath)
+ file_dir, filename = os.path.split(filePath)
+ root, _ = os.path.splitext(filename)
+ yacs_file = os.path.join(file_dir, root+".xml")
+
+ # Writting to file
+ yacs_scheme.saveSchema(yacs_file)