]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
gestion des listes et label sur 2
authorpascale.noyret <pascale.noyret@edf.fr>
Thu, 4 Jun 2015 13:25:12 +0000 (15:25 +0200)
committerpascale.noyret <pascale.noyret@edf.fr>
Thu, 4 Jun 2015 13:25:12 +0000 (15:25 +0200)
49 files changed:
Adao/ADAO_Cata_V7_6_0.py
Adao/prefs_Adao.py
Aster/prefs_ASTER.py
Carmel3D/Carmel3D_Cata_frequentiel_V1.py
Carmel3D/ajoutGroupe.py
Carmel3D/opsCarmel.py
Carmel3D/prefs_CARMEL3D.py
InterfaceQT4/browser.py
InterfaceQT4/compomacro.py
InterfaceQT4/editor.py
InterfaceQT4/feuille.py
InterfaceQT4/gereListe.py
InterfaceQT4/groupe.py
InterfaceQT4/monChoixCommande.py
InterfaceQT4/monWidgetCommande.py
InterfaceQT4/monWidgetFact.py
InterfaceQT4/monWidgetFactPlie.py
InterfaceQT4/monWidgetPlusieursInto.py
InterfaceQT4/monWidgetPlusieursIntoOrdonne.py
InterfaceQT4/politiquesValidation.py
Noyau/N_VALIDATOR.py
Telemac/Telemac_Cata.py
Telemac/prefs_TELEMAC.py
Traducteur/calcG.py
Traducteur/changeValeur.py
Traducteur/dictErreurs.py
Traducteur/inseremocle.py
Traducteur/load.py
Traducteur/mocles.py
Traducteur/movemocle.py
Traducteur/removemocle.py
Traducteur/renamemocle.py
Traducteur/traduitV10V11.py
Traducteur/traduitV11V12.py
Traducteur/traduitV9V10.py
UiQT4/desWidget4a6RadioButton.ui
UiQT4/desWidgetCB.ui
UiQT4/desWidgetDate.ui
UiQT4/desWidgetHeure.ui
UiQT4/desWidgetPlusieursBase.ui
UiQT4/desWidgetPlusieursIntoOrdonne.ui
UiQT4/desWidgetRadioButton.ui
UiQT4/desWidgetSimpBase.ui
UiQT4/desWidgetSimpComplexe.ui
UiQT4/desWidgetSimpFichier.ui
UiQT4/desWidgetSimpTxt.ui
UiQT4/desWidgetTuple2.ui
UiQT4/desWidgetTuple3.ui
UiQT4/myMain.ui

index a383b0badd3c13fb2fdfc151aff98fd8d17e1c75..70bd3963ed96c4616c1dfc8823dcabf0fc95d1ff 100755 (executable)
@@ -1,7 +1,5 @@
 #-*-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
