#-*-coding:iso-8859-1-*-
#
-# Copyright (C) 2008-2015 EDF R&D
-#
# This file is part of SALOME ADAO module
#
# This library is free software; you can redistribute it and/or
def F_Init(statut) : return FACT(statut = statut,
INIT_FILE = SIMP(statut = "o", typ = "FichierNoAbs", validators=(OnlyStr())),
- TARGET_LIST = SIMP(statut = "o", typ = "TXM", min=1, max="**", into=F_InitChoice(), validators=(VerifExiste(2))),
+ TARGET_LIST = SIMP(statut = "o", typ = "TXM", min=1, max="**", into=F_InitChoice(),homo="SansOrdreNiDoublon", validators=(VerifExiste(2))),
)
def F_ObserverTemplate() : return BLOC(condition = " NodeType == 'Template' ",
def F_Observers(statut) : return FACT(
statut=statut,
- SELECTION = SIMP(statut="o", defaut=[], typ="TXM", min=0, max="**", validators=NoRepeat(), into=(['Analysis', 'CurrentState', 'Innovation', 'SimulatedObservationAtCurrentState', 'OMA', 'OMB', 'BMA', 'CostFunctionJ', 'CostFunctionJb', 'CostFunctionJo', 'GradientOfCostFunctionJ', 'GradientOfCostFunctionJb', 'GradientOfCostFunctionJo', 'SigmaObs2', 'SigmaBck2', 'APosterioriCovariance'])),
+ SELECTION = SIMP(statut="o", defaut=[], typ="TXM", min=0, max="**", validators=NoRepeat(), homo="SansOrdreNiDoublon", into=(['Analysis', 'CurrentState', 'Innovation', 'SimulatedObservationAtCurrentState', 'OMA', 'OMB', 'BMA', 'CostFunctionJ', 'CostFunctionJb', 'CostFunctionJo', 'GradientOfCostFunctionJ', 'GradientOfCostFunctionJb', 'GradientOfCostFunctionJo', 'SigmaObs2', 'SigmaBck2', 'APosterioriCovariance'])),
Analysis = BLOC (condition=" 'Analysis' in set(SELECTION) ",
Analysis_data = FACT(statut = "o",
Scheduler = SIMP(statut = "f", typ = "TXM"),
data = F_Dict("o"),
),
Parameters3DVAR = BLOC (condition = " (Parameters == 'Defaults') and (Algorithm == '3DVAR') ",
- statut="f",
+ Consigne = SIMP(statut="o",homo='information',typ="TXM", defaut="Choisir les parametres dans les Mots Clefs Optionnels"),
Bounds = SIMP(statut="f", typ="TXM", fr="Liste des valeurs de bornes"),
CostDecrementTolerance = SIMP(statut="f", typ="R", min=1, max=1, defaut=1e-07, fr="Diminution relative minimale du cout lors de l'arrêt"),
GradientNormTolerance = SIMP(statut="f", typ="R", min=1, max=1, defaut=1e-05, fr="Maximum des composantes du gradient lors de l'arrêt"),
Quantiles = SIMP(statut="f", typ="TXM", max="**", into=None, fr="Liste des valeurs de quantiles"),
SetSeed = SIMP(statut="f", typ="TXM", fr="Graine fixée pour le générateur aléatoire"),
SimulationForQuantiles = SIMP(statut="f", typ="TXM", min=1, max=1, defaut="Linear", into=['Linear', 'NonLinear'], fr="Type de simulation pour l'estimation des quantiles"),
- StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**", into=['APosterioriCovariance', 'BMA', 'OMA', 'OMB', 'CurrentState', 'CostFunctionJ', 'Innovation', 'SigmaObs2', 'MahalanobisConsistency', 'SimulationQuantiles', 'SimulatedObservationAtBackground', 'SimulatedObservationAtCurrentState', 'SimulatedObservationAtOptimum'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
+ StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**",homo="SansOrdreNiDoublon", into=['APosterioriCovariance', 'BMA', 'OMA', 'OMB', 'CurrentState', 'CostFunctionJ', 'Innovation', 'SigmaObs2', 'MahalanobisConsistency', 'SimulationQuantiles', 'SimulatedObservationAtBackground', 'SimulatedObservationAtCurrentState', 'SimulatedObservationAtOptimum'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
),
ParametersBlue = BLOC (condition = " (Parameters == 'Defaults') and (Algorithm == 'Blue') ",
- statut="f",
- NumberOfSamplesForQuantiles = SIMP(statut="f", typ="I", val_min=1, min=1, max=1, defaut=100, fr="Nombre d'échantillons simulés pour le calcul des quantiles"),
- Quantiles = SIMP(statut="f", typ="TXM", max="**", into=None, fr="Liste des valeurs de quantiles"),
- SetSeed = SIMP(statut="f", typ="TXM", fr="Graine fixée pour le générateur aléatoire"),
- SimulationForQuantiles = SIMP(statut="f", typ="TXM", min=1, max=1, defaut="Linear", into=['Linear', 'NonLinear'], fr="Type de simulation pour l'estimation des quantiles"),
- StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**", into=['APosterioriCovariance', 'BMA', 'OMA', 'OMB', 'CostFunctionJ', 'Innovation', 'SigmaBck2', 'SigmaObs2', 'MahalanobisConsistency', 'SimulationQuantiles', 'SimulatedObservationAtBackground', 'SimulatedObservationAtOptimum'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
+ ParamParmi=SIMP(statut="o", typ="TXM",min=1, max="**",
+ into=["NumberOfSamplesForQuantiles","Quantiles","SetSeed","StoreSupplementaryCalculations"],homo="SansOrdreNiDoublon"),
+ bloc_nb=BLOC (condition = 'ParamParmi!=None and "NumberOfSamplesForQuantiles" in ParamParmi',
+ NumberOfSamplesForQuantiles = SIMP(statut="o", typ="I", val_min=1, defaut=100, fr="Nombre d'échantillons simulés pour le calcul des quantiles"),
+ ),
+ bloc_quant=BLOC (condition = 'ParamParmi!=None and "Quantiles" in ParamParmi', statut='o',
+ Quantiles = SIMP(statut="o", typ="TXM", max="**", into=None, fr="Liste des valeurs de quantiles"),
+ ),
+ bloc_seed=BLOC (condition = ' ParamParmi!=None and "SetSeed" in ParamParmi', statut='o',
+ SetSeed = SIMP(statut="o", typ="TXM", fr="Graine fixée pour le générateur aléatoire"),
+ ),
+ bloc_siml=BLOC (condition = ' ParamParmi!=None and "SimulationForQuantiles" in ParamParmi', statut='o',
+ SimulationForQuantiles = SIMP(statut="o", typ="TXM", min=1, max=1, defaut="Linear", into=['Linear', 'NonLinear'], fr="Type de simulation pour l'estimation des quantiles"),
+ ),
+ bloc_store=BLOC (condition = ' ParamParmi!=None and "StoreSupplementaryCalculations" in ParamParmi', statut='o',
+ StoreSupplementaryCalculations = SIMP(statut="o", typ="TXM", max="**",homo="SansOrdreNiDoublon", into=['APosterioriCovariance', 'BMA', 'OMA', 'OMB', 'CostFunctionJ', 'Innovation', 'SigmaBck2', 'SigmaObs2', 'MahalanobisConsistency', 'SimulationQuantiles', 'SimulatedObservationAtBackground', 'SimulatedObservationAtOptimum'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
+ ),
),
ParametersEnsembleBlue = BLOC (condition = " (Parameters == 'Defaults') and (Algorithm == 'EnsembleBlue') ",
statut="f",
Quantiles = SIMP(statut="f", typ="TXM", max="**", into=None, fr="Liste des valeurs de quantiles"),
SetSeed = SIMP(statut="f", typ="TXM", fr="Graine fixée pour le générateur aléatoire"),
SimulationForQuantiles = SIMP(statut="f", typ="TXM", min=1, max=1, defaut="Linear", into=['Linear', 'NonLinear'], fr="Type de simulation pour l'estimation des quantiles"),
- StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**", into=['APosterioriCovariance', 'BMA', 'OMA', 'OMB', 'CostFunctionJ', 'Innovation', 'SigmaBck2', 'SigmaObs2', 'MahalanobisConsistency', 'SimulationQuantiles', 'SimulatedObservationAtBackground', 'SimulatedObservationAtOptimum'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
+ StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**",homo="SansOrdreNiDoublon", into=['APosterioriCovariance', 'BMA', 'OMA', 'OMB', 'CostFunctionJ', 'Innovation', 'SigmaBck2', 'SigmaObs2', 'MahalanobisConsistency', 'SimulationQuantiles', 'SimulatedObservationAtBackground', 'SimulatedObservationAtOptimum'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
),
ParametersExtendedKalmanFilter = BLOC (condition = " (Parameters == 'Defaults') and (Algorithm == 'ExtendedKalmanFilter') ",
statut="f",
Bounds = SIMP(statut="f", typ="TXM", fr="Liste des valeurs de bornes"),
ConstrainedBy = SIMP(statut="f", typ="TXM", min=1, max=1, defaut="EstimateProjection", into=['EstimateProjection'], fr="Prise en compte des contraintes"),
EstimationOf = SIMP(statut="f", typ="TXM", min=1, max=1, defaut="State", into=['State', 'Parameters'], fr="Estimation d'etat ou de parametres"),
- StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**", into=['APosterioriCovariance', 'BMA', 'CurrentState', 'CostFunctionJ', 'Innovation'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
+ StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**",homo="SansOrdreNiDoublon", into=['APosterioriCovariance', 'BMA', 'CurrentState', 'CostFunctionJ', 'Innovation'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
),
ParametersKalmanFilter = BLOC (condition = " (Parameters == 'Defaults') and (Algorithm == 'KalmanFilter') ",
statut="f",
EstimationOf = SIMP(statut="f", typ="TXM", min=1, max=1, defaut="State", into=['State', 'Parameters'], fr="Estimation d'etat ou de parametres"),
- StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**", into=['APosterioriCovariance', 'BMA', 'CurrentState', 'CostFunctionJ', 'Innovation'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
+ StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**",homo="SansOrdreNiDoublon", into=['APosterioriCovariance', 'BMA', 'CurrentState', 'CostFunctionJ', 'Innovation'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
),
ParametersLinearLeastSquares = BLOC (condition = " (Parameters == 'Defaults') and (Algorithm == 'LinearLeastSquares') ",
statut="f",
- StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**", into=['OMA', 'CostFunctionJ', 'SimulatedObservationAtOptimum'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
+ StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**",homo="SansOrdreNiDoublon", into=['OMA', 'CostFunctionJ', 'SimulatedObservationAtOptimum'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
),
ParametersNonLinearLeastSquares = BLOC (condition = " (Parameters == 'Defaults') and (Algorithm == 'NonLinearLeastSquares') ",
statut="f",
MaximumNumberOfSteps = SIMP(statut="f", typ="I", val_min=-1, min=1, max=1, defaut=15000, fr="Nombre maximal de pas d'optimisation"),
Minimizer = SIMP(statut="f", typ="TXM", min=1, max=1, defaut="LBFGSB", into=['LBFGSB', 'TNC', 'CG', 'NCG', 'BFGS', 'LM'], fr="Minimiseur utilisé"),
ProjectedGradientTolerance = SIMP(statut="f", typ="R", val_min=-1, min=1, max=1, defaut=-1.0, fr="Maximum des composantes du gradient projeté lors de l'arrêt"),
- StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**", into=['BMA', 'OMA', 'OMB', 'CurrentState', 'CostFunctionJ', 'Innovation', 'SimulatedObservationAtCurrentState', 'SimulatedObservationAtOptimum'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
+ StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**",homo="SansOrdreNiDoublon", into=['BMA', 'OMA', 'OMB', 'CurrentState', 'CostFunctionJ', 'Innovation', 'SimulatedObservationAtCurrentState', 'SimulatedObservationAtOptimum'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
),
ParametersParticleSwarmOptimization = BLOC (condition = " (Parameters == 'Defaults') and (Algorithm == 'ParticleSwarmOptimization') ",
statut="f",
NumberOfInsects = SIMP(statut="f", typ="I", val_min=-1, min=1, max=1, defaut=100, fr="Nombre d'insectes dans l'essaim"),
QualityCriterion = SIMP(statut="f", typ="TXM", min=1, max=1, defaut="AugmentedWeightedLeastSquares", into=['AugmentedWeightedLeastSquares', 'AWLS', 'AugmentedPonderatedLeastSquares', 'APLS', 'DA', 'WeightedLeastSquares', 'WLS', 'PonderatedLeastSquares', 'PLS', 'LeastSquares', 'LS', 'L2', 'AbsoluteValue', 'L1', 'MaximumError', 'ME'], fr="Critère de qualité utilisé"),
SetSeed = SIMP(statut="f", typ="TXM", fr="Graine fixée pour le générateur aléatoire"),
- StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**", into=['BMA', 'OMA', 'OMB', 'CurrentState', 'CostFunctionJ', 'Innovation', 'SimulatedObservationAtBackground', 'SimulatedObservationAtCurrentState', 'SimulatedObservationAtOptimum'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
+ StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**",homo="SansOrdreNiDoublon", into=['BMA', 'OMA', 'OMB', 'CurrentState', 'CostFunctionJ', 'Innovation', 'SimulatedObservationAtBackground', 'SimulatedObservationAtCurrentState', 'SimulatedObservationAtOptimum'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
SwarmVelocity = SIMP(statut="f", typ="R", val_min=0.0, min=1, max=1, defaut=1.0, fr="Vitesse de groupe imposée par l'essaim"),
),
ParametersQuantileRegression = BLOC (condition = " (Parameters == 'Defaults') and (Algorithm == 'QuantileRegression') ",
MaximumNumberOfSteps = SIMP(statut="f", typ="I", val_min=1, min=1, max=1, defaut=15000, fr="Nombre maximal de pas d'optimisation"),
Minimizer = SIMP(statut="f", typ="TXM", min=1, max=1, defaut="MMQR", into=['MMQR'], fr="Minimiseur utilisé"),
Quantile = SIMP(statut="f", typ="R", val_min=0.0, val_max=1.0, min=1, max=1, defaut=0.5, fr="Quantile pour la regression de quantile"),
- StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**", into=['BMA', 'OMA', 'OMB', 'CurrentState', 'CostFunctionJ', 'Innovation', 'SimulatedObservationAtBackground', 'SimulatedObservationAtCurrentState', 'SimulatedObservationAtOptimum'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
+ StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**",homo="SansOrdreNiDoublon", into=['BMA', 'OMA', 'OMB', 'CurrentState', 'CostFunctionJ', 'Innovation', 'SimulatedObservationAtBackground', 'SimulatedObservationAtCurrentState', 'SimulatedObservationAtOptimum'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
),
ParametersUnscentedKalmanFilter = BLOC (condition = " (Parameters == 'Defaults') and (Algorithm == 'UnscentedKalmanFilter') ",
statut="f",
EstimationOf = SIMP(statut="f", typ="TXM", min=1, max=1, defaut="State", into=['State', 'Parameters'], fr="Estimation d'etat ou de parametres"),
Kappa = SIMP(statut="f", typ="I", val_max=2, min=1, max=1, defaut=0, fr=""),
Reconditioner = SIMP(statut="f", typ="R", val_min=0.001, val_max=10.0, min=1, max=1, defaut=1.0, fr=""),
- StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**", into=['APosterioriCovariance', 'BMA', 'CurrentState', 'CostFunctionJ', 'Innovation'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
+ StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**",homo="SansOrdreNiDoublon", into=['APosterioriCovariance', 'BMA', 'CurrentState', 'CostFunctionJ', 'Innovation'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
),
ParametersAdjointTest = BLOC (condition = " (Parameters == 'Defaults') and (Algorithm == 'AdjointTest') ",
statut="f",
SampleAsnUplet = SIMP(statut="f", typ="TXM", max="**", into=None, fr="Points de calcul définis par une liste de n-uplet"),
SetDebug = SIMP(statut="f", typ="I", min=1, max=1, defaut=0, fr="Activation du mode debug lors de l'exécution"),
SetSeed = SIMP(statut="f", typ="TXM", fr="Graine fixée pour le générateur aléatoire"),
- StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**", into=['CostFunctionJ', 'CurrentState', 'Innovation', 'SimulatedObservationAtCurrentState'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
+ StoreSupplementaryCalculations = SIMP(statut="f", typ="TXM", max="**",homo="SansOrdreNiDoublon", into=['CostFunctionJ', 'CurrentState', 'Innovation', 'SimulatedObservationAtCurrentState'], fr="Liste de calculs supplémentaires à stocker et/ou effectuer"),
),
ParametersTangentTest = BLOC (condition = " (Parameters == 'Defaults') and (Algorithm == 'TangentTest') ",
statut="f",
# -*- coding: iso-8859-1 -*-
-def handleAjoutGroupFiltre(editor,listeGroup):
+import re # module interne utilisé pour vérifier la validité du nom du maillage
+
+concept_re=re.compile(r'[a-zA-Z_]\w*$') # nom de maillage valide s'il correspond à un identifiant (variable) Python possible. Basé sur Ihm/I_Etape.py:nomme_sd, qui fait foi
+
+def handleAjoutGroupSansFiltre(editor,listeGroup):
+ """code_Carmel temporel : obtention des groupes de maille du maillage selectionne dans Salome
+ Les groupes de mailles ne sont pas filtrés.
+ La creation du MESH_GROUPE n'est donc pas typé.
+ ATTENTION! Le nom devenant un concept, i.e. une variable Python, certains signes sont interdits dans le nom du groupe,
+ e.g. les signes moins (-), plus (+), etc. Une erreur est retournee en ce cas.
+ """
+ # retourne le dernier element du JdC, ou None si le JdC est vide, afin de savoir a quelle place ajouter les MESH_GROUPE (en dernier)
+ debug = True
+ try:
+ dernier=editor.tree.racine.children[-1]
+ except:
+ dernier=None
+ for groupe in listeGroup: # parcours de la liste de tous les groupes de maille trouves (volumiques et les autres), puis ecriture du MESHGROUP systématique sans analyse de nom multiple
+ if debug: print 'groupe=', groupe
+ if not concept_re.match(groupe): # Le nom du groupe de maillage doit etre un identificateur Python
+ raise ValueError, "Ce nom de groupe ("+groupe+") ne peut pas etre utilise car il ne peut pas servir de concept a cause de caracteres interdits, e.g. signes moins (-), plus (+), etc."
+ try: # test de conformite du nom pour un concept, i.e. une variable Python
+ #exec(groupe+'=None') # le test consiste a tenter de creer une variable, initialisee a None, a partir du nom, e.g. toto=None est bon mais toto-foo=None ne fonctionne pas.
+ # creation du groupe MESH_GROUPE
+ if dernier != None:
+ new_node = dernier.append_brother("MESHGROUP",'after')
+ else:
+ new_node=editor.tree.racine.append_child("MESHGROUP",pos='first')
+ test,mess = new_node.item.nomme_sd(groupe) # precision du nom (de concept) du groupe
+ if debug: print u"ce nom de groupe ("+groupe+") est utilise..."
+ dernier=new_node # mise a jour du dernier noeud du JdC, afin de rajouter les autres MESH_GROUPE eventuels a sa suite
+ except:
+ raise ValueError, "Ce nom de groupe ("+groupe+") pose un probleme inconnu"
+
+def handleAjoutGroupAvecFiltre(editor,listeGroup):
"""CARMEL3D : obtention des groupes de maille du maillage selectionne dans Salome
Les groupes de mailles sont filtres en utilisant une liste des prefixes autorises pour code Code_Carmel3D,
i.e. un nom de groupe de mailles est DIEL_toto_foo par exemple, qui deviendra toto_foo.
e.g. les signes moins (-), plus (+), etc. Une erreur est retournee en ce cas.
"""
from string import join
- debug = True
+ debug = False #True
listePrefixesMateriaux = ('DIEL', 'NOCOND','COND', 'ZS', 'ZJ', 'NILMAT') # liste des prefixes pour les materiaux
- listePrefixesSources = ('CURRENT', 'EPORT', 'HPORT') # liste des prefixes pour les sources
- listePrefixes = listePrefixesMateriaux + listePrefixesSources # liste de tous les prefixes autorises
- listePrefixesGroupesMultiples = ('CURRENT', ) # listes des prefixes autorises pour groupes multiples, i.e. plusieurs groupes de mailles associes en une seule caracteistique materiau ou source
+ listePrefixesSourcesHorsInducteur = ('EPORT', 'HPORT') # liste des prefixes pour les sources
+ listePrefixesInducteurBobine = ('CURRENT', ) # listes des prefixes autorises pour definir la geometrie d'un inducteur bobiné complet ou en morceaux
+ listePrefixesTrous = ('TOPO', ) # listes des prefixes autorises pour definir la geometrie d'un trou complet ou en morceaux
+ listePrefixesBBK = ('BBK', ) # listes des prefixes autorises pour definir le groupe d'éléments servant de boîte englobante dans laquelle est calculée K (inducteur bobiné ou topo).
+ listePrefixes = listePrefixesMateriaux + listePrefixesSourcesHorsInducteur +listePrefixesInducteurBobine + listePrefixesTrous + listePrefixesBBK # liste de tous les prefixes autorises
+ listePrefixesGroupesMultiples = ('CURRENT', 'TOPO' ) # listes des prefixes autorises pour groupes multiples, i.e. plusieurs groupes de mailles associes en une seule caracteistique materiau ou source
+ if debug:
+ print "listePrefixes=", listePrefixes
+ print "listePrefixesGroupesMultiples=", listePrefixesGroupesMultiples
sep = '_' # separateur entre le prefixe et le nom reel du groupe (qui peut lui aussi contenir ce separateur)
- dictGroupesMultiplesNomsPossibles = {} # dictionnaire contenant les noms reels possibles de groupes multiples et leur occurence dans la liste, i.e. 1 par defaut et > 1 pour une groupe multiple, e.g. pour un inducteur bobine en plusieurs morceaux CURRENT_toto_1, CURRENT_toto_2, ce dictionnaire contiendra 'toto':2
- listeGroupesMultiples = [] # liste contenant les noms possibles de groupes multiples, e.g. pour un inducteur bobine en plusieurs morceaux CURRENT_toto_1, CURRENT_toto_2, cette liste contiendra 'toto'
+ dictGroupesMultiples = {} # dictionnaire contenant les noms reels possibles de groupes multiples et leur occurence dans la liste, i.e. 1 par defaut et > 1 pour une groupe multiple, e.g. pour un inducteur bobine en plusieurs morceaux CURRENT_toto_1, CURRENT_toto_2, ce dictionnaire contiendra 'toto':2
for groupe in listeGroup:
partiesGroupe = groupe.split(sep) # parties du nom, separees initialement par le separateur du prefixe, e.g. 'CURRENT_toto_foo' devient ['CURRENT','toto','foo'] et 'toto' devient ['toto']
prefix = partiesGroupe[0] # prefixe possible de ce nom, ou nom lui-meme
- if len(partiesGroupe) >= 2 and prefix in listePrefixesGroupesMultiples: # prefixe existant et autorise
+ if len(partiesGroupe) >= 3 and prefix in listePrefixesGroupesMultiples: # prefixe existant et autorise
nomGroupeMultiple = partiesGroupe[1] # nom possible d'un groupe multiple
- if dictGroupesMultiplesNomsPossibles.has_key(nomGroupeMultiple): # comptage du nombre d'occurrences de ce nom de groupe multiple possible
- dictGroupesMultiplesNomsPossibles[nomGroupeMultiple] += 1
+ if dictGroupesMultiples.has_key(nomGroupeMultiple): # comptage du nombre d'occurrences de ce nom de groupe multiple possible
+ dictGroupesMultiples[nomGroupeMultiple]['nombre'] += 1
+ dictGroupesMultiples[nomGroupeMultiple]['membres'].append(join(partiesGroupe[1:], sep))
else:
- dictGroupesMultiplesNomsPossibles[nomGroupeMultiple] = 1
- for nom in dictGroupesMultiplesNomsPossibles: # suppression des noms avec une seule occurence, i.e. ils ne sont pas des groupes multiples
- if dictGroupesMultiplesNomsPossibles[nom] > 1: listeGroupesMultiples.append(nom)
+ dictGroupesMultiples[nomGroupeMultiple] = {'type': prefix,'nombre':1, 'membres':[join(partiesGroupe[1:], sep)]}
+ for groupe in dictGroupesMultiples.keys(): # recherche de tous les groupes multiples. Boucle ignorée si aucun groupe multiple.
+ dictGroupesMultiples[groupe]['membres'].sort() # tri alphabétique des membres du groupe multiple, qui est l'ordre lu par gendof.exe/MED (ordre lexicographique).
+ dictGroupesMultiples[groupe]['membres'] = tuple(dictGroupesMultiples[groupe]['membres']) # transformation en tuple, qui est le format attendu par le catalogue (LISTE_MESHGROUP)
if debug:
- print "listeGroup=", listeGroup
- print "dictGroupesMultiplesNomPossibles=", dictGroupesMultiplesNomsPossibles
- print "listeGroupesMultiples=", listeGroupesMultiples
- print "listePrefixes=", listePrefixes
+ print "dictGroupesMultiples=", dictGroupesMultiples
# retourne le dernier element du JdC, ou None si le JdC est vide, afin de savoir a quelle place ajouter les MESH_GROUPE (en dernier)
try:
dernier=editor.tree.racine.children[-1]
except:
dernier=None
- for groupe in listeGroup: # parcours de la liste de tous les groupes de maille trouves (volumiques et les autres)
+ for groupe in listeGroup: # parcours de la liste de tous les groupes de maille trouves (volumiques et les autres), puis ecriture du MESHGROUP systématique sans analyse de nom multiple
if debug: print 'groupe=', groupe
partiesGroupe = groupe.split(sep) # parties du nom, separees initialement par le separateur du prefixe, e.g. 'CURRENT_toto_foo' devient ['CURRENT','toto','foo'] et 'toto' devient ['toto']
- prefix = partiesGroupe[0] # prefixe possible de ce nom, ou nom lui-meme
if len(partiesGroupe) == 1: # pas de prefixe
print u"ERREUR: ce nom de groupe ("+groupe+") ne peut pas etre utilise car il n'a pas de prefixe"
- elif len(partiesGroupe) >= 2 and prefix in listePrefixes: # prefixe existant et autorise
- nomReel = None # initialisation du nom reel, qui provoquera une erreur par la suite (evaluation de None=None) s'il reste ainsi
- if prefix in listePrefixesGroupesMultiples: # ce groupe pourrait faire partie d'un groupe multiple
- nomGroupeMultiple = partiesGroupe[1] # nom possible d'un groupe multiple
- if nomGroupeMultiple in listeGroupesMultiples: # ce groupe est multiple et n'a pas encore ete cree
- nomReel = nomGroupeMultiple # ce groupe pourrait etre utilise...
- listeGroupesMultiples.remove(nomGroupeMultiple) #... une seule fois
- if debug: print u"ce nom de groupe ("+nomReel+") est multiple et sera utilise une fois seulement"
- elif dictGroupesMultiplesNomsPossibles[nomGroupeMultiple] == 1: # ce groupe existe dans le dictionnaire et n'est pas multiple (occurence =1)
- nomReel = join(partiesGroupe[1:], sep) # reconstruction du nom reel, i.e. sans le prefixe
- if debug: print u"ce nom de groupe ("+nomReel+") n'est pas multiple et sera utilise"
- else: # ce groupe est multiple et a deja ete utilise
- if debug: print u"ce nom de groupe ("+groupe+") est multiple et a deja ete utilise"
- else: # ce groupe n'est pas multiple, il pourrait etre utilise tel quel
- nomReel = join(partiesGroupe[1:], sep) # reconstruction du nom reel, i.e. sans le prefixe
- if nomReel is not None: # on a un nom de groupe possible, il faut realiser des tests plus pousses
- try: # test de conformite du nom pour un concept, i.e. une variable Python
- exec(nomReel+'=None') # le test consiste a tenter de creer une variable, initialisee a None, a partir du nom, e.g. toto=None est bon mais toto-foo=None ne fonctionne pas.
- # creation du groupe MESH_GROUPE
- if dernier != None:
- new_node = dernier.append_brother("MESHGROUP",'after')
- else:
- new_node=editor.tree.racine.append_child("MESHGROUP",pos='first')
- test,mess = new_node.item.nomme_sd(nomReel) # precision du nom (de concept) du groupe
- if debug: print u"ce nom de groupe ("+nomReel+") est utilise..."
- if prefix in listePrefixesMateriaux: # ce groupe est associe a un materiau
- new_node.append_child('MATERIAL') # on rajoute la propriete de materiau, qu'il suffit d'associer ensuite a la liste des materiaux presents
- if debug: print u" et c'est un materiau."
- elif prefix in listePrefixesSources: # ce groupe est associe a une source
+ elif len(partiesGroupe) >= 2 and partiesGroupe[0] in listePrefixes: # prefixe existant et autorise
+ prefix = partiesGroupe[0] # prefixe possible de ce nom, ou nom lui-meme
+ nom = partiesGroupe[1] # nom du groupe ou du macro-groupe si défini.
+ nomReel = join(partiesGroupe[1:], sep) # reconstruction du nom reel, i.e. sans le prefixe, pour la plupart des groupes
+ if prefix in listePrefixesBBK: nomReel = groupe # pour la boite englobante, il faut le nom avec préfixe
+ if not concept_re.match(nomReel): # Le nom du groupe de maillage doit etre un identificateur Python
+ raise ValueError, "Ce nom de groupe ("+nomReel+") ne peut pas etre utilise car il ne peut pas servir de concept a cause de caracteres interdits, e.g. signes moins (-), plus (+), etc."
+ try: # test de conformite du nom pour un concept, i.e. une variable Python
+ #exec(nomReel+'=None') # le test consiste a tenter de creer une variable, initialisee a None, a partir du nom, e.g. toto=None est bon mais toto-foo=None ne fonctionne pas.
+ # creation du groupe MESH_GROUPE
+ if dernier != None:
+ new_node = dernier.append_brother("MESHGROUP",'after')
+ else:
+ new_node=editor.tree.racine.append_child("MESHGROUP",pos='first')
+ test,mess = new_node.item.nomme_sd(nomReel) # precision du nom (de concept) du groupe
+ if debug: print u"ce nom de groupe ("+nomReel+") est utilise..."
+ if prefix in listePrefixesMateriaux: # ce groupe est associe a un materiau
+ new_node.append_child('MATERIAL') # on rajoute la propriete de materiau, qu'il suffit d'associer ensuite a la liste des materiaux presents
+ if debug: print u" et c'est un materiau."
+ elif prefix in listePrefixesSourcesHorsInducteur: # ce groupe est associe a une source
+ new_node.append_child('SOURCE') # on rajoute la propriete de la source, qu'il suffit d'associer ensuite a la liste des sources presentes
+ if debug: print u" et c'est une source."
+ elif prefix in listePrefixesInducteurBobine: # ce groupe est associe a une source
+ new_node.append_child('STRANDED_INDUCTOR_GEOMETRY') # on rajoute la propriete de géométrie de l'inducteur bobiné
+ if debug: print u" et c'est un inducteur bobine dont on definit la geometrie."
+ if nom not in dictGroupesMultiples.keys(): # il ne fait pas partie d'un macro-groupe. La source est définie ici, ainsi que le domaine.
new_node.append_child('SOURCE') # on rajoute la propriete de la source, qu'il suffit d'associer ensuite a la liste des sources presentes
- if debug: print u" et c'est une source."
- else: # ce cas ne devrait pas se produire
- pass
- dernier=new_node # mise a jour du dernier noeud du JdC, afin de rajouter les autres MESH_GROUPE eventuels a sa suite
- except:
- print u"ERREUR: ce nom de groupe ("+nomReel+") ne peut pas etre utilise car il ne peut pas servir de concept a cause de caractères interdits, e.g. signes moins (-), plus (+), etc."
- else: # ce nom de groupe est ecarte car le groupe multiple deja ete cree
- print u"Ce nom de groupe ("+groupe+") ne peut pas etre utilise car il appartient a un groupe multiple qui a deja ete cree."
+ new_node.append_child('Domaine') # on rajoute la propriete du domaine (default automatique), qu'il suffit d'associer ensuite a la liste des domaines présents
+ if debug: print u" et c'est une source en un seul morceau."
+ else: # ce cas ne devrait pas se produire
+ pass
+ dernier=new_node # mise a jour du dernier noeud du JdC, afin de rajouter les autres MESH_GROUPE eventuels a sa suite
+ except:
+ raise ValueError, "Ce nom de groupe ("+nomReel+") pose un probleme inconnu"
+ #print u"ERREUR: ce nom de groupe ("+nomReel+") ne peut pas etre utilise car il ne peut pas servir de concept a cause de caractères interdits, e.g. signes moins (-), plus (+), etc."
else: # prefixe existant mais non autorise
print u"ERREUR: ce nom de groupe ("+groupe+") ne peut pas etre utilise car son prefixe ("+partiesGroupe[0]+") n'est pas dans la liste autorisee "+str(listePrefixes)
+ if len(dictGroupesMultiples) > 0: # on a des groupes à nom multiples, e.g., inducteur bobiné en morceaux.
+ for groupe, contenu in dictGroupesMultiples.iteritems(): # parcours de la liste de tous les groupes de maille trouves (volumiques et les autres), et sélection des groupes à nom multiple
+ if debug: print 'groupe, contenu=', groupe, contenu
+ nomReel = groupe
+ prefix = contenu['type']
+ try: # test de conformite du nom pour un concept, i.e. une variable Python
+ exec(nomReel+'=None') # le test consiste a tenter de creer une variable, initialisee a None, a partir du nom, e.g. toto=None est bon mais toto-foo=None ne fonctionne pas.
+ # creation du groupe MACRO_GROUPE
+ if dernier != None:
+ new_node = dernier.append_brother("MACRO_GROUPE",'after')
+ else:
+ new_node=editor.tree.racine.append_child("MACRO_GROUPE",pos='first')
+ test,mess = new_node.item.nomme_sd(nomReel) # precision du nom (de concept) du groupe
+ if debug: print u"ce nom de groupe ("+nomReel+") est utilise..."
+ if debug: print u" et on ajoute la liste LISTE_MESHGROUP."
+ node_list=new_node.append_child('LISTE_MESHGROUP') # Ajout de la liste des membres du groupe multiple
+ if debug:
+ print 'Liste possible pour LISTE_MESHGROUP :'
+ print '_____________________'
+ print node_list.item.get_liste_possible(())
+ print '_____________________'
+ print dir(node_list.item)
+ listeNom=node_list.item.get_sd_avant_du_bon_type()
+ listeObjet=[]
+ for nom in listeNom:
+ if nom in dictGroupesMultiples[groupe]['membres']:
+ #--> transformation du nom en objet
+ obj,valide=node_list.item.eval_valeur(nom)
+ listeObjet.append(obj)
+ node_list.item.set_valeur(listeObjet)
+ node_list.affichePanneau()
+ if prefix in listePrefixesMateriaux: # ce groupe est associe a un materiau
+ new_node.append_child('MATERIAL') # on rajoute la propriete de materiau, qu'il suffit d'associer ensuite a la liste des materiaux presents
+ if debug: print u" et c'est un materiau."
+ elif prefix in listePrefixesSourcesHorsInducteur: # ce groupe est associe a une source
+ new_node.append_child('SOURCE') # on rajoute la propriete de la source, qu'il suffit d'associer ensuite a la liste des sources presentes
+ if debug: print u" et c'est une source hors inducteur."
+ elif prefix in listePrefixesInducteurBobine: # ce groupe est associe a une source
+ new_node.append_child('SOURCE') # on rajoute la propriete de la source, qu'il suffit d'associer ensuite a la liste des sources presentes
+ new_node.append_child('Domaine') # on rajoute la propriete du domaine (default automatique), qu'il suffit d'associer ensuite a la liste des domaines présents
+ if debug: print u" et c'est une source inducteur."
+ elif prefix in listePrefixesTrous: # ce groupe est associe a un trou
+ new_node.append_child('Domaine') # on rajoute la propriete du domaine (default automatique), qu'il suffit d'associer ensuite a la liste des domaines présents
+ if debug: print u" et c'est un trou."
+ else: # ce cas ne devrait pas se produire
+ pass
+ dernier=new_node # mise a jour du dernier noeud du JdC, afin de rajouter les autres MESH_GROUPE eventuels a sa suite
+ except:
+ print u"ERREUR: ce nom de groupe ("+nomReel+") ne peut pas etre utilise car il ne peut pas servir de concept a cause de caractères interdits, e.g. signes moins (-), plus (+), etc."
+def handleAjoutGroupFiltre(editor,listeGroup):
+ """CARMEL3D : obtention des groupes de maille du maillage selectionne dans Salome
+ Les groupes de mailles sont filtres en utilisant une liste des prefixes autorises pour code Code_Carmel3D,
+ i.e. un nom de groupe de mailles est DIEL_toto_foo par exemple, qui deviendra toto_foo.
+ La creation du MESH_GROUPE est type (materiau ou source), d'après le prefixe.
+ ATTENTION! Le nom devenant un concept, i.e. une variable Python, certains signes sont interdits dans le nom du groupe,
+ e.g. les signes moins (-), plus (+), etc. Une erreur est retournee en ce cas.
+ """
+ from string import join
+ debug = True
+ #print 'DEBUG listeGroup manuel' # Il faut aussi commenter la ligne Msg,listeGroup=self.ChercheGrpMailleInSalome() dans la routine ChercheGrpMaille de qtEficas.py
+ #listeGroup = ['DIEL_air', 'COND_plaque', 'CURRENT_bobine' ] # cas-test plaque Rodger avec DIEL_
+ #listeGroup = ['NOCOND_air', 'COND_plaque', 'CURRENT_bobine' ] # cas-test plaque Rodger
+ #listeGroup = ['DIEL_air', 'COND_plaque', 'NOCOND_noyau', 'CURRENT_bobine_1', 'CURRENT_bobine_2', 'CURRENT_bobine_3' ]
+ #listeGroup = ['DIEL_air', 'COND_plaque', 'NOCOND_noyau', 'CURRENT_bobine' ]
+ #listeGroup = ['BBK_bobine', 'DIEL_air', 'COND_plaque', 'NOCOND_noyau', 'CURRENT_bobine' ] # avec BBK
+ #listeGroup = ['EPORT+_dom', 'EPORT-_dom', 'H', 'COND_cyl', 'EPORT_dom'] # cas-test CSS_Tempimpo
+ #listeGroup= ['BBK_spire', 'CURRENT_spire_4', 'NOCOND_air', 'CURRENT_spire_3', 'CURRENT_spire_1', 'CURRENT_spire_2'] # cas-test spire_dans l'air en 4 morceaux
+ #listeGroup= ['BBK_bobine', 'CURRENT_ind_2', 'DIEL_air', 'CURRENT_ind_8', 'CURRENT_ind_6', 'CURRENT_ind_1', 'CURRENT_ind_3', 'CURRENT_ind_7', 'CURRENT_ind_5', 'CURRENT_ind_4', 'BBK_topo', 'COND_plaque', 'TOPO_trou_1', 'TOPO_trou_3', 'TOPO_trou_2', 'TOPO_trou_8', 'TOPO_trou_4', 'TOPO_trou_7', 'TOPO_trou_5', 'TOPO_trou_6'] # cas-test T.E.A.M. Workshop 7
+ if debug:
+ print "listeGroup=", listeGroup
+ version_catalogue = editor.CONFIGURATION.appli.readercata.version_code # détermination si le catalogue est fréquentiel ou temporel, d'après la deuxième entrée de la liste catalogues dans prefs_CARMEL3D.py
+ if debug:
+ print "Version catalogue=", version_catalogue
+ type_code = version_catalogue.split(' ')[0] # on garde le premier mot de la version du catalogue : 'frequentiel' ou 'temporel'
+ if debug:
+ print "Type de code=", type_code
+ if type_code not in ('frequentiel', 'temporel'): # test de cohérence du type de code
+ raise ValueError("Ce catalogue n'est ni frequentiel ni temporel")
+ if type_code == 'frequentiel':
+ handleAjoutGroupAvecFiltre(editor, listeGroup)
+ if type_code == 'temporel':
+ handleAjoutGroupSansFiltre(editor, listeGroup)
fr = "Initialisation des fichiers d'entrée et de sortie",
ang = "Input and Output files initialization",
- #UIinfo = { "groupes" : ( "CACHE", )},
- UIinfo = { "groupes" : ( "iiii", )},
+ UIinfo = { "groupes" : ( "CACHE", )},
+ #UIinfo = { "groupes" : ( "iiii", )},
# ------------------------------------
Title = SIMP( statut = 'o',typ = 'TXM',
The data in this file shall be read on channel 27.",),
# ------------------------------------
- Binary_Data_File_1 = SIMP( statut = 'f', typ = ('Fichier', 'Reference File (*.txt);;All Files (*)',),
+ Binary_Data_File_1 = SIMP( statut = 'f', typ = ('Fichier', 'All Files (*)',),
# ------------------------------------
fr = 'Fichier de donnees code en binaire mis a la disposition de l utilisateur. \n\
Les donnees de ce fichier seront a lire sur le canal 24.',
The data in this file shall be read on channel 24.',),
# ------------------------------------
- Binary_Data_File_2 = SIMP( statut = 'f', typ = ('Fichier', 'Reference File (*.txt);;All Files (*)',),
+ Binary_Data_File_2 = SIMP( statut = 'f', typ = ('Fichier', 'All Files (*)',),
# ------------------------------------
fr = 'Fichier de donnees code en binaire mis a la disposition de l utilisateur.\n\
Les donnees de ce fichier seront a lire sur le canal 25.',
), # Fin de InputFile
+ # -----------------------------------------------------------------------
+ Initial_State = FACT(statut='o',
+ # -----------------------------------------------------------------------
+
+# ------------------------------------
+ Initial_Conditions = SIMP(statut = 'o',typ = 'TXM',
+# ------------------------------------
+ into = ['Zero elevation','Constant elevation','Zero depth','Constant depth','Special','TPXO satellite altimetry'],
+ defaut = 'Zero elevation',
+ fr = "Permet de definir les conditions initiales sur les hauteurs d'eau. Les valeurs possibles sont :\n\
+ - COTE NULLE. Initialise la cote de surface libre a 0. \nLes hauteurs d'eau initiales sont alors retrouvees en faisant la difference entre les cotes de surface libre et du fond. \n\
+ - COTE CONSTANTE . Initialise la cote de surface libre a la valeur donnee par le mot-cle COTE INITIALE. Les hauteurs d'eau initiales sont calculees comme precedemment.\n\
+ - HAUTEUR NULLE .Initialise les hauteurs d'eau a 0. \n\
+ - HAUTEUR CONSTANTE. Initialise les hauteurs d'eau a la valeur donnee par le mot-cle HAUTEUR INITIALE. \n\
+ - PARTICULIERES. Les conditions initiales sur la hauteur d'eau doivent etre precisees dans le sous-programme CONDIN. \n\
+ - ALTIMETRIE SATELLITE TPXO. Les conditions initiales sur la hauteur d'eau et les vitesses sont etablies sur \n\
+ la base des donnees satellite TPXO dont les 8 premiers constistuents ont ete extraits et sauves dans le fichier\n\
+ BASE DE DONNEES DE MAREE." ,
+ ang = 'Makes it possible to define the initial conditions with the water depth. The possible values are : \n\
+ - ZERO ELEVATION. Initializes the free surface elevation to 0. \n The initial water depths are then found by computing the difference between the free surface and the bottom. \n\
+ - CONSTANT ELEVATION. Initializes the water elevation to the value given by the keyword \n\
+ - INITIAL ELEVATION. The initial water depths are computed as in the previous case. \n\
+ - ZERO DEPTH. Initializes the water depths to 0. \n\
+ - CONSTANT DEPTH. Initializes the water depths to the value givenby the key-word INITIAL DEPTH. \n\
+ - SPECIAL. The initial conditions with the water depth should be stated in the CONDIN subroutine. \n\
+ - TPXO SATELITE ALTIMETRY. The initial conditions on the free surface and velocities are established from the TPXO satellite program data,\n the harmonic constituents of which are stored in the TIDE DATA BASE file.', ),
+
+# ------------------------------------
+ b_initial_elevation = BLOC (condition = "Initial_Conditions == 'Constant elevation'",
+# ------------------------------------
+# ------------------------------------
+ Initial_Elevation = SIMP(statut = 'o',typ = 'R',
+# ------------------------------------
+ fr = 'Valeur utilisee avec l''option : CONDITIONS INITIALES - COTE CONSTANTE',
+ ang = 'Value to be used with the option : INITIAL CONDITIONS -CONSTANT ELEVATION' ),
+ ) , # fin b_initial_elevation
+
+# ------------------------------------
+ b_initial_depth = BLOC (condition = "Initial_Conditions == 'Constant depth'",
+# ------------------------------------
+# ------------------------------------
+ Initial_Depth = SIMP(statut = 'o',typ = 'R',
+# ------------------------------------
+ fr = 'Valeur utilisee avec l''option : CONDITIONS INITIALES :-HAUTEUR CONSTANTE-',
+ ang = 'Value to be used along with the option: INITIAL CONDITIONS -CONSTANT DEPTH-' ),
+ ),# fin b_initial_depth
+
+# ------------------------------------
+ b_special = BLOC (condition = "Initial_Conditions == 'Special'",
+# ------------------------------------
+# ------------------------------------
+ Consigne = SIMP(statut = "o",homo = 'information',typ = "TXM",
+# ------------------------------------
+ defaut = "The initial conditions with the water depth should be stated in the CONDIN subroutine"),
+ ), # fin b_special
+
+#PNPN il faut changer la condition pour que cela soit dans maree. il faut une position = global_jdc et remonter # cela
+# ------------------------------------
+ b_initial_TPXO = BLOC (condition = "Initial_Conditions == 'TPXO satellite altimetry'",
+# ------------------------------------
+# ------------------------------------
+ Ascii_Database_For_Tide = SIMP( statut = 'o',
+# ------------------------------------
+ typ = ('Fichier', 'All Files (*)',),
+ fr = 'Base de donnees de constantes harmoniques tirees du fichier du modele de maree',
+ ang = 'Tide data base of harmonic constituents extracted from the tidal model file',),
+ ), # fin b_initial_TPXO
+
+ ), # fin Initial_State
+
# ------------------------------------
Computation_Continued = SIMP( statut = 'o',typ = bool,defaut = False,position = "global_jdc"),
# ------------------------------------
# ------------------------------------
- Minor_Constituents_Inference = SIMP( statut = 'o',typ = 'bool',
+ Minor_Constituents_Inference = SIMP( statut = 'o',typ = bool,
# ------------------------------------
defaut = False ,
fr = 'Interpolation de composantes harmoniques mineures a partir de celles lues dans les \n\
), #fin Physical_Parameters
) # Fin TIDE_PARAMETERS
-# -----------------------------------------------------------------------
-INITIAL_STATE = PROC(nom = "INITIAL_STATE",op = None,
-# -----------------------------------------------------------------------
-
-# ------------------------------------
- Initial_Conditions = SIMP(statut = 'o',typ = 'TXM',
-# ------------------------------------
- into = ['Zero elevation','Constant elevation','Zero depth','Constant depth','Special','TPXO satellite altimetry'],
- defaut = 'Zero elevation',
- fr = "Permet de definir les conditions initiales sur les hauteurs d'eau. Les valeurs possibles sont :\n\
- - COTE NULLE. Initialise la cote de surface libre a 0. \nLes hauteurs d'eau initiales sont alors retrouvees en faisant la difference entre les cotes de surface libre et du fond. \n\
- - COTE CONSTANTE . Initialise la cote de surface libre a la valeur donnee par le mot-cle COTE INITIALE. Les hauteurs d'eau initiales sont calculees comme precedemment.\n\
- - HAUTEUR NULLE .Initialise les hauteurs d'eau a 0. \n\
- - HAUTEUR CONSTANTE. Initialise les hauteurs d'eau a la valeur donnee par le mot-cle HAUTEUR INITIALE. \n\
- - PARTICULIERES. Les conditions initiales sur la hauteur d'eau doivent etre precisees dans le sous-programme CONDIN. \n\
- - ALTIMETRIE SATELLITE TPXO. Les conditions initiales sur la hauteur d'eau et les vitesses sont etablies sur \n\
- la base des donnees satellite TPXO dont les 8 premiers constistuents ont ete extraits et sauves dans le fichier\n\
- BASE DE DONNEES DE MAREE." ,
- ang = 'Makes it possible to define the initial conditions with the water depth. The possible values are : \n\
- - ZERO ELEVATION. Initializes the free surface elevation to 0. \n The initial water depths are then found by computing the difference between the free surface and the bottom. \n\
- - CONSTANT ELEVATION. Initializes the water elevation to the value given by the keyword \n\
- - INITIAL ELEVATION. The initial water depths are computed as in the previous case. \n\
- - ZERO DEPTH. Initializes the water depths to 0. \n\
- - CONSTANT DEPTH. Initializes the water depths to the value givenby the key-word INITIAL DEPTH. \n\
- - SPECIAL. The initial conditions with the water depth should be stated in the CONDIN subroutine. \n\
- - TPXO SATELITE ALTIMETRY. The initial conditions on the free surface and velocities are established from the TPXO satellite program data,\n the harmonic constituents of which are stored in the TIDE DATA BASE file.', ),
-
-# ------------------------------------
- b_initial_elevation = BLOC (condition = "Initial_Conditions == 'Constant elevation'",
-# ------------------------------------
-# ------------------------------------
- Initial_Elevation = SIMP(statut = 'o',typ = 'R',
-# ------------------------------------
- fr = 'Valeur utilisee avec l''option : CONDITIONS INITIALES - COTE CONSTANTE',
- ang = 'Value to be used with the option : INITIAL CONDITIONS -CONSTANT ELEVATION' ),
- ) , # fin b_initial_elevation
-
-# ------------------------------------
- b_initial_depth = BLOC (condition = "Initial_Conditions == 'Constant depth'",
-# ------------------------------------
-# ------------------------------------
- Initial_Depth = SIMP(statut = 'o',typ = 'R',
-# ------------------------------------
- fr = 'Valeur utilisee avec l''option : CONDITIONS INITIALES :-HAUTEUR CONSTANTE-',
- ang = 'Value to be used along with the option: INITIAL CONDITIONS -CONSTANT DEPTH-' ),
- ),# fin b_initial_depth
-
-# ------------------------------------
- b_special = BLOC (condition = "Initial_Conditions == 'Special'",
-# ------------------------------------
-# ------------------------------------
- Consigne = SIMP(statut = "o",homo = 'information',typ = "TXM",
-# ------------------------------------
- defaut = "The initial conditions with the water depth should be stated in the CONDIN subroutine"),
- ), # fin b_special
-
-#PNPN il faut changer la condition pour que cela soit dans maree. il faut une position = global_jdc et remonter # cela
-# ------------------------------------
- b_initial_TPXO = BLOC (condition = "Initial_Conditions == 'TPXO satellite altimetry'",
-# ------------------------------------
-# ------------------------------------
- Ascii_Database_For_Tide = SIMP( statut = 'o',
-# ------------------------------------
- typ = ('Fichier', 'All Files (*)',),
- fr = 'Base de donnees de constantes harmoniques tirees du fichier du modele de maree',
- ang = 'Tide data base of harmonic constituents extracted from the tidal model file',),
- ), # fin b_initial_TPXO
-
-) # fin INITIAL_STATE
-
# -----------------------------------------------------------------------
BOUNDARY_CONDITIONS = PROC(nom = "BOUNDARY_CONDITIONS",op = None,
# -----------------------------------------------------------------------
fr = 'On donne un ensemble de conditions par frontiere liquide',
ang = 'One condition set per liquid boundary is given',
- #UIinfo = { "groupes" : ( "CACHE", )},
- UIinfo = { "groupes" : ( "iiii", )},
+ UIinfo = { "groupes" : ( "CACHE", )},
+ #UIinfo = { "groupes" : ( "iiii", )},
# Dans l ideal il faut aller regarder selon les groupes dans le fichier med
# en sortie il faut aller chercher le .cli qui va bien
#Liquid_Boundaries = FACT(statut = 'f',max = '**',
# Il faut seulement l un des 3
# ------------------------------------
- Liquid_Boundaries = FACT(statut = 'f',max = '**',
+ Liquid_Boundaries = FACT(statut = 'o',max = '**',
# ------------------------------------
# ------------------------------------
# On ajoute le type pour rendre l 'ihm plus lisible
# mais ce mot-cle n existe pas dans le dico
# ------------------------------------
- into = ['Prescribed flowrates', 'Prescribed elevations', 'Prescribed velocity'],),
+ into = ['Prescribed Flowrates', 'Prescribed Elevations', 'Prescribed Velocity'],),
# ------------------------------------
b_Flowrates = BLOC (condition = "Type_Condition == 'Prescribed Flowrates'",
NUMERICAL_PARAMETERS = PROC(nom = "NUMERICAL_PARAMETERS",op = None,
# -----------------------------------------------------------------------
- #UIinfo = { "groupes" : ( "CACHE", )},
- UIinfo = { "groupes" : ( "iiii", )},
+ UIinfo = { "groupes" : ( "CACHE", )},
+ #UIinfo = { "groupes" : ( "iiii", )},
# ------------------------------------
Equations = SIMP(statut = 'o',typ = 'TXM',
), # fin Solver
-# ------------------------------------
- Time = FACT(statut = 'o',
-# ------------------------------------
- regles = (AU_MOINS_UN('Number_Of_Time_Steps','Duration'),
- EXCLUS('Number_Of_Time_Steps','Duration'),
- ),
-
-# ------------------------------------
- Time_Step = SIMP(statut = 'o',
-# ------------------------------------
- typ = 'R', defaut = 1,
- fr = 'Definit le nombre de pas de temps effectues lors de l''execution du code.',
- ang = 'Specifies the number of time steps performed when running the code.'),
-
-# ------------------------------------
- Number_Of_Time_Steps = SIMP(statut = 'f',typ = 'I',
-# ------------------------------------
- fr = 'Definit le nombre de pas de temps effectues lors de l''execution du code.',
- ang = 'Specifies the number of time steps performed when running the code.'),
-
-# ------------------------------------
- Duration = SIMP(statut = 'f',typ = 'R',
-# ------------------------------------
- fr = 'duree de la simulation. alternative au parametre nombre de pas de temps. \n\
-On en deduit le nombre de pas de temps en prenant l''entier le plus proche de (duree du calcul/pas de temps).\n\
-Si le nombre de pas de temps est aussi donne, on prend la plus grande valeur',
- ang = 'duration of simulation. May be used instead of the parameter NUMBER OF TIME STEPS. \n\
-The nearest integer to (duration/time step) is taken. If NUMBER OF TIME STEPS is also given, the greater value is taken',),
-
-# PNPN
-# Attention, on laisse la règle mais il est possible d avoir les 2 en entrées --> attention au convert
-# ------------------------------------
- Variable_Time_Step = SIMP(statut = 'f',typ = bool,
-# ------------------------------------
- fr = 'Pas de temps variable pour avoir un nombre de courant souhaite',
- ang = 'Variable time-step to get a given Courant number'),
-
-# ------------------------------------
- b_var_time = BLOC(condition = "Variable_Time_Step == True" ,
-# ------------------------------------
-# ------------------------------------
- Desired_Courant_Number = SIMP(statut = 'o',typ = 'R',
-# ------------------------------------
- fr = 'Nombre de Courant souhaite ',
- ang = 'Desired Courant number',),
- ),
-
-# ------------------------------------
- Original_Date_Of_Time = FACT( statut = 'o',
-# ------------------------------------
- fr = "Permet de fixer la date d'origine des temps du modele lors de la prise en compte de la force generatrice de la maree.",
- ang = 'Give the date of the time origin of the model when taking into account the tide generating force.',
- Year = SIMP(statut = 'o',typ = 'I',val_min = 1900, defaut = 1900),
- Month = SIMP(statut = 'o',typ = 'I',val_min = 1,val_max = 12, defaut = 1),
- Day = SIMP(statut = 'o',typ = 'I',val_min = 1,val_max = 31,defaut = 1),),
-
-# ------------------------------------
- Original_Hour_Of_Time = FACT( statut = 'o',
-# ------------------------------------
- fr = "Permet de fixer l'heure d'origine des temps du modele lors de la prise en compte de la force generatrice de la maree.",
- ang = 'Give the time of the time origin of the model when taking into account the tide generating force.',
- Hour = SIMP(statut = 'o',typ = 'I',val_min = 0,val_max = 24, defaut = 0),
- Minute = SIMP(statut = 'o',typ = 'I',val_min = 0,val_max = 60, defaut = 0),
- Second = SIMP(statut = 'o',typ = 'I',val_min = 0,val_max = 60, defaut = 0),
- ),
-
-# ------------------------------------
- Stop_If_A_Steady_State_Is_Reached = SIMP(statut = 'o',
-# ------------------------------------
- typ = bool,defaut = 'False'),
-
-# ------------------------------------
- b_stop = BLOC(condition = "Stop_If_A_Steady_State_Is_Reached == True" ,
-# ------------------------------------
-# ------------------------------------
- Stop_Criteria = SIMP(statut = 'o',typ = Tuple(3),validators = VerifTypeTuple(('R','R','R')),
-# ------------------------------------
- fr = "Criteres d'arret pour un ecoulement permanent. ces coefficients sont respectivement appliques a\n\
- 1- U et V 2- H 3- T ",
- ang = 'Stop criteria for a steady state These coefficients are applied respectively to\n\
- 1- U and V 2- H 3- T ',),
- ), # fin b_stop
-
-# ------------------------------------
- Control_Of_Limits = SIMP(statut = 'o',
-# ------------------------------------
- typ = bool, defaut = 'False',
- fr = 'Le programme s''arrete si les limites sur u,v,h ou t sont depassees',
- ang = 'The program is stopped if the limits on u,v,h, or t are trespassed',),
-
-# ------------------------------------
- b_limit = BLOC(condition = "Control_Of_Limit == True" ,
- Limit_Values = FACT(statut = 'o',
-# Attention : 1 seul MC ds Telemac
-# ------------------------------------
- fr = 'valeurs mini et maxi acceptables min puis max',
- ang = 'min and max acceptable values ',
-
-# ------------------------------------
- Limit_Values_H = SIMP(statut = 'o',typ = Tuple(2),
-# ------------------------------------
- validators = VerifTypeTuple(('R','R')), defaut = (-1000,9000)),
-# ------------------------------------
- Limit_Values_U = SIMP(statut = 'o',typ = Tuple(2),
-# ------------------------------------
- validators = VerifTypeTuple(('R','R')), defaut = (-1000,1000)),
-# ------------------------------------
- Limit_Values_V = SIMP(statut = 'o',typ = Tuple(2),
-# ------------------------------------
- validators = VerifTypeTuple(('R','R')), defaut = (-1000,1000)),
-# ------------------------------------
- Limit_Values_T = SIMP(statut = 'o',typ = Tuple(2),
-# ------------------------------------
- validators = VerifTypeTuple(('R','R')), defaut = (-1000,1000)),
- ),), # fin Fact et b_limit
- ), # Fin de Time
-
# ------------------------------------
Linearity = FACT(statut = 'f',
# ------------------------------------
# ------------------------------------
# ------------------------------------
- Preconditioning = SIMP(statut = 'o',typ = 'TXM',
+ Preconditioning = SIMP(statut = 'o',typ = 'TXM',max="**",
# ------------------------------------
# PNPN Soizic ? Est ce que c'est une liste
# Comment fait-on le into est faux : voir l aide
# PN Je propose qu 'on puisse faire +sieurs choix et qu on recalcule en sortie
# ou on propose des choix croisés parce que toutes les combinaisons ne sont pas possibles ?
#
- into = [ "Diagonal", "No preconditioning", "Diagonal condensee", "Crout", \
- "Gauss-Seidel", "Diagonal and Crout", "Diagonal condensed and Crout"],
- defaut="Diagonal",
+ into = [ "Diagonal", "No preconditioning", "Diagonal condensee", "Crout", "Gauss-Seidel", ],
+ defaut=("Diagonal",), homo="SansOrdreNiDoublon",
fr='Permet de preconditionner le systeme de l etape de propagation afin d accelerer la convergence \n\
lors de sa resolution. Certains preconditionnements sont cumulables : (les diagonaux 2 ou 3 avec les autres)\n\
Pour cette raison on ne retient que les nombres premiers pour designer les preconditionnements. Si l on souhaite en cumuler\n\
Matrix_Informations = FACT(statut = 'f',
# ------------------------------------
# ------------------------------------
- Matrix_Vector_Product = SIMP(statut = 'f',typ = 'TXM',
+ Matrix_Vector_Product = SIMP(statut = 'o',typ = 'TXM',
# ------------------------------------
into = ["Classic", "Frontal"],
+ defaut='Classic',
fr = 'attention, si frontal, il faut une numerotation speciale des points',
ang = 'beware, with option 2, a special numbering of points is required',
),
# ------------------------------------
- Matrix_Storage = SIMP(statut = 'f',typ = 'TXM',
+ Matrix_Storage = SIMP(statut = 'o',typ = 'TXM',
# ------------------------------------
- into = ["Classical EBE","Edge-based storage",]
+ into = ["Classical EBE","Edge-based storage",],
+ defaut='Edge-based storage',
),
),# fin Matrix_Informations
# ------------------------------------
# ------------------------------------
- Advection_Propagation = FACT(statut = 'o',
+ Type_Of_Advection = FACT(statut = 'o',
# ------------------------------------
# PNPNPN recalcul
# soizic. choix 3 et 4 et 13 et 14
# Attention recalcul de Type_Of_Advection
# ------------------------------------
- Advection_Of_U_And_V = SIMP(statut = 'o',typ = bool, defaut = False,
+ Advection_Of_U_And_V = SIMP(statut = 'o',typ = bool, defaut = True,
# ------------------------------------
fr = 'Prise en compte ou non de la convection de U et V.',
ang = 'The advection of U and V is taken into account or ignored.'),
# ------------------------------------
b_upwind = BLOC(condition = "Type_Of_Advection_U_And_V == 'SUPG'",
# ------------------------------------
+# ------------------------------------
+ Supg_Option_U_And_V = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
+# ------------------------------------
+ into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
+
# ------------------------------------
Upwind_Coefficients_Of_U_And_V = SIMP(statut = 'o',typ = 'R', defaut = 1.)
# ------------------------------------
),# fin b_u_v
# ------------------------------------
- Advection_Of_H = SIMP(statut = 'o',typ = bool, defaut = False,
+ Advection_Of_H = SIMP(statut = 'o',typ = bool, defaut = True,
# ------------------------------------
fr = 'Prise en compte ou non de la convection de H.',
ang = 'The advection of H is taken into account or ignored.'),
# ------------------------------------
b_upwind_H = BLOC(condition = "Type_Of_Advection_H == 'SUPG'",
# ------------------------------------
+# ------------------------------------
+ Supg_Option_H = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
+# ------------------------------------
+ into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
+
# ------------------------------------
Upwind_Coefficients_Of_H = SIMP(statut = 'o',typ = 'R', defaut = 1.)
# ------------------------------------
),# fin b_h
# ------------------------------------
- Advection_Of_K_And_Epsilon = SIMP(statut = 'o',typ = bool, defaut = False,
+ Advection_Of_K_And_Epsilon = SIMP(statut = 'o',typ = bool, defaut = True,
# ------------------------------------
fr = 'Prise en compte ou non de la convection de Tracer.',
ang = 'The advection of Tracer is taken into account or ignored.'),
# ------------------------------------
b_upwind_k = BLOC(condition = "Type_Of_Advection_K_And_Epsilon == 'SUPG'",
# ------------------------------------
+# ------------------------------------
+ Supg_Option_Tracers = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
+# ------------------------------------
+ into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
+
# ------------------------------------
Upwind_Coefficients_Of_K_And_Epsilon = SIMP(statut = 'o',typ = 'R', defaut = 1.)
# ------------------------------------
),# fin b_k
# ------------------------------------
- Advection_Of_Tracers = SIMP(statut = 'o',typ = bool, defaut = False,
+ Advection_Of_Tracers = SIMP(statut = 'o',typ = bool, defaut = True,
# ------------------------------------
fr = 'Prise en compte ou non de la convection de Tracer.',
ang = 'The advection of Tracer is taken into account or ignored.'),
# ------------------------------------
b_upwind_Tracers = BLOC(condition = "Type_Of_Advection_Tracers == 'SUPG'",
# ------------------------------------
+# ------------------------------------
+ Supg_Option_K_And_Epsilon = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
+# ------------------------------------
+ into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
+
# ------------------------------------
Upwind_Coefficients_Of_Tracers = SIMP(statut = 'o',typ = 'R', defaut = 1.)
# ------------------------------------
if Priority to fluxes, Dirichlet prescribed values are not obeyed,but the fluxes are correct',),
), # fin b_traitement
- ), # Fin Advection_Propagation
+ ), # Fin Type_Of_Advection
-# ------------------------------------
- Scheme_For_Advection_Of_K_Epsilon = SIMP(statut = 'o',typ = 'TXM',
-# ------------------------------------
- into = ["No advection", "Characteristics", "Explicit + SUPG", "Explicit leo postma", "Explicit + murd scheme N", "Explicit + murd scheme PSI", "Leo postma for tidal flats", "N-scheme for tidal flats"],
- fr = 'Choix du schema de convection pour k et epsilon, remplace FORME DE LA CONVECTION',
- ang = 'Choice of the advection scheme for k and epsilon, replaces TYPE OF ADVECTION',),
-
#PNPNPN
# recalculer la liste de 4
# Attention bloc selon le type de convection
# ------------------------------------
- SUPG = FACT(statut = 'o',
+# SUPG = FACT(statut = 'o',
# ------------------------------------
# ------------------------------------
- Supg_Option_U_And_V = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
+# Supg_Option_U_And_V = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
# ------------------------------------
- into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
+# into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
# ------------------------------------
- Supg_Option_H = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
+# Supg_Option_H = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
# ------------------------------------
- into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
+# into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
# ------------------------------------
- Supg_Option_Tracers = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
+# Supg_Option_Tracers = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
# ------------------------------------
- into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
+# into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
# ------------------------------------
- Supg_Option_K_And_Epsilon = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
+# Supg_Option_K_And_Epsilon = SIMP(statut = 'o', defaut = 'Modified SUPG', typ = 'TXM',
# ------------------------------------
- into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
- ), # Fin de SUPG
+# into = ['No upwinding', 'Classical SUPG','Modified SUPG']),
+# ), # Fin de SUPG
# ------------------------------------
Mass_Lumping_On_H = SIMP(statut = 'o',typ = 'R', defaut = 0,
fr = 'Fixe le taux de mass-lumping effectue sur la vitesse.',
ang = 'Sets the amount of mass-lumping that is performed on the velocity.'),
+# ------------------------------------
+ Mass_Lumping_For_Weak_Characteristics = SIMP(statut = 'o',typ = 'R',defaut = 0,
+# ------------------------------------
+ fr = 'Applique a la matrice de masse',
+ ang = 'To be applied to the mass matrix',),
# ------------------------------------
Free_Surface_Gradient_Compatibility = SIMP(statut = 'o',typ = 'R',defaut = 1.,
# ------------------------------------
fr = 'Des valeurs inferieures a 1 suppriment les oscillations parasites',
ang = 'Values less than 1 suppress spurious oscillations'),
-
# ------------------------------------
Number_Of_Sub_Iterations_For_Non_Linearities = SIMP(statut = 'o',typ = 'I',
# ------------------------------------
the results of the previous sub-iteration is used to update the advection and propagation field.\n\
The non-linearities can be taken into account through this technique.',),
-# ------------------------------------
- Mass_Lumping_For_Weak_Characteristics = SIMP(statut = 'o',typ = 'R',defaut = 0,
-# ------------------------------------
- fr = 'Applique a la matrice de masse',
- ang = 'To be applied to the mass matrix',),
), # fin Advection
), # fin Discretization_Implicitation
+# ------------------------------------
+ Tidal=FACT(statut='f',
# ------------------------------------
Tidal_Flats = SIMP(statut = 'o',typ = bool,defaut = True,
# ------------------------------------
ang = 'Sets the minimum H value when option H CLIPPING is implemented. Not fully implemented.',),
), # fin b_clipping
), # fin bloc b_tidal_flats
+ ), # fin bloc tidal
# ------------------------------------
Various = FACT(
# -----------------------------------------------------------------------
PHYSICAL_PARAMETERS = PROC(nom = "PHYSICAL_PARAMETERS",op = None,
# -----------------------------------------------------------------------
+ UIinfo = { "groupes" : ( "CACHE", )},
# ------------------------------------
- Meteorology = FACT(statut = 'o',
-# ------------------------------------
-
-# ------------------------------------
- Wind = SIMP(statut = 'o',typ = bool,defaut = False,
-# ------------------------------------
- fr = 'Prise en compte ou non des effets du vent.',
- ang = 'Determines whether the wind effects are to be taken into account or not.'),
-
-# ------------------------------------
- b_Wind = BLOC(condition = "Wind == True",
-# ------------------------------------
-# ------------------------------------
- Wind_Velocity_Along_X = SIMP(statut = 'o',typ = 'R', defaut = 0.,
-# ------------------------------------
- fr = 'Composante de la vitesse du vent suivant l''axe des x (m/s).',
- ang = 'Wind velocity, component along x axis (m/s).',),
-
-# ------------------------------------
- Wind_Velocity_Along_Y = SIMP(statut = 'o',typ = 'R',defaut = 0.,
-# ------------------------------------
- fr = 'Composante de la vitesse du vent suivant l''axe des y (m/s).',
- ang = 'Wind velocity, component along y axis (m/s).',),
-
-# ------------------------------------
- Threshold_Depth_For_Wind = SIMP(statut = 'o',typ = 'R',defaut = 0.,
-# ------------------------------------
- fr = 'Retire la force due au vent dans les petites profondeurs',
- ang = 'Wind is not taken into account for small depths' ),
-
-# ------------------------------------
- Coefficient_Of_Wind_Influence = SIMP( statut = 'o',typ = 'R', defaut = 0.0 ,
-# ------------------------------------
- fr = 'Fixe la valeur du coefficient d entrainement du vent (cf. Note de principe).',
- ang = 'Sets the value of the wind driving coefficient. Refer to principle note.',),
-
-# ------------------------------------
- Option_For_Wind = SIMP( statut = 'o',typ = 'TXM', defaut = 0 ,
-# ------------------------------------
- into = ["No wind","Constant in time and space","Variable in time","Variable in time and space"],
- fr = 'donne les options pour introduire le vent',
- ang = 'gives option for managing the wind'),
-
-# ------------------------------------
- file_For_wind = BLOC (condition = 'Option_For_Wind == "Variable in time" or Option_For_Wind == "Variable in time and space"',
-# ------------------------------------
-# ------------------------------------
- Consigne = SIMP(statut = "o",homo = 'information',typ = "TXM",
-# ------------------------------------
- defaut = "give formated file 3"),
- ), # fin bloc file_For_wind
-
-# ------------------------------------
- speed_For_wind = BLOC (condition = 'Option_For_Wind == "Constant in time and space"',
-# ------------------------------------
-# ------------------------------------
- Speed_And_Direction_Of_Wind = SIMP( statut = 'o', defaut = (0.0, 0.0) ,
-# ------------------------------------
- typ = Tuple(2),validators = VerifTypeTuple(('R','R')),
- fr = 'Donne la vitesse et la direction (en degres de 0 a 360, 0 etant y = 0 et x = +inf) du vent',
- ang = 'gives the speed and direction (degre (from 0 to 360), 0 given y = 0 anx x = +infinity)',),
- ), # speed_For_wind
-
- ), # fin b_Wind
-
-# ------------------------------------
- Air_Pressure = SIMP(statut = 'o',typ = bool, defaut = False,
-# ------------------------------------
- fr = 'Permet de decider si l''on prend ou non en compte l''influence d''un champ de pression.',
- ang = 'Provided to decide whether the influence of an atmosphere field is taken into account or not.'),
-
-# ------------------------------------
- b_air = BLOC(condition = "Air_Pressure == True",
-# ------------------------------------
-# ------------------------------------
- Value_Of_Atmospheric_Pressure = SIMP( statut = 'o',typ = 'R',
-# ------------------------------------
- defaut = 100000.0 ,
- fr = 'donne la valeur de la pression atmospherique lorsquelle est constante en temps et en espace',
- ang = 'gives the value of atmospheric pressure when it is contant in time and space',),
- ), # fin b_air
-
-# ------------------------------------
- Rain_Or_Evaporation = SIMP(statut = 'o',typ = bool,
-# ------------------------------------
- defaut = False,
- fr = 'Pour ajouter un apport ou une perte d''eau en surface.',
- ang = 'to add or remove water at the free surface. ',),
-
-# -----------------------------------
- b_Rain = BLOC(condition = "Rain_Or_Evaporation == True",
-# ------------------------------------
-# ------------------------------------
- Rain_Or_Evaporation_In_Mm_Per_Day = SIMP(statut = 'o',typ = 'I',defaut = 0.),
-# ------------------------------------
- ), # fin b_Rain
-
- ), # fin Meteorology
-
-# ------------------------------------
- Wave = FACT(statut = 'o',
-# ------------------------------------
-
-# ------------------------------------
- Wave_Driven_Currents = SIMP(statut = 'o',
-# ------------------------------------
- typ = bool, defaut = False,
- fr = 'Active la prise en compte des courants de houle',
- ang = 'Wave driven currents are taken into account.'),
-
-# ------------------------------------
- b_Wave = BLOC(condition = "Wave_Driven_Currents == True",
-# ------------------------------------
-# ------------------------------------
- Record_Number_In_Wave_File = SIMP(statut = 'o',typ = 'I', defaut = 1,
-# ------------------------------------
- fr = 'Numero d enregistrement dans le fichier des courants de houle',
- ang = 'Record number to read in the wave driven currents file'),
- ), # fin b_Wave
- ), # fin Wave
-
-# ------------------------------------
- Friction_Data = SIMP(statut = 'o',typ = bool,defaut = False),
-# ------------------------------------
-# ------------------------------------
- b_Friction = BLOC(condition = "Friction_Data == True",
Friction_Setting = FACT(statut = 'o',
# ------------------------------------
# ------------------------------------
# ------------------------------------
), # fin b_def_zone
- ), # fin du fact Friction
), # Fin du bloc Friction
+# ------------------------------------
+ Meteorology = FACT(statut = 'f',
+# ------------------------------------
+
+# ------------------------------------
+ Wind = SIMP(statut = 'o',typ = bool,defaut = False,
+# ------------------------------------
+ fr = 'Prise en compte ou non des effets du vent.',
+ ang = 'Determines whether the wind effects are to be taken into account or not.'),
+
+# ------------------------------------
+ b_Wind = BLOC(condition = "Wind == True",
+# ------------------------------------
+# ------------------------------------
+ Wind_Velocity_Along_X = SIMP(statut = 'o',typ = 'R', defaut = 0.,
+# ------------------------------------
+ fr = 'Composante de la vitesse du vent suivant l''axe des x (m/s).',
+ ang = 'Wind velocity, component along x axis (m/s).',),
+
+# ------------------------------------
+ Wind_Velocity_Along_Y = SIMP(statut = 'o',typ = 'R',defaut = 0.,
+# ------------------------------------
+ fr = 'Composante de la vitesse du vent suivant l''axe des y (m/s).',
+ ang = 'Wind velocity, component along y axis (m/s).',),
+
+# ------------------------------------
+ Threshold_Depth_For_Wind = SIMP(statut = 'o',typ = 'R',defaut = 0.,
+# ------------------------------------
+ fr = 'Retire la force due au vent dans les petites profondeurs',
+ ang = 'Wind is not taken into account for small depths' ),
+
+# ------------------------------------
+ Coefficient_Of_Wind_Influence = SIMP( statut = 'o',typ = 'R', defaut = 0.0 ,
+# ------------------------------------
+ fr = 'Fixe la valeur du coefficient d entrainement du vent (cf. Note de principe).',
+ ang = 'Sets the value of the wind driving coefficient. Refer to principle note.',),
+
+# ------------------------------------
+ Option_For_Wind = SIMP( statut = 'o',typ = 'TXM', defaut = 0 ,
+# ------------------------------------
+ into = ["No wind","Constant in time and space","Variable in time","Variable in time and space"],
+ fr = 'donne les options pour introduire le vent',
+ ang = 'gives option for managing the wind'),
+
+# ------------------------------------
+ file_For_wind = BLOC (condition = 'Option_For_Wind == "Variable in time" or Option_For_Wind == "Variable in time and space"',
+# ------------------------------------
+# ------------------------------------
+ Consigne = SIMP(statut = "o",homo = 'information',typ = "TXM",
+# ------------------------------------
+ defaut = "give formated file 3"),
+ ), # fin bloc file_For_wind
+
+# ------------------------------------
+ speed_For_wind = BLOC (condition = 'Option_For_Wind == "Constant in time and space"',
+# ------------------------------------
+# ------------------------------------
+ Speed_And_Direction_Of_Wind = SIMP( statut = 'o', defaut = (0.0, 0.0) ,
+# ------------------------------------
+ typ = Tuple(2),validators = VerifTypeTuple(('R','R')),
+ fr = 'Donne la vitesse et la direction (en degres de 0 a 360, 0 etant y = 0 et x = +inf) du vent',
+ ang = 'gives the speed and direction (degre (from 0 to 360), 0 given y = 0 anx x = +infinity)',),
+ ), # speed_For_wind
+
+ ), # fin b_Wind
+
+# ------------------------------------
+ Air_Pressure = SIMP(statut = 'o',typ = bool, defaut = False,
+# ------------------------------------
+ fr = 'Permet de decider si l''on prend ou non en compte l''influence d''un champ de pression.',
+ ang = 'Provided to decide whether the influence of an atmosphere field is taken into account or not.'),
+
+# ------------------------------------
+ b_air = BLOC(condition = "Air_Pressure == True",
+# ------------------------------------
+# ------------------------------------
+ Value_Of_Atmospheric_Pressure = SIMP( statut = 'o',typ = 'R',
+# ------------------------------------
+ defaut = 100000.0 ,
+ fr = 'donne la valeur de la pression atmospherique lorsquelle est constante en temps et en espace',
+ ang = 'gives the value of atmospheric pressure when it is contant in time and space',),
+ ), # fin b_air
+
+# ------------------------------------
+ Rain_Or_Evaporation = SIMP(statut = 'o',typ = bool,
+# ------------------------------------
+ defaut = False,
+ fr = 'Pour ajouter un apport ou une perte d''eau en surface.',
+ ang = 'to add or remove water at the free surface. ',),
+
+# -----------------------------------
+ b_Rain = BLOC(condition = "Rain_Or_Evaporation == True",
+# ------------------------------------
+# ------------------------------------
+ Rain_Or_Evaporation_In_Mm_Per_Day = SIMP(statut = 'o',typ = 'I',defaut = 0.),
+# ------------------------------------
+ ), # fin b_Rain
+
+ ), # fin Meteorology
+
+# ------------------------------------
+ Wave = FACT(statut = 'f',
+# ------------------------------------
+
+# ------------------------------------
+ Wave_Driven_Currents = SIMP(statut = 'o',
+# ------------------------------------
+ typ = bool, defaut = False,
+ fr = 'Active la prise en compte des courants de houle',
+ ang = 'Wave driven currents are taken into account.'),
+
+# ------------------------------------
+ b_Wave = BLOC(condition = "Wave_Driven_Currents == True",
+# ------------------------------------
+# ------------------------------------
+ Record_Number_In_Wave_File = SIMP(statut = 'o',typ = 'I', defaut = 1,
+# ------------------------------------
+ fr = 'Numero d enregistrement dans le fichier des courants de houle',
+ ang = 'Record number to read in the wave driven currents file'),
+ ), # fin b_Wave
+ ), # fin Wave
+
# ------------------------------------
), # fin fact Parameters_Estimation
+# ------------------------------------
+ Sources = FACT( statut = 'f',
+# ------------------------------------
# ------------------------------------
Number_Of_Sources = SIMP( statut = 'o',typ = 'I', defaut = 0 ,),
# ------------------------------------
ang = 'Source term multiplied by a finite element basis, Source term multiplied by a Dirac function',),
),#fin bloc source - exits
+ ),#fin MC source - exits
-# ------------------------------------
- Water_Density = SIMP(statut = 'o',typ = 'R',defaut = 1000.,
-# ------------------------------------
- fr = 'Fixe la valeur de la masse volumique de l eau.',
- ang = 'set the value of water density',
- ),
# ------------------------------------
- Coriolis_Settings = FACT(statut = 'o',
+ Coriolis_Settings = FACT(statut = 'f',
# ------------------------------------
# ------------------------------------
Coriolis = SIMP( statut='o',typ=bool,
denoted FCOR in the code, should be equal to 2 w sin(l)d where w denotes the earth angular speed of rotation and l the latitude. \n\
w = 7.27 10-5 rad/sec The Coriolis force components are then: FU = FCOR x V, FV = -FCOR x U In spherical coordinates, the latitudes are known',),
), #fin Coriolis_Settings
-# ------------------------------------
- Tsunami = FACT(statut = 'o',
-# ------------------------------------
-# -------------------------------------------------------
- Option_For_Tsunami_Generation = SIMP( statut='o',typ='I', defaut=0 ,
-# -------------------------------------------------------
- fr = '',
- ang= '',),
-# -------------------------------------------------------
- Physical_Characteristics_Of_The_Tsunami = SIMP( statut='o',typ='R',
-# -------------------------------------------------------
- min=10,max=10,
- defaut=(100.0, 210000.0, 75000.0, 13.6, 81.0, 41.0, 110.0, 0.0, 0.0, 3.0) ,
- fr = '',
- ang= '',),
- ), #fin Tsunami
+# ------------------------------------
+ Various = FACT( statut = 'f',
+# ------------------------------------
+# ------------------------------------
+ Water_Density = SIMP(statut = 'o',typ = 'R',defaut = 1000.,
+# ------------------------------------
+ fr = 'Fixe la valeur de la masse volumique de l eau.',
+ ang = 'set the value of water density',
+ ),
-# ------------------------------------
- Gravity_Acceleration = SIMP(statut = 'o',typ = 'R',defaut = 9.81,
-# ------------------------------------
+# ------------------------------------
+ Gravity_Acceleration = SIMP(statut = 'o',typ = 'R',defaut = 9.81,
+# ------------------------------------
fr = 'Fixe la valeur de l acceleration de la pesanteur.',
ang = 'Set the value of the acceleration due to gravity.',
- ),
-
+ ),
-# ------------------------------------
- Various = FACT( statut = 'o',
-# ------------------------------------
# ------------------------------------
Vertical_Structures = SIMP(statut = 'o',typ = bool,defaut = False,
# ------------------------------------
defaut = "subroutine DRAGFO must then be implemented"),
), # fin maskob
),
+
+# -----------------------------------------------------------------------
+ Secondary_Currents_Settings = FACT( statut='f',
+# -----------------------------------------------------------------------
+# -----------------------------------------------------------------------
+ Secondary_Currents = SIMP( statut='o',typ=bool,
+# -----------------------------------------------------------------------
+ defaut=False ,
+ fr = 'Pour prendre en compte les courants secondaires',
+ ang= 'Using the parametrisation for secondary currents',
+ ),
+
+# -----------------------------------------------------------------------
+ b_currents_exists = BLOC(condition = "Secondary_Currents == True",
+# -----------------------------------------------------------------------
+# -----------------------------------------------------------------------
+ Production_Coefficient_For_Secondary_Currents = SIMP( statut='o',typ='R',
+# -----------------------------------------------------------------------
+ defaut=7.071 ,
+ fr = 'Une constante dans les termes de creation de Omega',
+ ang= 'A constant in the production terms of Omega',),
+
+# -----------------------------------------------------------------------
+ Dissipation_Coefficient_For_Secondary_Currents = SIMP( statut='o',typ='R',
+# -----------------------------------------------------------------------
+ defaut=0.5 ,
+ fr = 'Coefficient de dissipation de Omega',
+ ang= 'Coefficient of dissipation term of Omega',),
+
+ ), # fin b_currents_exists
+ ), # fin Secondary_Currents_Settings
+
+# ------------------------------------
+ Tsunami = FACT(statut = 'f',
+# ------------------------------------
+# -------------------------------------------------------
+ Option_For_Tsunami_Generation = SIMP( statut='o',typ='I', defaut=0 ,
+# -------------------------------------------------------
+ fr = '',
+ ang= '',),
+
+# -------------------------------------------------------
+ Physical_Characteristics_Of_The_Tsunami = SIMP( statut='o',typ='R',
+# -------------------------------------------------------
+ min=10,max=10,
+ defaut=(100.0, 210000.0, 75000.0, 13.6, 81.0, 41.0, 110.0, 0.0, 0.0, 3.0) ,
+ fr = '',
+ ang= '',),
+ ), #fin Tsunami
+
)# fin PHYSICAL_PARAMETERS
# -----------------------------------------------------------------------
"Scalar velocity (m/s)", "Wind along X axis (m/s)", "Wind along Y axis (m/s)", "Air pressure (Pa)",
"Friction coefficient", "Drift along X (m)", "Drift along Y (m)", "Courant number ", "Supplementary variable N ",
"Supplementary variable O ", "Supplementary variable R ", "Supplementary variable Z ", "Maximum elevation",
- "Time of maximum elevation ", "Maximum velocity", "Time of maximum velocity", "Friction velocity "],),
+ "Time of maximum elevation ", "Maximum velocity", "Time of maximum velocity", "Friction velocity "],
+ homo="SansOrdreNiDoublon"),
# ------------------------------------
Graphic_Printout_Period = SIMP(statut = 'o', typ = 'I',defaut = 1,
# ------------------------------------
Results_File = SIMP( statut = 'o',
# ------------------------------------
- typ = ('Fichier', 'Steering Files (*.cas);;All Files (*)',),
+ typ = ('Fichier', 'All Files (*)',),
fr = 'Nom du fichier dans lequel sont ecrits les resultats du calcul avec la periodicite donnee PERIODE POUR LES SORTIES GRAPHIQUES.',
ang = 'Name of the file into which the computation results shall be written, the periodicity being given by GRAPHIC PRINTOUT PERIOD.',),
The results to be entered into this file shall be written on channel 29.',),
+# ------------------------------------
+ Binary_Results_File = SIMP( statut = 'f',
+# ------------------------------------
+ typ = ('Fichier', ';;All Files (*)',),
+ fr = "Fichier de resultats code en binaire mis a la disposition de l'utilisateur.\n\
+Les resultats a placer dans ce fichier seront a ecrire sur le canal 28.",
+ ang = "Additional binary-coded result file made available to the user. \n\
+The results to be entered into this file shall be written on channel 28.",),
+
+
# ------------------------------------
Output_Of_Initial_Conditions = SIMP(typ = bool, statut = 'o',
# ------------------------------------
the relative error in the mass for that time step. The relative error in the mass over the whole computation can be found at the end of the listing.',
),
-
-# ------------------------------------
- Binary_Results_File = SIMP( statut = 'f',
-# ------------------------------------
- typ = ('Fichier', ';;All Files (*)',),
- fr = "Fichier de resultats code en binaire mis a la disposition de l'utilisateur.\n\
-Les resultats a placer dans ce fichier seront a ecrire sur le canal 28.",
- ang = "Additional binary-coded result file made available to the user. \n\
-The results to be entered into this file shall be written on channel 28.",),
-
# ------------------------------------
Controls = FACT( statut='f',
# ------------------------------------
# ------------------------------------
Fourier_Analysis_Periods = SIMP( statut='o',
# ------------------------------------
- typ = Tuple(2), validators = VerifTypeTuple(('R','R')),
+ max='**', typ = 'R',
fr = 'Liste des periodes que lon veut analyser',
ang= 'List of periods to be analysed',),
# -----------------------------------------------------------------------
GENERAL_PARAMETERS = PROC(nom = "GENERAL_PARAMETERS",op = None,
# -----------------------------------------------------------------------
+ UIinfo = { "groupes" : ( "CACHE", )},
+# ------------------------------------
+ Location = FACT(statut = 'o',
+# ------------------------------------
# ------------------------------------
Origin_Coordinates = SIMP( statut='o',
# ------------------------------------
defaut = "Cartesian, not georeferenced",),
), # fin b_Spher_faux
+ ), # Fin de Location
+# ------------------------------------
+ Time = FACT(statut = 'o',
+# ------------------------------------
+ regles = (AU_MOINS_UN('Number_Of_Time_Steps','Duration'),
+ EXCLUS('Number_Of_Time_Steps','Duration'),
+ ),
+
+# -----------------------------------------------------------------------
+ Consigne = SIMP(statut = "o",homo = 'information',typ = "TXM",
+# -----------------------------------------------------------------------
+ defaut = "Choose between Keywords 'Number_Of_Time_Steps' or 'Duration'"),
+
+# ------------------------------------
+ Time_Step = SIMP(statut = 'o',
+# ------------------------------------
+ typ = 'R', defaut = 1,
+ fr = 'Definit le nombre de pas de temps effectues lors de l''execution du code.',
+ ang = 'Specifies the number of time steps performed when running the code.'),
+
+# ------------------------------------
+ Number_Of_Time_Steps = SIMP(statut = 'f',typ = 'I',
+# ------------------------------------
+ fr = 'Definit le nombre de pas de temps effectues lors de l''execution du code.',
+ ang = 'Specifies the number of time steps performed when running the code.'),
+
+# ------------------------------------
+ Duration = SIMP(statut = 'f',typ = 'R',
+# ------------------------------------
+ fr = 'duree de la simulation. alternative au parametre nombre de pas de temps. \n\
+On en deduit le nombre de pas de temps en prenant l''entier le plus proche de (duree du calcul/pas de temps).\n\
+Si le nombre de pas de temps est aussi donne, on prend la plus grande valeur',
+ ang = 'duration of simulation. May be used instead of the parameter NUMBER OF TIME STEPS. \n\
+The nearest integer to (duration/time step) is taken. If NUMBER OF TIME STEPS is also given, the greater value is taken',),
+
+# PNPN
+# Attention, on laisse la règle mais il est possible d avoir les 2 en entrées --> attention au convert
+# ------------------------------------
+ Variable_Time_Step = SIMP(statut = 'o',typ = bool, defaut=False,
+# ------------------------------------
+ fr = 'Pas de temps variable pour avoir un nombre de courant souhaite',
+ ang = 'Variable time-step to get a given Courant number'),
+
+# ------------------------------------
+ b_var_time = BLOC(condition = "Variable_Time_Step == True" ,
+# ------------------------------------
+# ------------------------------------
+ Desired_Courant_Number = SIMP(statut = 'o',typ = 'R',
+# ------------------------------------
+ fr = 'Nombre de Courant souhaite ',
+ ang = 'Desired Courant number',),
+ ),
+
+# ------------------------------------
+ Original_Date_Of_Time = FACT( statut = 'o',
+# ------------------------------------
+ fr = "Permet de fixer la date d'origine des temps du modele lors de la prise en compte de la force generatrice de la maree.",
+ ang = 'Give the date of the time origin of the model when taking into account the tide generating force.',
+ Year = SIMP(statut = 'o',typ = 'I',val_min = 1900, defaut = 1900),
+ Month = SIMP(statut = 'o',typ = 'I',val_min = 1,val_max = 12, defaut = 1),
+ Day = SIMP(statut = 'o',typ = 'I',val_min = 1,val_max = 31,defaut = 1),),
+
+# ------------------------------------
+ Original_Hour_Of_Time = FACT( statut = 'o',
+# ------------------------------------
+ fr = "Permet de fixer l'heure d'origine des temps du modele lors de la prise en compte de la force generatrice de la maree.",
+ ang = 'Give the time of the time origin of the model when taking into account the tide generating force.',
+ Hour = SIMP(statut = 'o',typ = 'I',val_min = 0,val_max = 24, defaut = 0),
+ Minute = SIMP(statut = 'o',typ = 'I',val_min = 0,val_max = 60, defaut = 0),
+ Second = SIMP(statut = 'o',typ = 'I',val_min = 0,val_max = 60, defaut = 0),
+ ),
+
+# ------------------------------------
+ Stop_If_A_Steady_State_Is_Reached = SIMP(statut = 'o',
+# ------------------------------------
+ typ = bool,defaut = False),
+
+# ------------------------------------
+ b_stop = BLOC(condition = "Stop_If_A_Steady_State_Is_Reached == True" ,
+# ------------------------------------
+# ------------------------------------
+ Stop_Criteria = SIMP(statut = 'o',typ = Tuple(3),validators = VerifTypeTuple(('R','R','R')),
+# ------------------------------------
+ fr = "Criteres d'arret pour un ecoulement permanent. ces coefficients sont respectivement appliques a\n\
+ 1- U et V 2- H 3- T ",
+ ang = 'Stop criteria for a steady state These coefficients are applied respectively to\n\
+ 1- U and V 2- H 3- T ',),
+ ), # fin b_stop
+
+# ------------------------------------
+ Control_Of_Limits = SIMP(statut = 'o',
+# ------------------------------------
+ typ = bool, defaut = False,
+ fr = 'Le programme s''arrete si les limites sur u,v,h ou t sont depassees',
+ ang = 'The program is stopped if the limits on u,v,h, or t are trespassed',),
+
+# ------------------------------------
+ b_limit = BLOC(condition = "Control_Of_Limit == True" ,
+ Limit_Values = FACT(statut = 'o',
+# Attention : 1 seul MC ds Telemac
+# ------------------------------------
+ fr = 'valeurs mini et maxi acceptables min puis max',
+ ang = 'min and max acceptable values ',
+
+# ------------------------------------
+ Limit_Values_H = SIMP(statut = 'o',typ = Tuple(2),
+# ------------------------------------
+ validators = VerifTypeTuple(('R','R')), defaut = (-1000,9000)),
+# ------------------------------------
+ Limit_Values_U = SIMP(statut = 'o',typ = Tuple(2),
+# ------------------------------------
+ validators = VerifTypeTuple(('R','R')), defaut = (-1000,1000)),
+# ------------------------------------
+ Limit_Values_V = SIMP(statut = 'o',typ = Tuple(2),
+# ------------------------------------
+ validators = VerifTypeTuple(('R','R')), defaut = (-1000,1000)),
+# ------------------------------------
+ Limit_Values_T = SIMP(statut = 'o',typ = Tuple(2),
+# ------------------------------------
+ validators = VerifTypeTuple(('R','R')), defaut = (-1000,1000)),
+ ),), # fin Fact et b_limit
+ ), # Fin de Time
+
# Attention il faut recalculer en sortie : il faut 0 ou 1 et non un boolean
# ------------------------------------
Debugger = SIMP(typ = bool , statut = 'o',
),
)# fin TURBULENCE
-# -----------------------------------------------------------------------
-SECONDARY_CURRENTS_SETTINGS = PROC(nom = "SECONDARY_CURRENTS_SETTINGS",op = None,
-# -----------------------------------------------------------------------
-
-# -----------------------------------------------------------------------
- Secondary_Currents = SIMP( statut='o',typ=bool,
-# -----------------------------------------------------------------------
- defaut=False ,
- fr = 'Pour prendre en compte les courants secondaires',
- ang= 'Using the parametrisation for secondary currents',
- ),
-
-# -----------------------------------------------------------------------
- b_currents_exists = BLOC(condition = "Secondary_Currents == True",
-# -----------------------------------------------------------------------
-# -----------------------------------------------------------------------
- Production_Coefficient_For_Secondary_Currents = SIMP( statut='o',typ='R',
-# -----------------------------------------------------------------------
- defaut=7.071 ,
- fr = 'Une constante dans les termes de creation de Omega',
- ang= 'A constant in the production terms of Omega',),
-
-# -----------------------------------------------------------------------
- Dissipation_Coefficient_For_Secondary_Currents = SIMP( statut='o',typ='R',
-# -----------------------------------------------------------------------
- defaut=0.5 ,
- fr = 'Coefficient de dissipation de Omega',
- ang= 'Coefficient of dissipation term of Omega',),
- ), # fin b_currents_exists
-)# Fin SECONDARY_CURRENTS_SETTINGS
# -----------------------------------------------------------------------
-PARTICULE = PROC(nom = "PARTICULE",op = None,
+PARTICLE_TRANSPORT = PROC(nom = "PARTICLE_TRANSPORT",op = None,
# -----------------------------------------------------------------------
# -----------------------------------------------------------------------
Number_Of_Drogues = SIMP(statut = 'o',typ = 'I',defaut = 0,
ang = 'Algae type. For sphere, the algae particles will be modeled as spheres, for the other choices see Gaylord et al.(1994)',),
# -----------------------------------------------------------------------
- Diametre_Of_Algae = SIMP( statut = 'o',typ = 'R', defaut = 0.1 ,
+ Diameter_Of_Algae = SIMP( statut = 'o',typ = 'R', defaut = 0.1 ,
# -----------------------------------------------------------------------
fr = 'Diametre des algues en m',
ang = 'Diametre of algae in m',),
# -----------------------------------------------------------------------
Sources = FACT( statut='o',
# -----------------------------------------------------------------------
+# ------------------------------------
+ Consigne = SIMP(statut = "o",homo = 'information',typ = "TXM",
+# ------------------------------------
+ defaut = "La longueur de la liste doit etre nb de source * nb de tracers"),
# -----------------------------------------------------------------------
Values_Of_The_Tracers_At_The_Sources = SIMP( statut='o',typ='R', max='**' ,
# -----------------------------------------------------------------------
-# en fait, c'est une liste de Tuple de 2. Il faudrait caluler la taille en fonction du Nombre de sources
fr = 'Valeurs des traceurs a chacune des sources',
ang= 'Values of the tracers at the sources',),
-
), # fin Sources
# -----------------------------------------------------------------------
Metereology = FACT( statut='o',
)# fin TRACERS
-Ordre_Des_Commandes = ( 'INITIALIZATION', 'GENERAL_PARAMETERS','INITIAL_STATE', 'BOUNDARY_CONDITIONS', 'NUMERICAL_PARAMETERS',
- 'PHYSICAL_PARAMETERS', 'CONSTRUCTION_WORKS_MODELLING', 'TRACERS', 'TIDE_PARAMETERS',
-'TURBULENCE', 'SECONDARY_CURRENTS_SETTINGS', 'PARTICULE', 'OUTPUT_FILES')
+Ordre_Des_Commandes = ( 'INITIALIZATION', 'BOUNDARY_CONDITIONS','GENERAL_PARAMETERS', 'PHYSICAL_PARAMETERS', 'NUMERICAL_PARAMETERS',
+'TURBULENCE', 'TRACERS', 'PARTICLE_TRANSPORT', 'CONSTRUCTION_WORKS_MODELLING', 'TIDE_PARAMETERS', 'OUTPUT_FILES')