Salome HOME
pour partage avec Eric
authorpascale.noyret <pascale.noyret@edf.fr>
Tue, 19 Mar 2019 13:41:46 +0000 (14:41 +0100)
committerpascale.noyret <pascale.noyret@edf.fr>
Tue, 19 Mar 2019 13:41:46 +0000 (14:41 +0100)
JP/cata_Vimmp.py [changed from symlink to file mode: 0755]

deleted file mode 120000 (symlink)
index 767357d577198d80d554b400681e82604370da95..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1 +0,0 @@
-cata_Vimmp_V1803.py
\ No newline at end of file
new file mode 100755 (executable)
index 0000000000000000000000000000000000000000..36a8b8b651e4ca9142ead2b20a6c89f4b234814e
--- /dev/null
@@ -0,0 +1,451 @@
+#  coding: utf-8 -*-
+#
+#  Copyright (C) 2012-2013 EDF
+#
+#  This file is part of SALOME HYDRO module.
+#
+#  SALOME HYDRO module is free software: you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation, either version 3 of the License, or
+#  (at your option) any later version.
+#
+#  SALOME HYDRO module 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 General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with SALOME HYDRO module.  If not, see <http://www.gnu.org/licenses/>.
+# PNPN changer la place du trait dans les FACT ouverts
+# PNPN ne pas afficher les facts optionnels
+
+import types
+from Accas import *
+import types
+class Tuple:
+  def __init__(self,ntuple):
+    self.ntuple=ntuple
+
+  def __convert__(self,valeur):
+    if type(valeur) == types.StringType: return None
+    if len(valeur) != self.ntuple: return None
+    return valeur
+
+  def info(self):
+    return "Tuple de %s elements" % self.ntuple
+
+liste_Objets_Surface_Elementaire = []
+class Surface_Elementaire (ASSD):
+    def __init__(self, nom):
+       ASSD.__init__(self)
+       self.setName(nom)
+
+dico_Modeles_Numeriques = {
+   'DPD' : { 'hybride': ('hybride_microscopic', 'hybride_macroscopic SPDP'),
+             'standalone' : ('DPD'),
+           }
+}
+def description_manuelle_particule_DEM():
+   return FACT(statut ='o', max= "**",
+      Position          =  SIMP(statut='o', typ='R', max=3, min =3),
+      Vitesse           =  SIMP(statut='o', typ='R', max=3, min =3),
+      Vitesse_Rotation  =  SIMP(statut='o', typ='R', max=3, min =3 ),
+           )
+
+def description_manuelle_particule_cinetique():
+   return FACT(statut ='o', max= "**",
+      Position =  SIMP(statut='o', typ='R', max=3, min =3),
+      Vitesse  =  SIMP(statut='o', typ='R', max=3, min =3),
+           )
+
+def description_manuelle_particule_cinetique_etendue():
+   return FACT(statut ='o', max= "**",
+      Position      =  SIMP(statut='o', typ='R', max=3, min =3),
+      Vitesse       =  SIMP(statut='o', typ='R', max=3, min =3),
+      #Diffusivite   =  SIMP(statut='f', typ='R'),
+      #Concentration =  SIMP(statut='f', typ='R'),
+)
+
+def bloc_description_particule_fichier ():
+    return BLOC ( condition = 'type_description == "fichier"',
+           format_fichier = SIMP (statut='o', typ = 'TXM', into = ['txt','Autre',] ),
+      ) 
+
+def champ (nomDelaContante, labels ,nbReels ) :
+# ajouter les extensions pour le fichier et les blocs associes
+# certains champs ne seront jamais uniformes
+    dicoBloc = {}
+    dicoBloc[nomDelaContante] = SIMP (statut='o', typ = 'R')
+    return FACT(statut ='o',
+       Exogene   = SIMP(statut = 'o', typ = bool),
+    )
+       #b_exogene = BLOC (condition = "Exogene == True,
+       #  type_de_champ_exogene = SIMP ( statut='o', typ = 'TXM', into = ('format', 'interface')),
+       #  b_type_de_champ_exogene_format = BLOC( condition = ' type_de_champ_exogene == "format" ',
+       #    Format = SIMP (statut='o', typ = 'TXM', into = ['txt','Med','manuel',] ),
+       #    td_manuel = BLOC ( condition = 'Format == "manuel"',
+             #Vecteur = SIMP( fenetreIhm='Tableau', homo = labels,
+             #                   statut='o', min=2, max='**',
+             #                   typ = Tuple(nbReels),
+             #                   validators=VerifTypeTuple(("'R',"*nbReels),),) # end Particule
+       #      Vecteur= SIMP( typ ='R', statut ='o', max ='**'),
+       #     ),
+       #     td_txt = BLOC ( condition = 'Format == "txt"',
+       #       Fichier        = SIMP(statut='o', typ = ('Fichier','Text Files(*.txt);All Files (*)'),),
+       #     ),
+       #     td_med = BLOC ( condition = 'Format == "txt"',
+       #       Fichier        = SIMP(statut='o', typ = ('Fichier','Med Files(*.med);All Files (*)'),),
+       #     ),
+       #  ), # b_type_de_champ_exogene_format
+       #  b_type_de_champ_exogene_interface = BLOC( condition = ' type_de_champ_exogene == "interface" ',
+       #    Interface =  SIMP ( statut='o', typ = 'TXM')
+       #  ), # b_type_de_champ_exogene_interface
+     # ),
+     # b_endogene = BLOC (condition = "Exogene == False,
+     #  Uniforme  = SIMP(statut = 'o', typ = bool),
+     #  b_uniforme = BLOC (condition = "Uniforme == True", **dicoBloc),
+     #  b_non_uniforme = BLOC (condition = "Uniforme == False", 
+     #    Categorie = SIMP(statut = 'o', typ = 'TXM', into = ['Valeurs Directes Manuelles', 'Fonction Standard', 'Fichier']),
+         
+     #    t_calcul =  BLOC ( condition = 'Categorie == "Connue"',
+     #      type_description = SIMP ( statut='o', typ = 'TXM', into = ['manuel', 'fichier']),
+     #      td_fichier = BLOC ( condition = 'type_description == "fichier"',
+     #         Format_Fichier = SIMP (statut='o', typ = 'TXM', into = ['txt','Autre',] ),
+     #         Fichier        = SIMP(statut='o', typ = ('Fichier','Med Files(*.med);All Files (*)'),),
+     #       ),
+# PNPN faire le bloc selon la longueur
+     #      td_manuel = BLOC ( condition = 'type_description == "manuel"',
+             #Vecteur = SIMP( fenetreIhm='Tableau', homo = labels,
+             #                   statut='o', min=2, max='**',
+             #                   typ = Tuple(nbReels),
+             #                   validators=VerifTypeTuple(("'R',"*nbReels),),) # end Particule
+     #        Vecteur= SIMP( typ ='R', statut ='o', max ='**'),
+     #       ),
+     #    ),
+     #    t_externe =  BLOC ( condition = 'Categorie == "Externe"',
+     #       Code = SIMP(statut = 'o', typ = 'TXM'),
+     #  ),
+     # ),
+  #)
+
+       
+   
+def bloc_description_particule_manuelle (fonction_type_de_description) :
+    return BLOC ( condition = 'type_description_particule == "manuelle"',
+        Nombre_D_Especes = SIMP(statut = 'o', typ = 'I', defaut =1,),
+        Consigne = SIMP(statut ="o", homo="information", typ="TXM", defaut = " definir autant d espece que le  nombre d especes"),
+        Espece = FACT ( statut='o', max = "**",
+            Particule = apply(fonction_type_de_description),
+             ), # fin  fact Espece
+      )  # end b_manuelle
+
+def bloc_description_particule_tableau (nbReels, labels):
+      return BLOC ( condition = 'type_description_particule == "tableau"',
+        Nombre_D_Especes = SIMP(statut = 'o', typ = 'I', defaut =1,),
+        Consigne = SIMP(statut ="o", homo="information", typ="TXM", defaut = " definir autant d espece que le  nombre d especes"),
+        Espece = FACT ( statut='o', max = "**",
+             Particules = SIMP( fenetreIhm='Tableau', homo = labels,
+                                statut='o', min=2, max='**',
+                                typ = Tuple(nbReels),
+                                validators=VerifTypeTuple(("'R',"*nbReels),),) # end Particule
+             ), # fin  fact Espece
+      )  # end b_tableau
+
+def cree_Surface_Elementaire(MC) :
+   for surface in MC.valeur:
+       new_liste=[]
+       if not(surface in liste_Objets_Surface_Elementaire):
+          new_Surface=Surface_Elementaire(surface)
+          new_liste.append(new_Surface)
+          liste_Objets_Surface_Elementaire.append(surface)
+   print (liste_Objets_Surface_Elementaire)
+   return
+    
+# 
+
+dict_Composant = { "Usecase Silvia" : ['Particule'],
+                   "Ecoulement_diphasique_disperse" : ['Particule', 'Fluide','Solide','Plasma',]
+                 }
+JdC = JDC_CATA('Vimmp')
+
+
+Etude = PROC (nom = 'Etude',
+   Titre =  SIMP(statut='o', typ = 'TXM'),
+
+   Domaine_Geometrique= FACT( statut='o',
+   Forme =  SIMP(statut='o', typ = 'TXM',into = ['Forme Simplifiee', 'CAO ou Maillage']),
+   b_Forme = BLOC( condition = 'Forme == "Forme Simplifiee"',
+          Boite = SIMP(statut='o', typ = 'TXM',into = ['Cube', 'Boule',] ),  
+          b_Cube = BLOC( condition = 'Boite == "Cube"',
+            Taille_Boite_Englobante = SIMP(statut='o', typ = 'R', max=3, min =3) 
+            # derait etre un Tuple(3) mais a faire apres la projection
+          ), # fin b_Cube
+          b_Boule = BLOC( condition = 'Boite == "Sphere"',
+            Centre = SIMP(statut='o', typ = 'R', max=3, min =3),
+            Rayon  = SIMP(statut='o', typ = 'R') ,
+            # derait etre un Tuple(3) mais a faire apres la projection
+          ), # fin b_Sphere
+   ), # fin b_Forme
+   b_CAO =  BLOC ( condition="Forme == 'CAO ou Maillage'" ,
+           format_fichier = SIMP (statut='o', typ = 'TXM', into = ['txt','Med','I-deas', 'Gmsh', 'Harpoon', 'Simail', 'Star-CCM'], ),
+ # PNPN -> generer tous les blocs
+ # faire un mot clef pour avoir une projection qui permet le concatenation des into ?
+            b_format_fichier_med = BLOC ( condition="format_fichier == 'Med'",
+              Fichier_Domaine= SIMP(statut='o', typ = ('Fichier','Med Files(*.med);All Files (*)'),),
+            ),
+    ),# fin b_CAO 
+    surface_Elementaire=SIMP(statut= 'o',typ= 'TXM',max='**', siValide=cree_Surface_Elementaire),
+    essai=SIMP(statut = 'ee', typ = Surface_Elementaire),
+
+   ), # fin Domaine_Geometrique
+
+
+   Composant_Du_Systeme= FACT(  statut='o', max = "**",
+#     #EF : Je ne ferais pas apparaître ici l'hybridation via le max=2
+#     #     J'attendrais de définir la méthode numérique...
+     Composant = SIMP(statut='o', typ = 'TXM',into =  ['Particule', 'Fluide','Solide','Plasma'], position = 'global_jdc'),
+     Niveau_De_Description = FACT ( min=1, max= 2, statut='o', 
+       Niveau_De_Description_Generale = SIMP( statut ='o', typ = 'TXM',into = ['Microscopique','Mesoscopique', 'Macroscopique']),
+
+       # PNPN voir le global qui ne fonctionne pas
+       b_Mesoscopique_Particule   = BLOC( condition = "Niveau_De_Description_Generale == 'Mesoscopique' ",
+       #b_Mesoscopique_Particule   = BLOC( condition = "Niveau_De_Description_Generale == 'Mesoscopique' and 'Composant' == 'Particule'",
+          Description_Physique = FACT( statut = 'o',
+             Electrostatics  = SIMP( statut='o', typ=bool, defaut=False, position ='global'),
+             Nombre_D_Especes  = SIMP( statut = 'o', typ = 'I', defaut =1, position ='global_jdc'),
+             Espece = FACT( statut='o', max = "**",
+                Nom_De_L_Espece     = SIMP( statut='o', typ = 'TXM'),
+                Masse_Molaire       = SIMP( statut='o', typ='R',),
+                Proportion_En_Nbre_Ou_Masse = SIMP(statut='f', typ='R',),  
+                b_Electrostatique    = BLOC( condition = "Electrostatics == True",
+                   Charge = SIMP( statut = 'o', typ =  'R'),
+                ), # fin b_electorsatique
+             ), # fin Espece   
+             Categorie_Interaction = SIMP(statut ='o', typ ='TXM', into=['champ moyen', 'champ moyen dynamique','interaction par paire']),
+             b_Interactionparpaire   = BLOC( condition = 'Categorie_Interaction == "interaction par paire"',
+                  Interaction_Par_Paire = FACT( statut='o', #   max = cardinalite du into 
+                      Type_Interaction = SIMP( statut='o', typ ='TXM', into = ['electrostatique',], defaut = 'electrostatique'),
+                      b_elec = BLOC( condition = "Type_Interaction == 'electrostatique'",
+                          Couple_D_especes = FACT (statut ='o', min=1, max = '**', # min=n, max=n(n+1)/2
+                            Nom_Des_Especes = SIMP ( statut ='o', typ = 'TXM', min=2, max=2),
+                            ),
+                      ), # fin b_elec
+                   ), #  fin Interactions_Par_Paire
+                ), # fin b_Interactionparpaire
+             b_champ_moyen   = BLOC( condition = 'Categorie_Interaction == "champ moyen"',
+                Interaction = FACT( statut='o', max = 2, #   max = cardinalite du into 
+                   Type_Interaction = SIMP( statut='o', typ ='TXM', into = ['champ gravite','champ electrostatique']),
+                   b_gravite = BLOC (condition = 'Type_Interaction=="champ gravite"',
+                     G= SIMP( statut='o', typ='R',defaut =9.81),
+                   ),
+                   b_elect = BLOC (condition = 'Type_Interaction=="champ electrostatique"',
+                     Champ_Elec = champ ('E', ('E',), 1),
+                   ),
+                   Porte_Sur_Toutes_Les_especes = SIMP ( statut ='o', typ = bool, defaut = True), # faire un typ = "espece"
+                   b_porte_espece = BLOC( condition =  'Porte_Sur_Toutes_Les_especes == False ',
+                        Liste_D_Espece = SIMP ( statut ='o', typ = 'TXM', max= '**'), # faire un typ = "espece"
+                   ),
+                   ), #  fin Interaction
+             ), # fin b_champ_moyen
+             b_champ_moyen_dynamique   = BLOC( condition = 'Categorie_Interaction == "champ moyen dynamique"',
+                Interaction = FACT( statut='o', max = 2, #   max = cardinalite du into 
+                   Type_Interaction = SIMP( statut='o', typ ='TXM', into = ['champ gravite','champ electrostatique']),
+                   Liste_D_Espece = SIMP ( statut ='o', typ = 'TXM', max= '**'), # faire un typ = "espece"
+                   ), #  fin Interaction
+             ), # fin b_champ_moyen_dynamique
+
+
+          ), # fin definition_Physique 
+
+          Physique_Statistique   =  SIMP( statut='o', typ='TXM', defaut='Non_Equilibre', into = ['Equilibre', 'Non_Equilibre']),
+          #Physique_Statistique =SIMP( statut='o', typ='TXM', defaut='Non_Equilibre', into = ['Equilibre', 'Non_Equilibre'], position ='global'),
+          #PN pourquoi global ??
+          b_Physique_Statistique_Equilibre =  BLOC( condition = "Physique_Statistique == 'Equilibre'",
+             Distribution = SIMP(statut='o', typ='TXM', defaut='nvt', into=['nvt','nve']),
+             b_Nvt = BLOC ( condition = "Distribution == 'nvt'",
+                Target_Temperature = SIMP( statut='o', typ='R')
+             ), # fin b_nvt
+             b_nve = BLOC ( condition = "Distribution == 'nve'",
+                Target_Energie = SIMP( statut='o', typ='R')
+             ), # fin b_nve
+          ), # b_Physique_statstique_equilibre
+          b_Physique_Statistique_Equilibre_false =  BLOC( condition = "Physique_Statistique == 'Non_Equilibre'",
+                Temperature = SIMP( statut='o', typ='R')
+          ), # b_Physique_statstique_equilibre                                      
+         ), # fin b_Mesoscopique_Particule
+
+         Type_De_Description = FACT( min=1, max =2, statut='o', 
+             Type_Description = SIMP( statut ='o', typ = 'TXM',into = ['Description_par_Particule', 'Description_par_Champ'], ),
+             b_Particule = BLOC( condition = 'Type_Description == "Description_par_Particule"',
+                Modele_De_Particule = FACT ( statut='o', max ='**',
+                   Type_D_Entite = SIMP(statut='o', typ = 'TXM',into =['Coarse', 'Atom','CVE'], defaut='Coarse'),
+                   Type_D_Approche = SIMP(statut='o', typ = 'TXM',into =['Cinetique', 'Cinetique_Etendue', 'Position']),
+                ), # Modele_De_Particule
+                Modele_Numerique = FACT ( statut='o', 
+                   Modele_Numerique = SIMP (statut = 'o', typ = 'TXM', into = ['MD', 'DPD'], defaut ='DPD'), 
+                   b_DPD = BLOC(condition = 'Modele_Numerique == "DPD"' ,
+                      Structure_Loi_evolution = SIMP (statut = 'o', typ = 'TXM', into = ['Equations de Langevin']),
+              # a faire en fonction et projection des types fonctions en XSD a reflechir
+                      Species_Pair_Parameters = FACT(statut='o', max="**",
+                      #Consigne = SIMP(statut ="o", homo="information", typ="TXM", defaut = "renvoie a InterActions_interparticulaires "),
+                         Pair_Interaction = SIMP(statut ='o', max=2, typ = 'TXM'),
+                         # lennard_jones si MD et groot_warren DPD
+                         Species_Pair_Parameters_Potential_Type   = SIMP( statut='o', typ='TXM',into=['groot_warren','lennard_jones']),
+                         b_Parameters_Potential_Type_Groot_Warren = BLOC( condition= "species_pair_parameters_potential_type == 'groot_warren'",
+                            Groot_Warren_Repulsion = SIMP( statut='o',typ='R',defaut=25.0,val_min=0),
+                            Groot_Warren_Cutoff    = SIMP( statut='o',typ='R',defaut=1.0,val_min=0),
+                         ), # b_parameters_potential_type_groot_warren
+                        Drag_Coefficient  = SIMP( statut='o', typ='R'),
+                        Drag_Force_Cutoff = SIMP( statut='o', typ='R', val_min=0, ),
+                      ), # species_pair_parameters
+
+                   ), # b_DPD
+                ), # Modele_Numerique
+             ), # b_Particule
+          
+         ), # Type_De_Description
+     ), # Niveau_De_Description
+   
+##   Temps_Physique_Simule 
+    ), # Composant du systeme
+
+    Conditions_Aux_Limites = FACT ( statut ='o',max = '**', # max = nb de facette de bord
+        Type_Conditions_Limites = SIMP( statut='o', typ= 'TXM', into =['Entree', 'Sortie', 'Symetrie','Periodique', 'Paroi'], position ='global'),
+        Porte_Sur_Tout_le_Vecteur = SIMP(statut='o', typ = bool),
+        Facette_Bord= SIMP( statut='o', typ= 'TXM',), 
+        b_periodique = BLOC( condition = "Type_Conditions_Limites == 'Periodique'",
+          Direction = SIMP(statut='o', typ = 'TXM', into = ['X','Y','Z', 'all']),
+        ), # b_periodique
+        b_Variable = BLOC( condition = "Porte_Sur_Tout_le_Vecteur == False ",
+          Variable_Du_Vecteur_Etat = SIMP(statut='o', typ = 'TXM'),
+        ), # b_Variable
+    ),  # Conditions_Aux_Limites
+    Conditions_Initiales = FACT ( statut ='o',  # 1 par valeur du vecteur d etat
+        Porte_Sur_Tout_le_Vecteur = SIMP(statut='o', typ = bool),
+        b_Variable = BLOC( condition = "Porte_Sur_Tout_le_Vecteur == False ",
+          Condition_Initiale_Par_Variable = FACT ( max = "**", statut ='o', 
+             Variable_Du_Vecteur_Etat  = SIMP(statut='o', typ = 'TXM'),
+             Type_Conditions_Initiales = SIMP( statut='o', typ= 'TXM', into =['Distribution Initiale Vecteur Etat', 'Valeurs Vecteur Etat Initiales'], position ='global'),
+              b_distrib = BLOC( condition = "Type_Conditions_Initiales == 'Distribution Initiale Vecteur Etat'",
+                 Distribution_Initiale_Vecteur_Etat =  SIMP( statut='o',typ ='TXM', into = ['MaxWell', 'Uniforme', 'Auto']),
+                 Sous_Domaine_D_Injection =  SIMP( statut='f', typ= 'TXM'),
+              ),# b_distrib
+              b_initials = BLOC( condition = "Type_Conditions_Initiales == 'Valeurs Vecteur Etat Initiales'",
+                Fichier_Vecteur_Etat_Initial= SIMP(statut='o', typ = ('Fichier','All Files (*)'),),
+                Format_Fichier_Vecteur_Etat_Initial = SIMP (statut='o', typ = 'TXM', into = ['txt', 'a definir avec Eric']),
+              ),# b_initials
+           ),# Condition_Initiale_Par_Variable
+         ), # b_Variable
+        b_Globale = BLOC( condition = "Porte_Sur_Tout_le_Vecteur == True ",
+          Condition_Initiale = FACT (  statut ='o', 
+             Type_Conditions_Initiales = SIMP( statut='o', typ= 'TXM', into =['Distribution Initiale Vecteur Etat', 'Valeurs Vecteur Etat Initiales'], position ='global'),
+              b_distrib = BLOC( condition = "Type_Conditions_Initiales == 'Distribution Initiale Vecteur Etat'",
+                 Distribution_Initiale_Vecteur_Etat =  SIMP( statut='o',typ ='TXM', into = ['MaxWell', 'Uniforme', 'Auto']),
+                 Sous_Domaine_D_Injection =  SIMP( statut='f', typ= 'TXM'),
+              ),# b_distrib
+              b_initials = BLOC( condition = "Type_Conditions_Initiales == 'Valeurs Vecteur Etat Initiales'",
+                Fichier_Vecteur_Etat_Initial= SIMP(statut='o', typ = ('Fichier','All Files (*)'),),
+                Format_Fichier_Vecteur_Etat_Initial = SIMP (statut='o', typ = 'TXM', into = ['txt', 'a definir avec Eric']),
+              ),# b_initials
+             ),# Condition_Initiale_Par_Variable
+           ), # b_Globale
+    ),  # Conditions_Initiales
+
+) #  Etude
+
+#   # Systeme physique : met en oeuvre 1 ou plusieurs des 4 entites  ELectron
+#   #  Atome Coarse CVE (en check) but de l etude
+#   # plasma, solid, fluid , particule
+#   # met en oeuvre des composants principaux puis a quel niveau 
+#   # sous systeme physique elementaire pour composant principal
+#   # 
+#   Niveau_De_Description =  SIMP(statut='o', max= '**',typ ='TXM', into = ['Microscopic','Mesoscopic', 'Macroscopic',], homo= 'SansOrdreNiDoublon',position='global')  ,
+#   Type_De_Description =  SIMP( statut='o',  max= '**',homo ='SansOrdreNiDoublon',typ ='TXM', into = ['Modele Particulaire','Particulaire Stochastique','Automate sur reseau','Lagrangien Stochastique'],position='global') ,
+#   Modele_numeric =  SIMP( statut='o',  max= '**',homo ='SansOrdreNiDoublon',typ ='TXM', into = ['MD','DPD', 'DEM', 'CFD','LBM'],position='global') ,
+#   # selon les types de description on aura un modele de description de particules =
+#   # vecteur d etat ( approche cinetique et approche cinetique etendue ( electromagnetisme ou charge ...)) (independant du nb d espece)
+#   # on peut avoir des vecteurs d etat differents pour chacune des especes mais un vecteur d etat seulement par espece (differentes especes )
+#   # 
+#   #
+#   # en ddp la loi de comportement est donnée
+#   # DPD - > approche cinetique
+#   #       on choisit la structure de loi d evolution = langevin
+#   #       expression de la force conservative = loi de comportement (p33) _ MR (0 ou n)
+#   #       pour la m loi d evolution avec parametres fixes standalone
+#   #       pour la m loi d evolution avec parametres sont donnes par  1 ou +sieurs calculs (surtout en CFD pour +sieurs calcul pour chaque niveau) (hybride)
+#   #       on pourrait ne pas avoir de loi de comportement mais des parametres de la loi d evolution
+#   #       fermeture des contraintes : q faire sur une quantite numerique
+#   #   il y a des familles de structure de loi d evolution en fonction du couple ( modele de description et du modele numerique )   
+#   # DPD :  1 structure de loi d evolution : 3 termes
+#   # 1 et 1 seule structure de loi d evolution par modele numerique (inverse pas vrai : si langevin par forcement DPD)
+#   #Entite =  SIMP(statut='o',  max= '**',homo ='SansOrdreNiDoublon',typ ='TXM', into = ['element','atomic', 'grain', 'CVE (cont volume)'],position='global'), 
+#   #method_numeric = SIMP(statut='o', typ ='TXM', into = ['DPD ', 'SDPD']),
+#   type_de_methode=  SIMP(statut='o', typ ='TXM', into = ['stand_alone', 'hybride']) 
+#   # MD  = molecular dynamics (= microscopic)
+#   # CFD = computational fluid dynamics (= macroscopic) 
+#   # DPD = Dissipative Particule dynamics (= meso)  
+#   # DEM = Discrete Element Method 
+#   # ----------------------------------------------
+#   #b_DEM = BLOC (condition = 'Type_Etude == "DEM"',
+#   # ----------------------------------------------
+#   #   type_description_particule =  SIMP(statut = 'o', typ ='TXM', into =['fichier', 'tableau', 'manuelle'],position = 'global'),
+#   #   b_fichier = bloc_description_particule_fichier(),
+#   #   b_tableau = bloc_description_particule_tableau (9, ('Ux','Uy', 'Uz,', 'Vx','Vy', 'Vz','Rx','Ry','Rz')),
+#   #   b_manuelle = bloc_description_particule_manuelle(description_manuelle_particule_DEM),
+#   # ), # fin b_DEM
+#
+#   # ------------------------------------------------
+##    b_CFD = BLOC (condition = 'Type_Etude == "CFD"',
+##   # -----------------------------------------------
+##     Ecoulement = SIMP(statut='o', typ ='TXM', into = ['Laminaire','Turbulent']),
+##     FLuid = FACT( statut = 'o', 
+##          Masse_Volumique          =  SIMP(statut='o', typ='R', ),
+##          Viscosite_cinetique      =  SIMP(statut='o', typ='R', ),
+##          Diffusivite_thermique    =  SIMP(statut='f', typ='R', ),
+##          Diffusivite_des_especes  =  SIMP(statut='f', typ='R', max = '**'),
+##           ),
+##     
+##     #Particule = FACT( statut = 'o', max="**",
+##     #  Description_Cinetique =   Description_manuelle_Particule_Cinetique_etendue(),
+##     #  ),
+##     # type_description_particule =  SIMP(statut = 'o', typ ='TXM', into =['fichier', 'tableau', 'manuelle'],position = 'global'),
+##     # b_fichier = bloc_description_particule_fichier(),
+##      #b_tableau = bloc_description_particule_tableau (9, ('Ux','Uy', 'Uz,', 'Vx','Vy', 'Vz','Rx','Ry','Rz')),
+##    ),  # fin b_CFD
+##
+##    b_MD = BLOC (condition = 'Type_Etude == "MD"',
+##     type_description_particule =  SIMP(statut = 'o', typ ='TXM', into =['fichier', 'tableau', 'manuelle'],position = 'global'),
+##     b_fichier = bloc_description_particule_fichier(),
+##     b_tableau = bloc_description_particule_tableau (6, ('Ux','Uy', 'Uz,', 'Vx','Vy', 'Vz')),
+##     b_manuelle = bloc_description_particule_manuelle(description_manuelle_particule_cinetique),
+##
+##     Materiel_Relation = FACT( statut ='f',
+##         Entree_Possible= SIMP(statut='o', typ ='TXM', into = ['calcul', 'fichier']),
+##          b_fichier =   BLOC (condition = "Entree_Possible == 'fichier'",
+##             fichier_MR= SIMP(statut='o', typ= ('Fichier','All Files (*)')),
+##                            ),
+##          ),
+##    ), # fin b_MD
+##  # ---------------------------------------------
+##  b_DPD = BLOC (condition = 'Type_Etude == "DPD"',
+##  # ---------------------------------------------
+##   type_description_particule =  SIMP(statut = 'o', typ ='TXM', into =['fichier', 'tableau', 'manuelle'],position = 'global'),
+##   b_fichier = bloc_description_particule_fichier(),
+##   b_tableau = bloc_description_particule_tableau (6, ('Ux','Uy', 'Uz,', 'Vx','Vy', 'Vz')),
+##   b_manuelle = bloc_description_particule_manuelle(description_manuelle_particule_cinetique),
+##   Thermostat =  SIMP(statut='o', typ='R', ),
+##     ),
+##)
+###       ),
+###       ),
+#)
+###  #Fluid = SIMP(statut='o', typ ='TXM', into ='Laminaire', 'Trubulent'])
+###  #     Temperature =  SIMP(statut='f', typ='R', ),
+###  #     Concentration =  SIMP(statut='f', typ='R'),
+###  #     Diffusivite =  SIMP(statut='f', typ='R'),
+###  #     Frottement =  SIMP(statut='f', typ='R'),
+###  #     Concentration =  SIMP(statut='f', typ='R'),
+###    #),
+###
+###