@@ -461,7 +459,7 @@ def F_InitChoice() : return  ("Background",
 
 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' ",
@@ -494,7 +492,7 @@ 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"),
@@ -730,7 +728,7 @@ def F_AlgorithmParameters(statut,algos_names) : return FACT(
         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"),
@@ -741,15 +739,26 @@ def F_AlgorithmParameters(statut,algos_names) : return FACT(
         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",
@@ -761,23 +770,23 @@ def F_AlgorithmParameters(statut,algos_names) : return FACT(
         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",
@@ -787,7 +796,7 @@ def F_AlgorithmParameters(statut,algos_names) : return FACT(
         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",
@@ -797,7 +806,7 @@ def F_AlgorithmParameters(statut,algos_names) : return FACT(
         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') ",
@@ -807,7 +816,7 @@ def F_AlgorithmParameters(statut,algos_names) : return FACT(
         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",
@@ -818,7 +827,7 @@ def F_AlgorithmParameters(statut,algos_names) : return FACT(
         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",
@@ -866,7 +875,7 @@ def F_AlgorithmParameters(statut,algos_names) : return FACT(
         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",
index 2fda728cc7082596f559a6895ed6c05aaccc6733..e28c0633c835b06f6affa75616a8c2cf4bcbf3f3 100644 (file)
@@ -14,10 +14,9 @@ encoding='iso-8859-1'
 # Choix des catalogues
 # format du Tuple (code,version,catalogue,formatOut, finit par defaut Ãventuellement)
 catalogues = (
-# ('Adao','V0',os.path.join(repIni,'monCode_Cata.py'),'python','python'),
- ('Adao','V1',os.path.join(repIni,'ADAO_Cata_V7_6_0.py'),'dicoImbrique','python'),
 # ('Adao','V1',os.path.join(repIni,'ADAO_Cata_V1.py'),'python','python'),
-# ('Adao','V2',os.path.join(repIni,'ADAO_Cata_V2.py'),'python','python'),
+ ('Adao','V760',os.path.join(repIni,'ADAO_Cata_V0_V7_6_0.py'),'python','python'),
+ ('Adao','V751',os.path.join(repIni,'ADAO_Cata_V0_V7_5_1.py'),'python','python'),
 )
 
 # lang indique la langue utilisée pour les chaines d'aide : fr ou ang
index 252ef0a242e6128d55056f6634299c9f97d14ce5..f9aa732c4eca239856838e932de0094862f5c13b 100644 (file)
@@ -50,7 +50,8 @@ catalogues=(
 #('ASTER','STA8.8',os.path.join(rep_cata,'cataSTA8'),'python'),
 #('ASTER','STA9.8',os.path.join(rep_cata,'cataSTA9'),'python'),
 #('ASTER','STA10.3',os.path.join(rep_cata,'cataSTA10'),'python'),
-('ASTER','STA11',os.path.join(rep_cata,'cataSTA11'),'python','defaut'),
+#('ASTER','STA11',os.path.join(rep_cata,'cataSTA11'),'python','defaut'),
+('ASTER','STA12',os.path.join(rep_cata,'cataSTA12'),'python','defaut'),
 )
 exec_acrobat    = '/usr/bin/xgd-open'
 
index 0064033ed67ef0facddf472b48eef256b2836ab7..8817403a52980150378958c441301045d97f1fa3 100644 (file)
@@ -158,7 +158,7 @@ SOLVEUR = PROC ( nom ="SOLVEUR",
           
           Type= SIMP (statut="o",
                               typ="TXM",
-                              into=('Solveur_lineaire',), 
+                              into=("Solveur_lineaire"), 
                               defaut='Solveur_lineaire', 
                               ang="Linear solver only for harmonic problems.",
                               fr =u"Solveur linéaire seulement pour les problèmes fréquentiels.",
index a2565e0548b47c32d3a802f0ca675b62ae3fdb93..7179c9e348d0ffc41c93fc92a213d733286a7cad 100644 (file)
@@ -1,6 +1,40 @@
 # -*- 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.
@@ -9,79 +43,161 @@ def handleAjoutGroupFiltre(editor,listeGroup):
         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)
index 896c1cb2fa0953b1cddc52f96d6f6f6f04479eac..8270d474ae05510d3d36163fb9d13bdf236979a0 100644 (file)
@@ -22,7 +22,6 @@ def INCLUDE(self,FileName,**args):
    """ 
        Fonction sd_prod pour la macro INCLUDE
    """
-   print "kkkkkkkkkkkk"
    if hasattr(self,'change_fichier'):
        delattr(self,'change_fichier')
        delattr(self,'fichier_ini')
@@ -33,9 +32,7 @@ def INCLUDE_context(self,d):
    """ 
        Fonction op_init pour macro INCLUDE
    """
-   print "llllllllllllllllllll"
    for k,v in self.g_context.items():
       d[k]=v
 
 
-
index 52a50b5d7c06d0c4054d73b94a48d96c241868b1..41e26ee19f0c44492cf7e315fefb0cbd1ce4267c 100644 (file)
@@ -1,40 +1,39 @@
-# -*- coding: utf-8 -*-\r
-# Copyright (C) 2007-2013   EDF R&D\r
-#\r
-# This library is free software; you can redistribute it and/or\r
-# modify it under the terms of the GNU Lesser General Public\r
-# License as published by the Free Software Foundation; either\r
-# version 2.1 of the License.\r
-#\r
-# This library is distributed in the hope that it will be useful,\r
-# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
-# Lesser General Public License for more details.\r
-#\r
-# You should have received a copy of the GNU Lesser General Public\r
-# License along with this library; if not, write to the Free Software\r
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
-#\r
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com\r
-#\r
-\r
-import os\r
-\r
-# repIni sert a localiser le fichier editeur.ini  \r
-repIni=os.path.dirname(os.path.abspath(__file__))\r
-\r
-# lang indique la langue utilisee pour les chaines d'aide : fr ou ang\r
-lang='fr'\r
-\r
-# Codage des strings qui accepte les accents (en remplacement de 'ascii')\r
-encoding='utf-8'\r
-\r
-# Choix des catalogues\r
-# format du Tuple (code,version,catalogue,formatOut, finit par defaut Ăventuellement)\r
-catalogues = (\r
-\r
-# catalogue avec generation Phys et materiaux reels\r
- ('CARMEL3D','frequentiel ',os.path.join(repIni,'Carmel3D_Cata_frequentiel_V1.py'),'CARMEL3DFV0','defaut'),\r
-# ('CARMEL3D','frequentiel (V1)',os.path.join(repIni,'Carmel3D_Cata_frequentiel_V1.py'),'CARMEL3DFV1','defaut'),\r
-# ('CARMEL3D','temporel (V1)',os.path.join(repIni,'Carmel3D_Cata_temporel_V1.py'),'CARMEL3DTV1','defaut'),\r
-)\r
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2013   EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+import os
+
+# repIni sert a localiser le fichier editeur.ini  
+repIni=os.path.dirname(os.path.abspath(__file__))
+
+# lang indique la langue utilisee pour les chaines d'aide : fr ou ang
+lang='fr'
+
+# Codage des strings qui accepte les accents (en remplacement de 'ascii')
+encoding='utf-8'
+
+# Choix des catalogues
+# format du Tuple (code,version,catalogue,formatOut, finit par defaut Ăventuellement)
+catalogues = (
+
+# catalogue avec generation Phys et materiaux reels
+ ('CARMEL3D','temporel (dev)',os.path.join(repIni,'Carmel3D_Cata_temporel_V0.py'),'CARMEL3DTV0','defaut'), 
+ ('CARMEL3D','frequentiel',os.path.join(repIni,'Carmel3D_Cata_frequentiel_V1.py'),'CARMEL3DFV0','defaut')
+)
index 5b61c09add09a9770570bae98d17ce43a1c117e8..786c3d1baef556759fae31e12c2a10752fa6c135 100644 (file)
@@ -67,8 +67,10 @@ class JDCTree( QTreeWidget ):
         self.inhibeExpand=False
         #print "self.editor.afficheCommandesPliees", self.editor.afficheCommandesPliees
         if self.racine.children !=[] :  
+
            if self.editor.afficheCommandesPliees : self.racine.children[0].plieToutEtReaffiche()
            else : self.racine.children[0].deplieToutEtReaffiche()
+
            self.racine.children[0].fenetre.donnePremier()
         else : self.racine.affichePanneau()
         #PNPNPN
index c5c282e2b2b44f6909379f3c2bb539e17fb4f82b..ef78cf4e8525d6ec31ddef475af87f8211455004 100644 (file)
@@ -38,6 +38,11 @@ class MACRONode(browser.JDCNode,typeNode.PopUpMenuNode):
       from   monMacroPanel import MonMacroPanel
       return MonMacroPanel (self,parent=self.editor )
     
+    def getPanel2(self):
+      from   monWidgetCommande import MonWidgetCommande
+      return MonWidgetCommande (self,self.editor ,self.item.object)
+
+
     def createPopUpMenu(self):
       typeNode.PopUpMenuNode.createPopUpMenu(self)
       if ("AFFE_CARA_ELEM" in self.item.get_genealogie()) and self.editor.salome:
index f94753fac6e220188f609bf8fc6d6904bb0e2473..2be9a3c0c6a82a03057b9c81e557f6211de3d96b 100644 (file)
@@ -1200,7 +1200,7 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
     #---------------------------#
     def _newTELEMAC(self):
     #---------------------------#
-        texte="INITIALIZATION();INITIAL_STATE();BOUNDARY_CONDITIONS();NUMERICAL_PARAMETERS();PHYSICAL_PARAMETERS()"
+        texte="INITIALIZATION();BOUNDARY_CONDITIONS();GENERAL_PARAMETERS();PHYSICAL_PARAMETERS();NUMERICAL_PARAMETERS();"
         #texte=""
         return texte
 
index 74e4018eb99833c3277ee31d335d04d82235a717..1b11cbf0621a1b0557c515c223d7d31c130d21a0 100644 (file)
@@ -216,4 +216,5 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
           newText=newTexte[1:]
        return newText
       
-       
+
index b88ee9e7f245a0d7d6b3e24b025617bd62189367..11a43dbd107289ad165fa959e50fa2d94137c391 100644 (file)
@@ -43,8 +43,26 @@ class LECustom(QLineEdit):
      print "dans focusInEvent de LECustom"
      self.parentQt.LineEditEnCours=self
      self.parentQt.NumLineEditEnCours=self.num
+     self.setFrame(True)
      QLineEdit.focusInEvent(self,event)
 
+ def focusOutEvent(self,event):
+     self.setFrame(False)
+     QLineEdit.focusOutEvent(self,event)
+
+# ---------------------------- #
+class MonLabelListeClic(QLabel):
+# ---------------------------- #
+     def __init__(self,parent):
+        QLabel.__init__(self,parent)
+        self.parent=parent
+
+     def event(self,event) :
+         if event.type() == QEvent.MouseButtonRelease:
+            self.texte=self.text()
+            self.parent.traiteClicSurLabelListe(self.texte)
+         return QLabel.event(self,event)
+
 
 
 
@@ -66,6 +84,7 @@ class GereListe:
        if self.NumLineEditEnCours == 1 : return
        else : numEchange=self.NumLineEditEnCours-1
        self.echange(self.NumLineEditEnCours,numEchange)
+       self.LineEditEnCours.setFocus(True)
        self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
 
 
@@ -73,6 +92,7 @@ class GereListe:
        if self.NumLineEditEnCours == self.indexDernierLabel : return
        else : numEchange=self.NumLineEditEnCours+1
        self.echange(self.NumLineEditEnCours,numEchange)
+       self.LineEditEnCours.setFocus(True)
        self.scrollArea.ensureWidgetVisible(self.LineEditEnCours)
 
    def echange(self,num1,num2):
@@ -90,6 +110,7 @@ class GereListe:
        self.changeValeur(changeDePlace=False)
        self.NumLineEditEnCours=num2
        self.LineEditEnCours=courant2
+       self.LineEditEnCours.setFocus(True)
 
    def moinsPushed(self):
        # on supprime le dernier
index 7e7f7ac0c76d86d7ce236f4973b22ccf2a83d727..65a9012a656b49ca5b5d12e1dd1c84dc5bb35f3f 100644 (file)
@@ -181,4 +181,3 @@ class Groupe(QtGui.QWidget,FacultatifOuOptionnel):
   def traiteClicSurLabel(self,texte):
       self.afficheOptionnel()
 
-
index ce8b84e6bc89d6a379d841cb0d5544026fe15d6a..674ceaeb6b77c9e0b314ce8a2a5b76d26a8e3dd5 100644 (file)
@@ -55,7 +55,9 @@ class MonChoixCommande(Ui_ChoixCommandes,QtGui.QWidget):
       self.connect(self.RBGroupe,SIGNAL("clicked()"),self.afficheGroupe)
       self.connect(self.RBOrdre,SIGNAL("clicked()"),self.afficheOrdre)
 
+      if self.editor.Ordre_Des_Commandes == None : self.RBOrdre.close()
 
+       
       self.editor.labelCommentaire.setText("")
       self.name=None
       self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.AjouteRadioButton)
index c51fbb775610ffda67a8bfa82a0235ddc3ddffe8..c304ea33384f9682dc5c1551b3bcbdf57a242839 100644 (file)
@@ -65,6 +65,8 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
       else : 
             self.connect(self.bAvant,SIGNAL("clicked()"), self.afficheAvant)
             self.connect(self.bApres,SIGNAL("clicked()"), self.afficheApres)
+
+      
       self.connect(self.LENom,SIGNAL("returnPressed()"),self.nomChange)
       self.racine=self.node.tree.racine
       if self.node.item.GetIconName() == "ast-red-square" : self.LENom.setDisabled(True)
index 28d17ddfb5891a64cf1682827cb3fabe6afd4308..77756ad434e9f68268cae90c0479a9917fc40935 100644 (file)
@@ -37,7 +37,8 @@ class MonWidgetFact(Ui_WidgetFact,Groupe):
       self.GroupBox.setTextInteractionFlags(Qt.TextSelectableByMouse)
       self.parentQt.commandesLayout.insertWidget(-1,self)
 
-  #def focusInEvent(self,event):
-      #print "je passe dans focusInEvent"
-  #    if self.editor.code != "CARMELCND" :self.afficheOptionnel()
+  def focusInEvent(self,event):
+     # print "je passe dans focusInEvent"
+      if self.editor.code != "CARMELCND" :self.afficheOptionnel()
+      QWidget.focusInEvent(self,event)
 
index 454b8fbbab824b46fe891a8296d1e89f21c5ee79..5804200af5db025fd8fbf185d730287a1a04c322 100644 (file)
@@ -35,6 +35,6 @@ class MonWidgetFactPlie(Ui_WidgetFactPlie,Groupe):
       self.groupBox.setText(self.obj.nom)
       self.parentQt.commandesLayout.insertWidget(-1,self)
 
-  def traiteClicSurLabel(self):
+  def traiteClicSurLabel(self,texte):
       return
 
index a4f3e39ff85ce3a95bac51d8ff977aa397928d56..5f3a50973527b0d081938bd4d1f21bc1d78c8635 100644 (file)
@@ -70,8 +70,7 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille):
        self.vScrollBar = self.scrollArea.verticalScrollBar()
        self.politique=PolitiquePlusieurs(self.node,self.editor)
        self.indexListe=1
-       for i in range(1,len(self.listeAAfficher)+1):
-           self.ajoutCB(i)
+       for i in range(1,len(self.listeAAfficher)+1): self.ajoutCB(i)
        for i in range(len(self.listeAAfficher)):
            nomCB="lineEditVal"+str(i+1)
            courant=getattr(self,nomCB)
@@ -85,8 +84,7 @@ class MonWidgetPlusieursInto (Ui_WidgetPlusieursInto,Feuille):
   def ajoutCB(self,index,valeur=None):
       #print "ajoutCB ", index
       nomCB="lineEditVal"+str(index)
-      if hasattr(self,nomCB) : 
-         return
+      if hasattr(self,nomCB) : return
       nouveauCB = QCheckBox(self.scrollArea)
       self.CBLayout.addWidget(nouveauCB)
       qApp.processEvents()
index 12d542d4b3e7e1e286dcae14f8340142c171d4d9..ed20a4dad9c318ef636787a3e392d80a2daf90f4 100644 (file)
@@ -31,7 +31,8 @@ from politiquesValidation   import PolitiquePlusieurs
 from qtSaisie               import SaisieValeur
 from gereListe              import GereListe
 from gereListe              import LECustom
-from monLabelClic           import MonLabelClic
+from gereListe              import MonLabelListeClic
+
 
 
 class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,GereListe):
@@ -39,16 +40,24 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere
   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
         #print "MonWidgetPlusieursInto", nom, self
         self.nomLine="LEResultat"
+        self.listeLE=[]
         Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
         GereListe.__init__(self)
         self.parentQt.commandesLayout.insertWidget(-1,self)
-        self.maCommande.listeAffichageWidget.append(self.lineEditVal1)
+        try :
+          self.maCommande.listeAffichageWidget.append(self.lineEditVal1)
+        except :
+          # cas ou on ne peut rien ajouter
+          pass 
         self.ouAjouter=0
         self.prepareListeResultat()
+        self.adjustSize()
         self.vScrollBarRE = self.scrollAreaRE.verticalScrollBar()
        
-
   def setValeurs(self):
+       for i in self.listeLE:
+           i.close()
+       self.listeLE=[]
        listeValeursCourantes=self.node.item.GetListeValeurs()
        if hasattr(self.node.item.definition.validators,'set_MCSimp'):
             obj=self.node.item.getObject()
@@ -56,20 +65,19 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere
             if self.node.item.isvalid() == 0 :
                liste=[]
                for item in listeValeursCourantes:
-                   if self.node.item.definition.validators.verif_item(item)==1:
-                      liste.append(item)
+                   if self.node.item.definition.validators.verif_item(item)==1: liste.append(item)
                self.listeAAfficher=self.node.item.get_liste_possible(liste)
             else: 
                self.listeAAfficher=self.node.item.get_liste_possible([])
        else :
-               self.listeAAfficher=self.monSimpDef.into
+               self.listeAAfficher=self.node.item.get_liste_possible(listeValeursCourantes)
+
        if len(self.listeAAfficher)*20 > 400 : self.setMinimumHeight(400)
        else : self.setMinimumHeight(len(self.listeAAfficher)*30)
-       self.adjustSize()
+
        self.vScrollBar = self.scrollArea.verticalScrollBar()
        self.politique=PolitiquePlusieurs(self.node,self.editor)
-       for i in range(1,len(self.listeAAfficher)+1):
-           self.ajoutLE(i)
+       for i in range(1,len(self.listeAAfficher)+1): self.ajoutLE(i)
        for i in range(len(self.listeAAfficher)):
            nomLE="lineEditVal"+str(i+1)
            courant=getattr(self,nomLE)
@@ -81,8 +89,7 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere
        if self.monSimpDef.max == "**" : aConstruire=7
        else                           : aConstruire=self.monSimpDef.max
        if len(listeValeursCourantes) > aConstruire : aConstruire=len(listeValeursCourantes)
-       for i in range(1,aConstruire+1):
-           self.ajoutLEResultat(i)
+       for i in range(1,aConstruire+1): self.ajoutLEResultat(i)
        self.indexDernierLabel=aConstruire
        index=1
        for val in listeValeursCourantes :
@@ -94,17 +101,15 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere
 
   def moinsPushed(self):
       self.ouAjouter=self.ouAjouter-1
-      feuille.moinsPushed(self)
+      GereListe.moinsPushed(self)
+      self.setValeurs()
 
-  #def ajoutLineEdit(self):
-  #    print "kljlkj"
 
   def ajoutLEResultat (self,index,valeur=None):
       nomLE="LEResultat"+str(index)
       if hasattr(self,nomLE) : return
       nouveauLE = LECustom(self.scrollAreaRE,self,index)
       nouveauLE.setFrame(False)
-      #self.CBChoisis.addWidget(nouveauLE)
       self.CBChoisis.insertWidget(self.ouAjouter,nouveauLE)
       self.ouAjouter=self.ouAjouter+1
       nouveauLE.setText("")
@@ -118,12 +123,11 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere
          nouveauLE.setText(valeur)
       
   def ajoutLE(self,index,valeur=None):
-      #print "ajoutLE ", index
       nomLE="lineEditVal"+str(index)
-      if hasattr(self,nomLE) : return
-      nouveauLE = MonLabelClic(self)
+      nouveauLE = MonLabelListeClic(self)
       #self.CBLayout.addWidget(nouveauLE)
       self.CBLayout.insertWidget(index -1,nouveauLE)
+      self.listeLE.append(nouveauLE)
       nouveauLE.setFrameShape(QFrame.NoFrame)
       qApp.processEvents()
       nouveauLE.setText("")
@@ -157,7 +161,7 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere
         return str(com)
 
 
-  def traiteClicSurLabel(self,valeur):
+  def traiteClicSurLabelListe(self,valeur):
         if valeur == None : return
         liste,validite=SaisieValeur.TraiteLEValeur(self,str(valeur))
         if validite == 0 : return
@@ -190,6 +194,7 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere
            self.vScrollBarRE.triggerAction(QScrollBar.SliderToMaximum)
            QTimer.singleShot(1, self.rendVisibleLigneRE)
         self.changeValeur()
+        self.setValeurs()
 
   def changeValeur(self,changeDePlace=False,oblige=False):
 #PN les 2 arg sont pour que la signature de ma fonction soit identique a monWidgetPlusieursBase
@@ -203,6 +208,7 @@ class MonWidgetPlusieursIntoOrdonne (Ui_WidgetPlusieursIntoOrdonne, Feuille,Gere
            listeVal.append(str(valeur))
 
         validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(listeVal,-1,[])
+        
 
         listeValeursCourantes=self.node.item.GetListeValeurs()
         min,max = self.node.item.GetMinMax()
index 3d5e6ed0e8d25bea8a7237265b2b471000d79906..6daaf273a981e762d47a064721511acb453025a6 100644 (file)
@@ -217,6 +217,7 @@ class PolitiquePlusieurs(Validation):
                 commentaire2=self.node.item.info_erreur_liste()
                 # On traite le cas ou la liste n est pas valide pour un pb de cardinalite
                 min,max = self.node.item.GetMinMax()
+                print len(listecourante) 
                 if len(listecourante) + 1 >= max :
                    commentaire="La liste atteint le nombre maximum d'elements : "+ str(max) +" ,ajout refuse"
                    return valide,commentaire,commentaire2,listeRetour
index 3d50c405526468e581dac56a4a0c1a99a461a89a..7114615f810802a389d8f471de4f1c3bafe33cd5 100644 (file)
@@ -1034,6 +1034,7 @@ class AndVal(Valid):
 
     def info_erreur_liste(self):
         a = 1
+        chaine=""
         for v in self.validators:
             if v.info_erreur_liste() != " ":
                 if a == 1:
index 96276515cfb21b1a8c463020345618d1f08afc34..d24bfdfcff4bd89631218873eab4faf9ee465f4e 100644 (file)
@@ -46,8 +46,8 @@ INITIALIZATION = PROC(nom = "INITIALIZATION",op = None,
 
      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',
@@ -176,7 +176,7 @@ Les donnees de ce fichier seront a lire sur le canal 27.",
 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.',
@@ -184,7 +184,7 @@ 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.',
@@ -195,6 +195,76 @@ The data in this file shall be read on channel 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"),
@@ -385,7 +455,7 @@ For TPXO, LEGOS-NEA, FES20XX and PREVIMER, the user has to download files of har
 #           ------------------------------------
 
 #              ------------------------------------
-               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\
@@ -454,83 +524,13 @@ La valeur par defaut 999999. signifie que c''est la racine carree du Coefficient
        ), #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 = '**',
@@ -544,7 +544,7 @@ BOUNDARY_CONDITIONS = PROC(nom = "BOUNDARY_CONDITIONS",op = None,
 # Il faut seulement l un des 3
 
 #    ------------------------------------
-     Liquid_Boundaries = FACT(statut = 'f',max = '**',
+     Liquid_Boundaries = FACT(statut = 'o',max = '**',
 #    ------------------------------------
                 
 #        ------------------------------------
@@ -559,7 +559,7 @@ BOUNDARY_CONDITIONS = PROC(nom = "BOUNDARY_CONDITIONS",op = None,
 # 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'",
@@ -652,8 +652,8 @@ Les donnees de ce fichier seront a lire sur le canal 12.',
 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',
@@ -724,123 +724,6 @@ Note: a maximum number of 40 iterations per time step seems to be reasonable.',)
 
        ), # 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',
 #      ------------------------------------
@@ -858,16 +741,15 @@ The nearest integer to (duration/time step) is taken.  If NUMBER OF TIME STEPS i
 #      ------------------------------------
 
 #         ------------------------------------
-          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\
@@ -890,16 +772,18 @@ the product of relevant options shall be made.',
      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
 
@@ -909,7 +793,7 @@ the product of relevant options shall be made.',
 #    ------------------------------------
  
 #         ------------------------------------
-          Advection_Propagation = FACT(statut = 'o',
+          Type_Of_Advection = FACT(statut = 'o',
 #         ------------------------------------
 
 # PNPNPN recalcul
@@ -918,7 +802,7 @@ the product of relevant options shall be made.',
 # 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.'), 
@@ -937,6 +821,11 @@ the product of relevant options shall be made.',
 #                      ------------------------------------
                        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.)
 #                          ------------------------------------
@@ -944,7 +833,7 @@ the product of relevant options shall be made.',
                   ),# 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.'),
@@ -962,6 +851,11 @@ the product of relevant options shall be made.',
 #                      ------------------------------------
                        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.)
 #                          ------------------------------------
@@ -969,7 +863,7 @@ the product of relevant options shall be made.',
                     ),# 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.'),
@@ -987,6 +881,11 @@ the product of relevant options shall be made.',
 #                       ------------------------------------
                         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.)
 #                          ------------------------------------
@@ -994,7 +893,7 @@ the product of relevant options shall be made.',
                    ),# 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.'),
@@ -1011,6 +910,11 @@ the product of relevant options shall be made.',
 #                       ------------------------------------
                         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.)
 #                          ------------------------------------
@@ -1041,39 +945,32 @@ si Priorité aux flux, on ne retrouve pas exactement les valeurs imposees des tr
 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,
@@ -1095,13 +992,17 @@ This parameter sets the extent of mass-lumping that is performed on h.'),
             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',
 #          ------------------------------------
@@ -1117,11 +1018,6 @@ these fields are given by C and the velocity field in the previous time step. At
 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
 
@@ -1235,6 +1131,8 @@ Values below 0.5 result in an unstable condition.'),
       ), # fin Discretization_Implicitation
       
 
+#    ------------------------------------
+     Tidal=FACT(statut='f',
 #    ------------------------------------
      Tidal_Flats = SIMP(statut = 'o',typ = bool,defaut = True,
 #    ------------------------------------
@@ -1290,6 +1188,7 @@ This key-word may have an influence on mass conservation since the truncation of
                       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(
@@ -1315,133 +1214,8 @@ This key-word may have an influence on mass conservation since the truncation of
 # -----------------------------------------------------------------------
 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',
 #    ------------------------------------
 #         ------------------------------------
@@ -1561,8 +1335,129 @@ It is noteworthy that the meaning of this figure changes according to the select
 #                  ------------------------------------
                ), # 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
+
 
 
 #    ------------------------------------
@@ -1620,6 +1515,9 @@ It is noteworthy that the meaning of this figure changes according to the select
 
       ), #  fin fact Parameters_Estimation
 
+#    ------------------------------------
+     Sources = FACT( statut = 'f',
+#    ------------------------------------
 #    ------------------------------------
      Number_Of_Sources = SIMP( statut = 'o',typ = 'I', defaut = 0 ,),
 #    ------------------------------------
@@ -1685,16 +1583,11 @@ It is noteworthy that the meaning of this figure changes according to the select
                    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,
@@ -1714,37 +1607,26 @@ Les composantes de la force de Coriolis sont alors : FU =   FCOR x V FV = - FCOR
 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,
 #     ------------------------------------
@@ -1760,6 +1642,56 @@ w = 7.27 10-5 rad/sec The Coriolis force components are then: FU =  FCOR x V, FV
                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
 
 # -----------------------------------------------------------------------
@@ -1779,7 +1711,8 @@ OUTPUT_FILES = PROC(nom = "OUTPUT_FILES",op = None,
                       "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,
@@ -1798,7 +1731,7 @@ OUTPUT_FILES = PROC(nom = "OUTPUT_FILES",op = None,
 #       ------------------------------------
         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.',),
 
@@ -1852,6 +1785,16 @@ Les resultats a placer dans ce fichier seront a ecrire sur le canal 29.',
 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', 
 #  ------------------------------------
@@ -1890,16 +1833,6 @@ This procedures computes the following at each time step: the domain inflows and
 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',
 #  ------------------------------------
@@ -1940,7 +1873,7 @@ The results to be entered into this file shall be written on channel 28.",),
 #      ------------------------------------
        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',),
 
@@ -2065,6 +1998,10 @@ Ces seuils doivent etre decrits comme des frontieres du domaine de calcul',
 # -----------------------------------------------------------------------
 GENERAL_PARAMETERS = PROC(nom = "GENERAL_PARAMETERS",op = None,
 # -----------------------------------------------------------------------
+        UIinfo = { "groupes" : ( "CACHE", )},
+#      ------------------------------------
+       Location = FACT(statut = 'o',
+#      ------------------------------------
 #      ------------------------------------
        Origin_Coordinates = SIMP( statut='o',
 #      ------------------------------------
@@ -2105,6 +2042,129 @@ is in particular used to compute the Coriolis force. In cartesian coordinates, C
                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', 
@@ -2225,41 +2285,11 @@ Not recommended for use.',),
      ),
 )# 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,
@@ -2285,7 +2315,7 @@ PARTICULE = PROC(nom = "PARTICULE",op = None,
                  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',),
@@ -2487,13 +2517,15 @@ TRACERS = PROC(nom = "TRACERS",op = None,
 #    -----------------------------------------------------------------------
      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',
@@ -2613,6 +2645,5 @@ TRACERS = PROC(nom = "TRACERS",op = None,
 )# 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')
index 92636e2276dc27d554c89dfd90dac732ab4c3641..fe1e1193f3d0566180a6d2e9747cf39eebaefedb 100644 (file)
@@ -37,5 +37,8 @@ docPath=repIni
 #
 catalogues=(
    #('TELEMAC','default',os.path.join(repIni,'Telemac_Cata_nouveau.py'),'TELEMAC','python'),
-   ('TELEMAC','default',os.path.join(repIni,'Telemac_Cata.py'),'TELEMAC','python'),
+   ('TELEMAC','comm',os.path.join(repIni,'Telemac_Cata.py'),'TELEMAC','python'),
+   #('TELEMAC','cas',os.path.join(repIni,'Telemac_Cata.py'),'TELEMAC','TELEMAC'),
 )
+mode_nouv_commande="figee"
+affiche         = "ordre"
index 87d04853acda05b30c42ddf8b0719d964ec773e7..d39e8eb2c94eb574a8a94a37a1eb9b5d8d185fa7 100644 (file)
@@ -17,8 +17,8 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
-from parseur import FactNode
-from load import jdcSet 
+from Traducteur.parseur import FactNode
+from Traducteur.load import jdcSet 
 import logging
 
 dict_commande={}
index 49d0be9310f1fe65b273c2cd3984a61e6c0930c2..0bd6fd6416fd191edee624f3fe07d7cdef03d50c 100644 (file)
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
-from utils import lineToDict
+from Traducteur.utils import lineToDict
 import logging
-from dictErreurs import EcritErreur
-from load import jdcSet 
-from renamemocle import decaleLignesdeNBlancs
-from removemocle import removeMotCleInFact
-import regles
+from Traducteur.dictErreurs import EcritErreur
+from Traducteur.load import jdcSet 
+from Traducteur.renamemocle import decaleLignesdeNBlancs
+from Traducteur.removemocle import removeMotCleInFact
+from Traducteur import regles
 
 
 #--------------------------------------------------------------------------
index 6e507902e62d0964d0240876acade99ce89228c1..b3b20fb7f505b40c7bf0a2117a34719710e88e4f 100644 (file)
@@ -19,7 +19,7 @@
 #
 
 import logging
-from load import jdcSet 
+from Traducteur.load import jdcSet 
 
 
 def EcritErreur(listeGena,ligne=None) :
index 95131814b733cd3a3f28b7a04eef153a55796887..29de1a015d249aedf6da4650eddd909c14b891b8 100644 (file)
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 import logging
-from parseur import FactNode
-from load import jdcSet 
-from dictErreurs import EcritErreur
+from Traducteur.parseur import FactNode
+from Traducteur.load import jdcSet 
+from Traducteur.dictErreurs import EcritErreur
 import string
-import regles
+from Traducteur import regles
 debug=0
 
 
@@ -138,6 +138,7 @@ def insereMotCleDansFacteur(jdc,facteur,texte):
 
         ligneaCouper=ligneaCouper+1
         ancien=jdc.getLine(ligneaCouper)
+        if trouve : break
 
 
 #-----------------------------------
index 93b0ce4f5fed812b53a48462b7330317ba9ec093..f6815a2e93bb84059be9323d7036062310a2e9a4 100644 (file)
@@ -20,8 +20,8 @@
 
 import os
 import re
-import parseur
-from mocles import parseKeywords
+from Traducteur import parseur
+from Traducteur.mocles import parseKeywords
 
 import sets
 jdcSet=sets.Set()
index 0356734adfe3daee9ad807350944616e5aeadff4..809a3fe9e1b2b88ab79be3120bdd692a3f0d1b19 100644 (file)
@@ -20,9 +20,9 @@
 
 import compiler
 import types
-from parseur  import Keyword, FactNode, lastparen, lastparen2,maskStringsAndComments
-from visiteur import KeywordFinder, visitor
-from utils import indexToCoordinates, lineToDict, DictToLine
+from Traducteur.parseur  import Keyword, FactNode, lastparen, lastparen2,maskStringsAndComments
+from Traducteur.visiteur import KeywordFinder, visitor
+from Traducteur.utils import indexToCoordinates, lineToDict, DictToLine
 
 debug=0
 
index 78ca3db8c2143371f6d6fced77b9869f47ae9a93..73ed8b86ab25536b92ddcd5212356e3d29559298 100644 (file)
 #
 
 import logging
-import removemocle
-import inseremocle
-from parseur import lastparen
-from load import jdcSet
+from Traducteur import removemocle
+from Traducteur import inseremocle
+from Traducteur.parseur import lastparen
+from Traducteur.load import jdcSet
 debug=0
 
 #-----------------------------------------------------
index 84c09b745b8919bd2e6cc9bda7f6af70794b2bba..07bfbb3020a44de1e56b8095ec74b34c4b9c94e8 100644 (file)
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 import logging
-import regles
-from parseur import FactNode
-from dictErreurs import EcritErreur
-from load import jdcSet 
+from Traducteur import regles
+from Traducteur.parseur import FactNode
+from Traducteur.dictErreurs import EcritErreur
+from Traducteur.load import jdcSet
 
 debug=0
 #debug=1
@@ -212,5 +212,4 @@ def fusionne(jdc,numLigne):
        fusion=0
  
     if fusion : 
-       import load 
        jdc.joinLineandNext(numLigne)
index 4550f5b3a1c3235431cfc2401ef4b619bc5045e9..1b6294d90370b9fd5e79b0457068c372be900fa1 100644 (file)
 #
 import logging
 import sys
-from parseur import FactNode
-from load import jdcSet 
-import regles
-from dictErreurs import EcritErreur
+from Traducteur.parseur import FactNode
+from Traducteur.load import jdcSet 
+from Traducteur import regles
+from Traducteur.dictErreurs import EcritErreur
 #debug=1
 debug=0
 
index 8b3404ea45023e139be5ff48124424ff723ec54b..a7b35b0bfc4a1086c0ab3d93d8cb60d658450224 100755 (executable)
@@ -29,16 +29,16 @@ import log
 import optparse
 import sys
 
-from load   import getJDC
-from mocles import parseKeywords
-from removemocle  import *
-from renamemocle  import *
-from renamemocle  import *
-from inseremocle  import *
-from changeValeur import *
-from movemocle    import *
-from dictErreurs  import *
-from regles import pasDeRegle
+from Traducteur.load   import getJDC
+from Traducteur.mocles import parseKeywords
+from Traducteur.removemocle  import *
+from Traducteur.renamemocle  import *
+from Traducteur.renamemocle  import *
+from Traducteur.inseremocle  import *
+from Traducteur.changeValeur import *
+from Traducteur.movemocle    import *
+from Traducteur.dictErreurs  import *
+from Traducteur.regles import pasDeRegle
 
 atraiter=(
           "AFFE_CARA_ELEM",
index 3eaa9b83d79b0eb4865143548d0808d0bbf8e015..cdf5a304fcf516cb1ac2c50d3d72d60074968c43 100755 (executable)
@@ -29,16 +29,16 @@ import log
 import optparse
 import sys
 
-from load   import getJDC
-from mocles import parseKeywords
-from removemocle  import *
-from renamemocle  import *
-from renamemocle  import *
-from inseremocle  import *
-from changeValeur import *
-from movemocle    import *
-from dictErreurs  import *
-from regles import pasDeRegle
+from Traducteur.load   import getJDC
+from Traducteur.mocles import parseKeywords
+from Traducteur.removemocle  import *
+from Traducteur.renamemocle  import *
+from Traducteur.renamemocle  import *
+from Traducteur.inseremocle  import *
+from Traducteur.changeValeur import *
+from Traducteur.movemocle    import *
+from Traducteur.dictErreurs  import *
+from Traducteur.regles import pasDeRegle
 
 atraiter=(
           "AFFE_CARA_ELEM",
index c435ccc0f2e7b015bdedb0585297c7e8d2b55c71..69b7106867691b1b0b5566a57af224f8bd962be4 100755 (executable)
@@ -29,16 +29,16 @@ import log
 import optparse
 import sys
 
-from load   import getJDC
-from mocles import parseKeywords
-from removemocle  import *
-from renamemocle  import *
-from renamemocle  import *
-from inseremocle  import *
-from changeValeur import *
-from movemocle    import *
-from dictErreurs  import * 
-from regles import pasDeRegle
+from Traducteur.load   import getJDC
+from Traducteur.mocles import parseKeywords
+from Traducteur.removemocle  import *
+from Traducteur.renamemocle  import *
+from Traducteur.renamemocle  import *
+from Traducteur.inseremocle  import *
+from Traducteur.changeValeur import *
+from Traducteur.movemocle    import *
+from Traducteur.dictErreurs  import * 
+from Traducteur.regles import pasDeRegle
 
 atraiter=("AFFE_CARA_ELEM","AFFE_CHAR_CINE","AFFE_CHAR_MECA","AFFE_CHAR_MECA_F","AFFE_MATERIAU","AFFE_MODELE",
           "CALC_CHAM_ELEM","CALC_ELEM","CALC_G","CALC_META","CALC_MODAL","CALC_PRECONT","CALCUL","CALC_MISS","CALC_NO",
index 3e881b5e3a4a8464293a9608f0399a72be718d7c..71780e85863f37b98b04598885cffa187844931b 100644 (file)
    <property name="spacing">
     <number>0</number>
    </property>
-   <property name="margin">
+   <property name="leftMargin">
     <number>0</number>
    </property>
+   <property name="topMargin">
+    <number>2</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>2</number>
+   </property>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_3">
      <property name="spacing">
index b232632170f50b28e5b2e37d1e6ca5cfaacfb491..b15d99e5ce75c17c14b88d389356dfb8518a0ce0 100644 (file)
    <property name="spacing">
     <number>0</number>
    </property>
-   <property name="margin">
+   <property name="leftMargin">
     <number>0</number>
    </property>
+   <property name="topMargin">
+    <number>1</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>1</number>
+   </property>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_2">
      <property name="spacing">
index a86038cd8be90b3d070afbfe884283775e341f8f..8d4184d976a2a5f1d7f73b552e532cbeda3f728c 100644 (file)
    <property name="spacing">
     <number>0</number>
    </property>
-   <property name="margin">
+   <property name="leftMargin">
     <number>0</number>
    </property>
+   <property name="topMargin">
+    <number>1</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>1</number>
+   </property>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_2">
      <property name="spacing">
index 9411f4d0b3e160f410132ae7f6aa93400eecd801..7204b0b927b51d588db22ee40005aaf1f5aa3c8c 100644 (file)
    <property name="spacing">
     <number>0</number>
    </property>
-   <property name="margin">
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>1</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
     <number>0</number>
    </property>
    <item>
index 75af887be816c0177840d289c97be9f1c3135fbf..bdbdfee0960a12e24fcad9cd68683396916cd9b3 100644 (file)
@@ -310,8 +310,7 @@ border: 1px solid gray;
              <string>...</string>
             </property>
             <property name="icon">
-             <iconset>
-              <normaloff>../Editeur/icons/flecheHautBleue.png</normaloff>../Editeur/icons/flecheHautBleue.png</iconset>
+             <iconset theme="go-up"/>
             </property>
             <property name="iconSize">
              <size>
@@ -348,8 +347,7 @@ border: 1px solid gray;
              <string>...</string>
             </property>
             <property name="icon">
-             <iconset>
-              <normaloff>../Editeur/icons/flecheBasBleue.png</normaloff>../Editeur/icons/flecheBasBleue.png</iconset>
+             <iconset theme="go-down"/>
             </property>
             <property name="iconSize">
              <size>
@@ -387,7 +385,8 @@ border: 1px solid gray;
             </property>
             <property name="icon">
              <iconset>
-              <normaloff>../Editeur/icons/MoinsBleu2.png</normaloff>../Editeur/icons/MoinsBleu2.png</iconset>
+              <normalon>../Editeur/icons/MoinsBleu2.png</normalon>
+             </iconset>
             </property>
             <property name="iconSize">
              <size>
@@ -638,8 +637,7 @@ border: 1px solid gray;
           <string>...</string>
          </property>
          <property name="icon">
-          <iconset>
-           <normaloff>../Editeur/icons/txt2.png</normaloff>../Editeur/icons/txt2.png</iconset>
+          <iconset theme="text-x-generic"/>
          </property>
          <property name="iconSize">
           <size>
@@ -741,7 +739,6 @@ border: 1px solid gray;
   <tabstop>RBHaut</tabstop>
   <tabstop>RBBas</tabstop>
   <tabstop>RBMoins</tabstop>
-  <tabstop>RBPlus</tabstop>
   <tabstop>RBVoisListe</tabstop>
   <tabstop>RBSalome</tabstop>
   <tabstop>RBSalomeVue</tabstop>
index 3ca46d6b6ce4af205f525188598936a9982e35fb..a5b63dfa3a85d85977903063657db3f96a0af5c1 100644 (file)
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>934</width>
-    <height>293</height>
+    <height>253</height>
    </rect>
   </property>
   <property name="sizePolicy">
@@ -33,7 +33,7 @@
     <number>0</number>
    </property>
    <property name="topMargin">
-    <number>4</number>
+    <number>1</number>
    </property>
    <property name="rightMargin">
     <number>0</number>
     </layout>
    </item>
    <item>
-    <widget class="MonLabelClic" name="label">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="minimumSize">
-      <size>
-       <width>300</width>
-       <height>25</height>
-      </size>
-     </property>
-     <property name="maximumSize">
-      <size>
-       <width>178</width>
-       <height>16777215</height>
-      </size>
-     </property>
-     <property name="frameShape">
-      <enum>QFrame::NoFrame</enum>
-     </property>
-     <property name="text">
-      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;aaa&lt;/p&gt;&lt;p&gt;dqsklmdqm&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-     </property>
-     <property name="scaledContents">
-      <bool>false</bool>
-     </property>
-     <property name="alignment">
-      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+    <layout class="QVBoxLayout" name="verticalLayout_4">
+     <property name="spacing">
+      <number>0</number>
      </property>
-    </widget>
+     <item>
+      <widget class="MonLabelClic" name="label">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>300</width>
+         <height>25</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>178</width>
+         <height>16777215</height>
+        </size>
+       </property>
+       <property name="frameShape">
+        <enum>QFrame::NoFrame</enum>
+       </property>
+       <property name="text">
+        <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;aaa&lt;/p&gt;&lt;p&gt;dqsklmdqm&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+       </property>
+       <property name="scaledContents">
+        <bool>false</bool>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLabel" name="monCommentaireLabel">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text">
+        <string>TextLabel</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
    </item>
    <item>
     <widget class="QScrollArea" name="scrollArea">
        <rect>
         <x>0</x>
         <y>0</y>
-        <width>267</width>
-        <height>286</height>
+        <width>266</width>
+        <height>249</height>
        </rect>
       </property>
       <property name="sizePolicy">
     </spacer>
    </item>
    <item>
-    <layout class="QVBoxLayout" name="verticalLayout_2">
-     <property name="spacing">
-      <number>0</number>
-     </property>
+    <layout class="QVBoxLayout" name="verticalLayout_5">
      <item>
-      <widget class="QScrollArea" name="scrollAreaRE">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="styleSheet">
-        <string notr="true">background : rgb(247,247,247)</string>
-       </property>
-       <property name="frameShape">
-        <enum>QFrame::Box</enum>
-       </property>
-       <property name="lineWidth">
-        <number>1</number>
-       </property>
-       <property name="widgetResizable">
-        <bool>true</bool>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+      <layout class="QVBoxLayout" name="verticalLayout_2">
+       <property name="spacing">
+        <number>0</number>
        </property>
-       <widget class="QWidget" name="verticalWidgetLEChoisis">
-        <property name="geometry">
-         <rect>
-          <x>0</x>
-          <y>0</y>
-          <width>264</width>
-          <height>231</height>
-         </rect>
-        </property>
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <layout class="QVBoxLayout" name="CBChoisis">
-         <property name="spacing">
-          <number>0</number>
+       <item>
+        <widget class="QScrollArea" name="scrollAreaRE">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="styleSheet">
+          <string notr="true">background : rgb(247,247,247)</string>
+         </property>
+         <property name="frameShape">
+          <enum>QFrame::Box</enum>
          </property>
-         <property name="margin">
-          <number>0</number>
+         <property name="lineWidth">
+          <number>1</number>
          </property>
-         <item>
-          <spacer name="verticalSpacer_3">
-           <property name="orientation">
-            <enum>Qt::Vertical</enum>
+         <property name="widgetResizable">
+          <bool>true</bool>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+         </property>
+         <widget class="QWidget" name="verticalWidgetLEChoisis">
+          <property name="geometry">
+           <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>261</width>
+            <height>204</height>
+           </rect>
+          </property>
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <layout class="QVBoxLayout" name="CBChoisis">
+           <property name="spacing">
+            <number>0</number>
            </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>20</width>
-             <height>40</height>
-            </size>
+           <property name="margin">
+            <number>0</number>
            </property>
-          </spacer>
-         </item>
-        </layout>
-       </widget>
-      </widget>
+           <item>
+            <spacer name="verticalSpacer_3">
+             <property name="orientation">
+              <enum>Qt::Vertical</enum>
+             </property>
+             <property name="sizeHint" stdset="0">
+              <size>
+               <width>20</width>
+               <height>40</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+          </layout>
+         </widget>
+        </widget>
+       </item>
+      </layout>
      </item>
      <item>
       <widget class="QFrame" name="frame">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
        <property name="frameShape">
         <enum>QFrame::Box</enum>
        </property>
        <layout class="QHBoxLayout" name="horizontalLayout_3">
+        <property name="spacing">
+         <number>0</number>
+        </property>
+        <property name="margin">
+         <number>0</number>
+        </property>
         <item>
          <layout class="QHBoxLayout" name="horizontalLayout_4">
           <property name="spacing">
              <string>...</string>
             </property>
             <property name="icon">
-             <iconset>
-              <normaloff>../Editeur/icons/flecheHautBleue.png</normaloff>../Editeur/icons/flecheHautBleue.png</iconset>
+             <iconset theme="go-up">
+              <normaloff/>
+             </iconset>
             </property>
             <property name="iconSize">
              <size>
              <string>...</string>
             </property>
             <property name="icon">
-             <iconset>
-              <normaloff>../Editeur/icons/flecheBasBleue.png</normaloff>../Editeur/icons/flecheBasBleue.png</iconset>
+             <iconset theme="go-down">
+              <normaloff/>
+             </iconset>
             </property>
             <property name="iconSize">
              <size>
   <zorder>horizontalSpacer</zorder>
   <zorder>scrollArea</zorder>
   <zorder>horizontalSpacer_2</zorder>
-  <zorder>label</zorder>
  </widget>
  <customwidgets>
   <customwidget>
index 5958f9b39c375d3c488ab6fd6666768c0ab24b91..a55818817b89b3b9c3232d530bfeae8b9b5c2f73 100644 (file)
@@ -6,12 +6,12 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>894</width>
-    <height>60</height>
+    <width>851</width>
+    <height>62</height>
    </rect>
   </property>
   <property name="sizePolicy">
-   <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
     <horstretch>0</horstretch>
     <verstretch>0</verstretch>
    </sizepolicy>
    <property name="spacing">
     <number>0</number>
    </property>
-   <property name="margin">
+   <property name="leftMargin">
     <number>0</number>
    </property>
+   <property name="topMargin">
+    <number>1</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>1</number>
+   </property>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_2">
      <property name="spacing">
          <property name="orientation">
           <enum>Qt::Horizontal</enum>
          </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
          <property name="sizeHint" stdset="0">
           <size>
            <width>2</width>
          <property name="orientation">
           <enum>Qt::Horizontal</enum>
          </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
          <property name="sizeHint" stdset="0">
           <size>
            <width>2</width>
          </property>
          <property name="sizeHint" stdset="0">
           <size>
-           <width>20</width>
+           <width>5</width>
            <height>20</height>
           </size>
          </property>
index 70ab51a44e286a55dbdf2f8dcebde3d38687a939..60c7dce52c33d88302b4e8a1c90811aecd4c0c6d 100644 (file)
    <property name="spacing">
     <number>0</number>
    </property>
-   <property name="margin">
+   <property name="leftMargin">
     <number>0</number>
    </property>
+   <property name="topMargin">
+    <number>1</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>1</number>
+   </property>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_2">
      <property name="spacing">
index a70bb1617d09795b089d60056b32944bda07050a..4e9db7e612d7752fc5019aa0bf84bb13309ce2a7 100644 (file)
@@ -41,9 +41,18 @@ border:0px;
    <property name="spacing">
     <number>0</number>
    </property>
-   <property name="margin">
+   <property name="leftMargin">
     <number>0</number>
    </property>
+   <property name="topMargin">
+    <number>1</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>1</number>
+   </property>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_2">
      <property name="spacing">
index f5f8997cd6369f6d05b8849e510e7c9ef1956b4e..ead9d01554a1ae63767c6f37c6815eb62db6e125 100644 (file)
    <property name="spacing">
     <number>0</number>
    </property>
-   <property name="margin">
+   <property name="leftMargin">
     <number>0</number>
    </property>
+   <property name="topMargin">
+    <number>1</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>1</number>
+   </property>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout">
      <item>
@@ -219,8 +228,7 @@ border:0px;</string>
             <string>...</string>
            </property>
            <property name="icon">
-            <iconset>
-             <normaloff>../Editeur/icons/fichier.png</normaloff>../Editeur/icons/fichier.png</iconset>
+            <iconset theme="system-file-manager"/>
            </property>
            <property name="iconSize">
             <size>
index f08eca696779447c3efb5e1ceb0f8ec1febf0f6c..6fa4b7e91c4299a550f8d411ceb5f52c19c970e0 100644 (file)
    <property name="spacing">
     <number>0</number>
    </property>
-   <property name="margin">
+   <property name="leftMargin">
+    <number>1</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
     <number>0</number>
    </property>
+   <property name="bottomMargin">
+    <number>1</number>
+   </property>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_2">
      <property name="spacing">
index 46c5e67db3d965f3707786e8ea4437bc7b437a5b..9c45154bb6192029e38e01425efafa66a6c9496a 100644 (file)
    <property name="spacing">
     <number>0</number>
    </property>
-   <property name="margin">
+   <property name="leftMargin">
     <number>0</number>
    </property>
+   <property name="topMargin">
+    <number>1</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>1</number>
+   </property>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_2">
      <property name="spacing">
index 1507a498b9cfb8384afd25cba3a09865c0eb821a..a31e9b551f0e8416ec4aaf3a00d36c60bfbb09b3 100644 (file)
    <property name="spacing">
     <number>0</number>
    </property>
-   <property name="margin">
+   <property name="leftMargin">
+    <number>1</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
     <number>0</number>
    </property>
+   <property name="bottomMargin">
+    <number>1</number>
+   </property>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_2">
      <property name="spacing">
index bbe8960b0179225bbfa6f47c560769eb2d17be34..fe8fbf82c8dc2ec334e6d2dc91a060cca7b61fc9 100644 (file)
@@ -209,8 +209,7 @@ QMenuBar {
   </widget>
   <action name="action_Nouveau">
    <property name="icon">
-    <iconset>
-     <normaloff>../Editeur/icons/new_file.png</normaloff>../Editeur/icons/new_file.png</iconset>
+    <iconset theme="document-new"/>
    </property>
    <property name="text">
     <string>&amp;Nouveau</string>
@@ -229,8 +228,7 @@ QMenuBar {
   </action>
   <action name="action_Ouvrir">
    <property name="icon">
-    <iconset>
-     <normaloff>../Editeur/icons/ouvrir.png</normaloff>../Editeur/icons/ouvrir.png</iconset>
+    <iconset theme="document-open"/>
    </property>
    <property name="text">
     <string>&amp;Ouvrir</string>
@@ -241,8 +239,7 @@ QMenuBar {
   </action>
   <action name="actionEnregistrer">
    <property name="icon">
-    <iconset>
-     <normaloff>../Editeur/icons/save.png</normaloff>../Editeur/icons/save.png</iconset>
+    <iconset theme="document-save"/>
    </property>
    <property name="text">
     <string>Enregistrer</string>
@@ -257,6 +254,9 @@ QMenuBar {
    </property>
   </action>
   <action name="actionEnregistrer_sous">
+   <property name="icon">
+    <iconset theme="document-save-as"/>
+   </property>
    <property name="text">
     <string>Enregistrer sous</string>
    </property>
@@ -279,8 +279,7 @@ QMenuBar {
   </action>
   <action name="actionCouper">
    <property name="icon">
-    <iconset>
-     <normaloff>../Editeur/icons/cut.png</normaloff>../Editeur/icons/cut.png</iconset>
+    <iconset theme="edit-cut"/>
    </property>
    <property name="text">
     <string>Couper</string>
@@ -294,8 +293,7 @@ QMenuBar {
   </action>
   <action name="actionCopier">
    <property name="icon">
-    <iconset>
-     <normaloff>../Editeur/icons/copy.png</normaloff>../Editeur/icons/copy.png</iconset>
+    <iconset theme="edit-copy"/>
    </property>
    <property name="text">
     <string>Copier</string>
@@ -309,8 +307,7 @@ QMenuBar {
   </action>
   <action name="actionColler">
    <property name="icon">
-    <iconset>
-     <normaloff>../Editeur/icons/paste.png</normaloff>../Editeur/icons/paste.png</iconset>
+    <iconset theme="edit-paste"/>
    </property>
    <property name="text">
     <string>Coller</string>
@@ -368,8 +365,7 @@ QMenuBar {
   </action>
   <action name="actionSupprimer">
    <property name="icon">
-    <iconset>
-     <normaloff>../Editeur/icons/delete.png</normaloff>../Editeur/icons/delete.png</iconset>
+    <iconset theme="edit-delete"/>
    </property>
    <property name="text">
     <string>Supprimer</string>
@@ -390,6 +386,9 @@ QMenuBar {
    </property>
   </action>
   <action name="actionRechercher">
+   <property name="icon">
+    <iconset theme="edit-find"/>
+   </property>
    <property name="text">
     <string>Rechercher</string>
    </property>