]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
ajout de la version 12 du cata_CSAndCPS + .comm, + version 16 .comm
authorEric F <eric.fayolle.77@gmail.com>
Wed, 24 Feb 2021 20:46:36 +0000 (21:46 +0100)
committerEric F <eric.fayolle.77@gmail.com>
Wed, 24 Feb 2021 20:46:36 +0000 (21:46 +0100)
Vimmp/cata_CSAndCPS_v12.py [new file with mode: 0644]
Vimmp/cata_CSAndCPS_v12_test_driver_1.comm [new file with mode: 0644]
Vimmp/cata_CSAndCPS_v16_test_driver_1.comm [new file with mode: 0644]

diff --git a/Vimmp/cata_CSAndCPS_v12.py b/Vimmp/cata_CSAndCPS_v12.py
new file mode 100644 (file)
index 0000000..815bf38
--- /dev/null
@@ -0,0 +1,1291 @@
+from Accas import *
+
+class composant(ASSD):pass
+class mapper(ASSD):pass
+class converter(mapper):pass
+class interpolator(mapper):pass
+class modeleNumDuCompo(UserASSD):pass
+class especeChimique(UserASSD):pass
+class userParticle(UserASSD) :pass
+class userAtom(userParticle) :pass
+class userMolecule(userParticle) :pass
+class userDiscrete(userParticle) :pass
+class userDPD(userParticle) :pass
+
+class spatialRegion(UserASSD):pass
+class cadShape(spatialRegion):pass
+#class meshGroup(spatialRegion,UserASSDMultiple):pass
+class meshGroup(UserASSDMultiple):pass
+class meshIdentifier(spatialRegion):pass
+class systemGeometry(UserASSD):pass
+class simulatedTime(UserASSD):pass
+class constitutiveRelation(UserASSD):pass
+class interaction(UserASSD):pass
+class transferId(UserASSD):pass
+class fileId(transferId):pass
+class memoryId(transferId):pass
+class corbaId(transferId):pass
+
+class stateVariable(UserASSDMultiple) : pass
+class scalar(stateVariable):pass
+class dynamicVariable(stateVariable):pass
+
+
+# PN a faire --> ajouter un  MC modeleNumerique (apres avoir renomme le modeleNumerique actuel en classe de modele numerique) 
+# et le dictionnaire d apres 
+# dictTypModNumModNum = {
+#     ('Continuum system','Particles')          : ('SPH','Lagrangian one-fluid-particle pdf'),
+#     ('Continuum system','Fields')             : ('FV','FEM', 'Spectral method'),
+#     ('Classical particle system','Particles') : ('MD', 'DPD',  'SDPD','SPH','CFD_Discrete_Particles'),
+#     ('Classical particle system','Fields')    : ('LBM',),
+#     ('Quantum system','Particles')            : ('Particle method',),
+#     ('Quantum system','Fields')               : ('Wave',),
+# }
+
+dictTypModNumModNum = {
+    ('Continuum system','N-Particle_Method')          : ('SPH' , 'Lagrangian one-fluid-particle pdf'), #TODO 'N-Particle_Method --> N-Particle_Method
+    ('Continuum system','Field-based')                : ('FV'  , 'FEM', 'Spectral method'),
+    ('Classical particle system','N-Particle_Method') : ('MD'  , 'DPD', 'SDPD','SPH','CFD_Discrete_N-Particle_Method'),
+    ('Classical particle system','Field-based')       : ('LBM' ,),
+    ('Quantum system','N-Particle_Method')            : ('Particle method',),
+    ('Quantum system','Field-based')                  : ('Wave',),
+}
+
+dictCodeModeleNumerique = { 
+    'Code_Saturne' : ('Lagrangian one-fluid-particle pdf', 'FV', 'CFD_Discrete_N-Particle_Method',),
+    'Fluent'       : ('FV',),
+    'Culgi Package': (),
+    'DEM_SD'       : ('Lagrangian one-fluid-particle pdf', 'FV', 'CFD_Discrete_N-Particle_Method',),
+    'DFTB+'        : ('density functional tight binding method',),
+    'DL_MESO_DPD'  : ('Lagrangian one-fluid-particle pdf', 'FV', 'CFD_Discrete_N-Particle_Method',),
+    'DL_MESO_LBE'  : ('Lagrangian one-fluid-particle pdf', 'FV', 'CFD_Discrete_N-Particle_Method',),
+    'DL_POLY_4'    : ('Lagrangian one-fluid-particle pdf', 'FV', 'CFD_Discrete_N-Particle_Method',),
+    'GROMACS'      : ('Lagrangian one-fluid-particle pdf', 'FV', 'CFD_Discrete_N-Particle_Method',),
+    'GROMACS_LS'   : ('Lagrangian one-fluid-particle pdf', 'FV', 'CFD_Discrete_N-Particle_Method',),
+    'LAMMPS'       : ('Lagrangian one-fluid-particle pdf', 'FV', 'CFD_Discrete_N-Particle_Method',),
+    'NWChem'       : ('Lagrangian one-fluid-particle pdf', 'FV', 'CFD_Discrete_N-Particle_Method',),
+    'OpenFOAM'     : ('Lagrangian one-fluid-particle pdf', 'FV', 'CFD_Discrete_N-Particle_Method',),
+    'Quantum EXPRESSO'   : ('Particle method', 'Wave',),
+    'RHEO_AGGRATE' : ('Particle method', 'Wave',),
+    'RHEO_DROP'    : ('Particle method', 'Wave',),
+    'STAR_CCM+'    : ('FV', 'Particles',),
+    'Code Nill'    : ('Spectral method', ),
+}
+# Le Code Nill est ajouté en dur au Solver
+
+dictCodeFormat =    {
+    'Code_Saturne' : ('Med', 'cgns', 'msh', 'des', 'unv',  ),
+    'Culgi Package': ('cof',),
+    'DEM_SD'       : ('geo', 'ascii'),
+    'DFTB+'        : ('geo', 'ascii'),
+    'Fluent'       : ('FluentFormat', ),
+    'OpenFOAM'     : ('OpenFoamFormat', 'Med', ),
+}
+
+dictInterpolatorFormat =    {
+    'Med Coupling' : ('Med',),
+}
+dictConvertorFormat =    {
+    'Gmsh'         : ('Med', 'OpenFoamFormat'),
+}
+
+dictTermeLE = {
+    ('Fields','Particles') : ('Fluid_Velocity_Field', 
+                              'Fluid_Temperature_Field', 
+                             'Fluid_Species_Mass_Fraction_Fluid',),
+    ('Particles','Fields') : ('Fluid_Particle_Momentum_Exchange_Field', 
+                              'Fluid_Particle_Thermal_Exchange_Field', 
+                              'Lagrangian one-particle pdfFluid_Particle_Mass_Source_Field', 
+                              'Particle_Volumetric_Concentration_Modified_Fluid_Viscosity',
+                              'Particle_Extra_Stress_Tensor'),
+    ('Particles','Particles') : ('Pas encore fait'),
+    ('Fields','Fields') : ('Pas encore fait'),
+}
+
+dictCodeConvertisseur = {
+    ('Saturne', 'OpenFOAM') : ('gmsh', 'Saturne2CDM  and CDM2OpenFoam'),
+    ('Saturne', 'Fluent')   : ('Saturne2CDM and CDM2Fluent'),
+    ('Fluent', 'OpenFOAM')  : ('Fluent2CDM and CDM2OpenFoam'),
+}
+
+listeFormatGenerique =['Med', 'Cgns', 'Gmsh', ]
+
+#----------------------------------------
+def prepareBlocSystemType(systemType) :
+#----------------------------------------
+    condition   = "SystemType == '" + systemType + "'"
+    Identifier  = SIMP(statut='o', typ=(modeleNumDuCompo,'createObject'),)
+    SimulatedTimeLapse = SIMP(statut ='o', typ = simulatedTime)
+    # ModelType        = SIMP(statut='o', typ='TXM',  into = ('Particles', 'Fields'), position='inGetAttribut')
+    ChoiceOfApproach  = SIMP(statut='o', typ='TXM', into=['Field-based', 'N-Particle_Method'], position='inGetAttribut')
+
+    dicoArgs={}
+
+    for typeMod in ('Field-based', 'N-Particle_Method'):
+        conditionType   = "ChoiceOfApproach == '" + typeMod + "'" 
+        NumericalMethod = SIMP(statut='o',typ='TXM', into=dictTypModNumModNum[systemType, typeMod], 
+                               position='global', intoXML=allValueInDict(dictTypModNumModNum))
+        dicoBloc = {}
+        for modeleNumerique in list(dictTypModNumModNum[systemType,typeMod]):
+            conditionNum = "NumericalMethod == '" + modeleNumerique + "'"
+            setCode = set()
+            for code in dictCodeModeleNumerique.keys():
+                if modeleNumerique in dictCodeModeleNumerique[code]: setCode.add(code)
+            # print('------------- conditionType                            -------->',conditionType)
+            if setCode ==set(): setCode.add('Code Nill')
+            Solver = SIMP(statut='o', typ='TXM', into=list(setCode), intoXML=list(dictCodeModeleNumerique.keys()) )
+            monNomBloc = 'bloc_ModelName_' + modeleNumerique.replace(' ','_') #les noms de blocs ne peuvent pas avoir de blanc ! 
+            if setCode !=set(): dicoBloc[monNomBloc]=BLOC(condition=conditionNum, nomXML='b_ModelName',Solver=Solver)
+        dicoArgs['blocModelType'+typeMod] = BLOC(condition=conditionType, NumericalMethod=NumericalMethod, **dicoBloc)
+        
+    blocMeshRef = BLOC(condition = '( (ChoiceOfApproach == "Field-based") and (NumericalMethod == "FV") ) or '
+                                   '( (ChoiceOfApproach == "N-Particle_Method") and (NumericalMethod == "CFD_Discrete_N-Particle_Method") )',
+        MeshIdentifiers = SIMP(statut ='o', max ='**', typ = meshIdentifier,
+                               metAJour=(('ApplyOnGroups',
+                                          'self.etape.getChild("BoundaryConditions").getChild("BoundaryCondition")'),),
+                               ),)
+    dicoArgs['blocMeshRef'] = blocMeshRef
+    NumericalModel = FACT(statut='o', max= '**', Identifier=Identifier, ChoiceOfApproach=ChoiceOfApproach, 
+                          SimulatedTimeLapse=SimulatedTimeLapse, **dicoArgs)
+    return BLOC(condition=condition, nomXML='b_systemType', NumericalModel=NumericalModel)
+
+
+#-----------------------------------
+def calculCommun(key1, key2, dico):
+#-----------------------------------
+# retourne la liste des valeurs communes a dico[key1] et dico[key2]
+    monSet=set()
+    if not key1 in dico: return ()
+    if not key2 in dico: return ()
+    for val in dico[key1]:
+       if val in dico[key2]:
+         monSet.add(val)
+    if monSet == set() : monSet.add ('No common format')
+    return list(monSet)
+
+#-------------------------
+def allValueInDict(dico):
+#-------------------------
+# retourne la liste de toutes les valeurs possibles dans dico 
+    monSet=set()
+    for clef in dico :
+        for val in dico[clef] : monSet.add(val)
+    return monSet
+
+#--------------------------------------------------------------------------------------------------
+def creeBlocPourLesFichiers(laCondition, Prefixe='Empty', ListeFormats=[], FieldName=None):
+#---------------------------------------------------------------------------------------------------
+# il faut reflechir pour parametrer NomDuFichier
+# et le type (existing... du fichier)
+# et utiliser le creeBlocPourLesFichiers
+    SIMPFormatFichier = SIMP(statut='o', typ = 'TXM', into = tuple(ListeFormats) + ('All',), defaut='All' )
+    dicoDesBlocs = {}
+    NomDuFichier = Prefixe+'FileName'
+    formatName   = Prefixe+'FileFormat'
+    dicoDesBlocs[formatName] = SIMPFormatFichier
+    ListeFormatsboucle       = tuple(ListeFormats) + ('All',) 
+    for formatFich in ListeFormatsboucle :
+        dicoArgs={}
+        nomBloc         = 'blocFormatFichier' + str(formatFich)
+        typeDesFichiers = ('Fichier', formatFich + " Files (*." + formatFich + ");;All Files (*)",'Sauvegarde')
+        blocCondition   = formatName + " == '" + formatFich + "'"
+        dicoArgs[NomDuFichier] = SIMP(statut='o', typ = typeDesFichiers, nomXML=NomDuFichier )
+        dicoDesBlocs[nomBloc]  = BLOC(condition = blocCondition, **dicoArgs)
+    if FieldName:
+       SIMPFieldName = SIMP(statut='o', typ = 'TXM',)
+       dicoDesBlocs[FieldName] = SIMPFieldName 
+    return BLOC(condition=laCondition, **dicoDesBlocs)
+
+#---------------------------------------------
+def prepareChamp(nomDelaContante, labels ,nbReels ) :
+#---------------------------------------------
+# PN : a reecrire
+# ajouter les extensions pour le fichier et les blocs associes
+# certains champs ne seront jamais uniformes
+# probablement a refaire
+#PNPN : Passer le nom du champ pour le label du vecteur
+# A revoir
+
+    dicoBloc = {}
+    dicoBloc[nomDelaContante] = SIMP(statut='o', typ='R')
+    return FACT(statut='o',
+       InputMode    = SIMP(statut='o', typ='TXM', into=('uniform value','values directly assigned','values read in file','analytical function',)),
+       blocUniforme = BLOC(condition = "InputMode == 'uniform value'", **dicoBloc),
+       blocVsaisies = BLOC(condition = "InputMode == 'values directly assigned'",
+         Field = SIMP(typ='R', statut='o', max ='**'),
+             #Vecteur = SIMP(fenetreIhm='Tableau', homo = labels,
+             #                   statut='o', min=2, max='**',
+             #                  typ=Tuple(nbReels),
+             #                   validators=VerifTypeTuple(("'R',"*nbReels),),) # end particle
+       ), #b_vsaisie
+       blocVdsfich = BLOC(condition = "InputMode == 'values read in file'",
+         Format    = SIMP(statut='o', typ='TXM', into=['txt','Med',], position='global' ),
+         td_txt    = BLOC(condition = 'Format == "txt"',
+           File    = SIMP(statut='o', typ=('Fichier','Text Files(*.txt);All Files (*)'),),
+         ), # fin vtd_txt
+         td_med_1  = BLOC(condition = 'Format == "Med"',
+           File    = SIMP(statut='o', typ=('Fichier','Med Files(*.med);All Files (*)'),),
+         ),
+        td_med_2   = BLOC(condition = 'Format == "Med"',
+           FieldName = SIMP(statut='o', typ='TXM',),
+        ),
+       ),
+       blocFunct = BLOC(condition = "InputMode == 'analytical function'",
+        Function = SIMP(statut='o', typ='TXM',),
+       ),
+     #b_vserc = BLOC(condition = "InputMode == 'call to a service'",
+     #   Service = SIMP(statut='o', typ='TXM',),
+     #),
+    )
+
+
+#------------------------------
+def prepareTermeSource(condition):
+#------------------------------
+   return BLOC (condition=condition, 
+      OriginOfSourceTerm = SIMP(statut='o', typ='TXM',into=['Interaction', 'Chemical Reaction', 'Other Scalar']),
+      blocOriginOfSourceTermInteraction = BLOC(condition = 'OriginOfSourceTerm == "Interaction"',
+        SourceTermInteraction = SIMP(typ=interaction,statut='o'),
+        Consigne = SIMP(statut="o", homo="information", typ="TXM", defaut='Create and choose suitable interaction'),
+      ),
+      blocOriginOfSourceTermOtherScalar = BLOC(condition = 'OriginOfSourceTerm == "Other Scalar"',
+        ApplyOnScalar =  SIMP (statut ='o', typ=scalar,  ), #PNPN A FAIRE : fenetreIhm='menuDeroulant'
+      ),
+   )
+
+#------------------------------
+def prepareTermeSourceDynVar(condition):
+#------------------------------
+   return BLOC (condition=condition, 
+      OriginOfSourceTerm = SIMP(statut='o', typ='TXM',into=['Interaction', 'Other Scalar']),
+   )
+
+#------------------------------------------------------
+def prepareFactTurbulence(statut, ajout=None , position=None, positionChoice=None):
+#------------------------------------------------------
+   listInto  = ['Fully resolved (DNS)', 'Spatial filtering (LES)', 'One-point moment', 'One-point PDF']
+   if ajout != None : listInto.append(ajout)
+   return FACT(statut=statut, 
+       TurbulenceModellingType = SIMP(typ='TXM', statut='o', into =listInto, position=position ),
+
+#      --------------- One-point moment ------------------ 
+       blocOnePoint   = BLOC(condition= "TurbulenceModellingType == 'One-point moment'",
+          RANSModel   = SIMP(statut="o", typ="TXM", position='global',
+                             into=['Turbulent-Viscosity Model (TVM)', 'Reynolds Stress Model (RSM)']),
+          blocTVM     = BLOC(condition= "RANSModel == 'Turbulent-Viscosity Model (TVM)'",
+            TVMChoice = SIMP(typ='TXM', statut='o', into=['K-Epsilon', 'K-Omega'] , position=positionChoice), ##PN PN : parametre vs reCalculeEtape
+          ), # fin blocTVM
+          blocRSM      = BLOC(condition = "RANSModel == 'Reynolds Stress Model (RSM)'",
+            RSMChoice  = SIMP(typ='TXM', statut='o', into=['Rotta', 'LRR-IP','LRR-QI','SSG'], position=positionChoice),
+          ), # fin blocRSM
+       ), # fin bloc_one_point
+
+#      --------------- Spatial filtering (LES) ------------------ 
+       blocOneSpatial       = BLOC(condition = "TurbulenceModellingType == 'Spatial filtering (LES)'",
+          ChoiceOfDescription  = SIMP(typ='TXM', statut='o', into=['One-point filtered variables', 'Filtered Density Function (FDF)']),
+          blocOnePoint         = BLOC(condition = "ChoiceOfDescription == 'One-point filtered variables'", 
+            SubgridScaleModel = SIMP(typ='TXM', statut='o', into=['No SGS', 'Smagorinsky','Dynamical model', 'SGS Transport Equations']),
+          ),# fin bloc_OnePoint
+          blocFDF     = BLOC(condition = "ChoiceOfDescription == 'Filtered Density Function (FDF)'", 
+            SubgridScaleModel = SIMP(typ='TXM', statut='o', into=['SLM model for SGS', 'Viscous SLM model for SGS']),
+          ),# fin bloc_FDF
+       ), # fin bloc_one_spatial
+
+#      --------------- One-point PDF ------------------ 
+       blocOnePointPdf       = BLOC(condition = "TurbulenceModellingType == 'One-point PDF'",
+          ChoiceOfDescription   = SIMP(typ='TXM', statut='o', into=['Velocity PDF', 'Velocity frequency PDF']),
+          blocVPdf  = BLOC(condition = "ChoiceOfDescription == 'Velocity PDF'",
+             StochasticModel = SIMP(typ='TXM', statut='o', into=['SLM','GLM'], defaut='SLM'),
+          ), # fin blocVPdf
+          blocVFPdf  = BLOC(condition = "ChoiceOfDescription == 'Velocity frequency PDF'",
+             StochasticModel = SIMP(typ='TXM', statut='o', into=['Log-normal model','Gamma model','User-defined form'], defaut='SLM'),
+          ), # fin blocVFPdf
+       ), # fin bloc_one_point_pdf
+
+#      --------------- Fully resolved (DNS) ------------------ 
+       # blocNoModel          = BLOC(condition = "TurbulenceModellingType == 'Fully resolved (DNS)'",
+       #    ChoiceOfApproach  = SIMP(statut='o', typ='TXM', into=['Field-based (DNS)', 'N-Particle_Method']),
+       #    blocField         = BLOC(condition = "ChoiceOfApproach == 'Field-based (DNS)'", 
+       #      NumericalMethod = SIMP(statut='o', typ='TXM', into=['FV', 'Spectral Method'], 
+       #                        intoXML=['FV', 'Spectral Method','SPH', 'Vortex Method']),
+       #    ),# fin bloc_Field
+       #    blocNParticle     = BLOC(condition = "ChoiceOfApproach == 'N-Particle_Method'", 
+       #      NumericalMethod = SIMP(statut='o', typ='TXM', into=['SPH', 'Vortex Method'],
+       #                        intoXML=['FV', 'Spectral Method','SPH', 'Vortex Method']),
+       #    ),# fin bloc_N_particle
+       # ), # fin bloc_no_model
+   ) # fin du return de la fonction factTurbulence
+
+
+
+#------------------------------------------------------
+def prepareFactTurbulenceScalaire(statut, ajout=None , position=None):
+#------------------------------------------------------
+   listInto  = ['Fully resolved (DNS)', 'Spatial filtering (LES)', 'One-point moment', 'One-point PDF']
+   if ajout != None : listInto.append(ajout)
+   return FACT(statut=statut, 
+       TurbulenceModellingType = SIMP(typ='TXM', statut='o', into =listInto, position=position ),
+
+#      --------------- One-point moment ------------------ 
+       blocOnePoint   = BLOC(condition= "TurbulenceModellingType == 'One-point moment'",
+          RANSModel   = SIMP(statut="o", typ="TXM", 
+                            into=['Algebraic flux models','Turbulent diffusivity models', 'Scalar-flux transport equations']),
+          # blocAlgebraic     = BLOC(condition= "RANSModel == 'Algebraic flux models'",
+          # blocConsigne = BLOC(condition= "RANSModel == 'Algebraic flux models'",
+          #     Consigne = SIMP(statut="o", homo="information", typ="TXM", defaut='Not implemented yet'),
+          # ), # fin blocAlgebraic
+          blocTDM      = BLOC(condition = "RANSModel == 'Turbulent diffusivity models'",
+            TDMChoice  = SIMP(typ='TXM', statut='o', into=['SGDH', 'GGDH',]),
+          ), # fin blocTDM
+          blocSFTE      = BLOC(condition = "RANSModel == 'Scalar-flux transport equations'",
+            SFTEChoice  = SIMP(typ='TXM', statut='o', into=['Pressure-scrambling model', 'EB-DFM',]),
+          ), # fin blocSFTE
+       ), # fin bloc_one_point
+
+#      --------------- Spatial filtering (LES) ------------------ 
+       blocOneSpatial       = BLOC(condition = "TurbulenceModellingType == 'Spatial filtering (LES)'",
+          ChoiceOfDescription  = SIMP(typ='TXM', statut='o', into=['One-point filtered variables', 'Filtered Density Function (FDF)']),
+          blocOnePoint         = BLOC(condition = "ChoiceOfDescription == 'One-point filtered variables'", 
+            SubgridScaleModel = SIMP(typ='TXM', statut='o', into=['No SGS model', 'SGS diffusivity', 'Transport eqs. for SGS scalar fluxes']),
+          ),# fin bloc_OnePoint
+          blocFDF     = BLOC(condition = "ChoiceOfDescription == 'Filtered Density Function (FDF)'", 
+            SubgridScaleModel = SIMP(typ='TXM', statut='o', into=['Composition FDF', 'Scalar-velocity FDF', 'Micro-mixing model']),
+          ),# fin bloc_FDF
+       ), # fin bloc_one_spatial
+
+#      --------------- One-point PDF ------------------ 
+       blocOnePointPdf       = BLOC(condition = "TurbulenceModellingType == 'One-point PDF'",
+          ChoiceOfDescription   = SIMP(typ='TXM', statut='o', into=['Composition PDF','Velocity PDF', 'Micro-mixing models']),
+          # blocCPdf  = BLOC(condition = "(ChoiceOfDescription == 'Composition PDF') or (ChoiceOfDescription == 'Velocity PDF')",
+          # blocConsigne  = BLOC(condition = "(ChoiceOfDescription == 'Composition PDF') or (ChoiceOfDescription == 'Velocity PDF')",
+          #    Consigne = SIMP(statut="o", homo="information", typ="TXM", defaut='Not implemented yet.'),
+          # ), # fin blocCPdf
+          # blocVPdf  = BLOC(condition = "ChoiceOfDescription == 'Velocity PDF'",
+          # ), # fin blocVPdf
+          blocMMMPdf  = BLOC(condition = "ChoiceOfDescription == 'Micro-mixing models'",
+             ChoiceOfModel = SIMP(typ='TXM', statut='o', into=['IEM/CIEM','Curl model','Mapping','EMST'],),
+          ), # fin blocMMMdf
+       ), # fin bloc_one_point_pdf
+
+#      --------------- Fully resolved (DNS) ------------------ 
+       # blocNoModel          = BLOC(condition = "TurbulenceModellingType == 'Fully resolved (DNS)'",
+       #    ChoiceOfApproach  = SIMP(statut='o', typ='TXM', into=['Field-based (DNS)', 'N-Particle_Method']),
+       #    blocField         = BLOC(condition = "ChoiceOfApproach == 'Field-based (DNS)'", 
+       #      NumericalMethod = SIMP(statut='o', typ='TXM', into=['FV', 'Spectral Method'], 
+       #                        intoXML=['FV', 'Spectral Method','SPH', 'Vortex Method']),
+       #    ),# fin bloc_Field
+       #    blocNParticle     = BLOC(condition = "ChoiceOfApproach == 'N-Particle_Method'", 
+       #      NumericalMethod = SIMP(statut='o', typ='TXM', into=['SPH', 'Vortex Method'],
+       #                        intoXML=['FV', 'Spectral Method','SPH', 'Vortex Method']),
+       #    ),# fin bloc_N_particle
+       # ), # fin bloc_no_model
+   ) # fin du return de la fonction factTurbulence
+
+
+#--------------------------
+def Particle(cardinalite) :
+#--------------------------
+   return FACT(statut='o', max=cardinalite, 
+     ParticleNature = SIMP(statut='o', typ='TXM', into=['Atoms', 'Molecules', 'Dissipative', 'Fluid Particle', 'Discrete Particle']),
+     blocAtom    = BLOC(condition='ParticleNature == "Atoms"', 
+       AtomsName = SIMP(statut='o', typ=(userAtom,'createObject'),),
+       Atom  = FACT(statut ='o', max= '**',
+          ChemicalSpecie  = SIMP(statut='o', typ='TXM'),
+          Number          = SIMP(statut='o', typ = 'I'),
+          ElectricCharge  = SIMP(statut='o', typ='R'),
+          MagneticMoment  = SIMP(statut='o', typ='R'),
+          Size            = SIMP(statut='f', typ='R'),  # relevant ?
+       ),# Atom
+     ), # fin b_Atom
+#      --------------- Molecules ------------------ 
+     blocMolecule     = BLOC(condition='ParticleNature == "Molecules"',
+       MoleculeName   = SIMP(statut='o', typ=(userMolecule,'createObject'),),
+       ChemicalSpecie = FACT(max='**', statut='o',
+          ChemicalSpecieName = SIMP(statut='o', typ=userAtom),
+          Proportion         = SIMP(statut='o', typ='R', val_max =1),
+       ),
+       ElectricCharge  = SIMP(statut='o', typ='R'),
+       MagneticMoment  = SIMP(statut='o', typ='R'),
+       Shape = SIMP(statut='f', typ='TXM', into=['Linear', 'Trigonal Planar', 'Angular', 'Tetrahedral', 'Octahedral', 'Trigonal pyramid', 'Other']),
+     ), #fin b_Molecule
+
+#      --------------- Dissipative ------------------ 
+     blocDissipative   = BLOC(condition='ParticleNature == "Dissipative"',
+       DPDName         = SIMP(statut='o', typ=(userDPD,'createObject'),),
+       BondedParticles = SIMP(statut="o", typ=bool, defaut=False),
+     ), # b_Dissipative
+
+#      --------------- Discrete Particle ------------------ 
+     blocDiscrete     = BLOC(condition='ParticleNature == "Discrete Particle"',
+       DiscreteParticleName   = SIMP(statut='o', typ=(userDiscrete,'createObject'),),
+       TypeOfDiscreteParticle = SIMP(statut='o', typ='TXM', into=['Solid', 'Droplets', 'Bubbles','Bio Organism'],),
+       blocTypeDPSolid  = BLOC(condition ='TypeOfDiscreteParticle == "Solid"',
+         TypeOfSolid    = SIMP(statut='o', typ='TXM', into=['Primary Particle', 'Assemblage / Aggregate'], position = 'global'),
+            b_SolidPrimary  =  BLOC(condition='TypeOfSolid == "Primary Particle"',
+            ),
+            b_SolidAggregate = BLOC(condition='TypeOfSolid == "Assemblage / Aggregate"',
+            ),
+       ),
+#      --------------- Bio Organism  ------------------ 
+       blocTypeBioSolid    = BLOC(condition='TypeOfDiscreteParticle == "Bio Organism"',
+           TypeOfOrganism  = SIMP(statut='o', typ='TXM', into=['Unicellular', 'Multicellular']),
+           blocUnicellular = BLOC(condition ='TypeOfOrganism=="Unicellular"',
+              Unicellular  = SIMP(statut='o', typ='TXM', into=["Bactaria"], defaut='Bactaria')
+             ),
+            b_Multicellular = BLOC(condition ='TypeOfOrganism=="Multicellular"',
+              Multicellular = SIMP(statut='o', typ='TXM', into=["Animal","Fongus","Plant"])
+             ),
+       ), # b_TypeBio_Solid
+
+#      ---------------  Particule Properties ------------------ 
+       Properties = FACT(statut ='o',
+          Geometry   = SIMP(statut='o', typ='TXM', into=['Sphere', 'Ellopsoids', 'Other Shape']),
+          b_geom_Sphere = BLOC(condition = 'Geometry == "Sphere"',
+             ParticleRadius = SIMP(statut='o', typ ='R', val_min = 0),
+          ),
+          Weight = FACT(statut = 'o',
+             Consigne = SIMP(statut="o", homo="information", typ="TXM", defaut='Choose between Mass or Density'),          
+             Mass = SIMP(statut='f', typ ='R', val_min = 0),
+             Density = SIMP(statut='f', typ ='R', val_min = 0),
+          ),
+          Mechanical = SIMP(statut='o', typ='TXM', into=['Rigid', 'Flexible', 'Deformable']),
+          b_SolidAggregate = BLOC(condition='TypeOfSolid == "Assemblage / Aggregate"',
+            Morphological = FACT(statut = 'o',
+              Consigne = SIMP(statut="o", homo="information", typ="TXM", defaut='Choose optional properties'),
+              FractalDimension        = SIMP(statut='f', typ='R'),
+              NumberOfPrimaryParticle = SIMP(statut ='f',typ='I'),
+              EquivalentSize          = SIMP(statut='f', typ='R'),
+              Porosity                = SIMP(statut='f', typ='R'),
+           ), # Morphological
+          ), # b_SolidAggregate
+          ElectroMagnetic = FACT(statut = 'f',
+              ElectricCharge     = SIMP(statut='o', typ='R'),
+              MagneticMoment     = SIMP(statut='o', typ='R'),
+          ),
+          b_SolidAggregateBonded = BLOC(condition='TypeOfSolid == "Assemblage / Aggregate"',
+              BondedParticles = FACT(
+                ListOfBondedParticles = SIMP(statut='o', max='**',  typ = userParticle),
+              ),
+          ),
+       ), # Properties
+     ), # b_Discrete 
+
+############################
+             
+            ListOfBondedParticles = FACT(statut='f', 
+            # --------------------------------------#
+               BondedParticles = FACT(statut='o', max = "**",
+                  NameOfBonded_Particles   = SIMP(statut='o', typ='TXM'),
+                  SpeciesinParticle        = SIMP(statut='o', min=2, typ='TXM' , max = "**"),
+                                 ), # BondedParticles
+            ), # ListOfBondedParticles
+
+            ListOfInteractions = FACT(statut='o', max = "**",
+            # ------------------------------------------------#
+
+               BondedInteractions = FACT(statut='o', max = "**",
+                TypeOfBondedInteraction = SIMP(statut='o', typ='TXM', into=['NoOne', 'Covalent Bond Length', 'FENE', 'Covalent Bond Angle', 'Dihedral Angles', 'Improper Dihedral', 'Frozen Motion' ], defaut='NoOne'),
+
+                #La saisie de l'ensemble des liaisons d'un meme type peut se faire ds le meme bloc (soit ds un fichier, soit manuelle)
+                #Une seule valeur de distante? est a saisir pour l'ensemble
+                # bloc_covalent_1 = BLOC(condition = 'TypeOfBondedInteraction in ("Covalent Bond Length","FENE")',
+                # ), # fin bloc_covalent_1
+
+#      --------------- Covalent Bond Length ------------------ 
+                blocCovalentLength = BLOC(condition = 'TypeOfBondedInteraction == "Covalent Bond Length"',
+                   InteractionLengthParameters = FACT(statut='o', max="**",
+                       ApplyToBondedParticles  = SIMP(statut='o', max='**', typ='TXM'),
+                       SpringStifness          = SIMP(statut='o', typ='R', val_min=0),
+                       MeanBondLength          = SIMP(statut='o', typ='R', val_min=0),
+                     ), # fin Interation_Length_Parameters 
+                ), # fin BondLengthParameters
+
+#      --------------- Covalent Bond Angle ------------------ 
+                blocCovalentAngle = BLOC(condition = 'TypeOfBondedInteraction == "Covalent Bond Angle"',
+                   InteractionAnglesParameters = FACT(statut='o', max="**",
+                       ApplyToBondedParticles  = SIMP(statut='o', max='**', typ='TXM'),
+                       SpringStifness          = SIMP(statut='o', typ='R', val_min=0),
+                       MeanBondAngle           = SIMP(statut='o', typ='R', val_min=0),
+                   ), # fin Interation_Angles_Parameters 
+                ), # fin bloccovalentlengthand_angle
+
+                #bloc_covalent_length_and_angle = BLOC(condition = 'TypeOfBondedInteraction == "Covalent Bond Length" or TypeOfBondedInteraction == "Covalent Bond Angle"',
+                #   Bond_Parameters = FACT(statut='o', max="**",
+                #        Apply_To_Bonded_Particles  = SIMP(statut='o', max='**', typ='TXM'),
+                #        Spring_Stifness   = SIMP(statut='o', typ='R', val_min=0),
+                #        bloc_covalent_length = BLOC(condition = 'TypeOfBondedInteraction == "Covalent Bond Length"',
+                #            Mean_Bond_Length  = SIMP(statut='o', typ='R', val_min=0),
+                #         ), # fin Bond_Length_Parameters
+                #        bloc_covalent_angle = BLOC(condition = 'TypeOfBondedInteraction == "Covalent Bond Angle"',
+                #            Mean_Bond_Angle  = SIMP(statut='o', typ='R', val_min=0),
+                #         ), # fin Bond_Length_Parameters
+                #     ), # fin Bond_Length_Parameters 
+                #), # fin bloc_covalent_length_and_angle
+
+#      --------------- Covalent Bond Angle ------------------ 
+                blocFENE = BLOC(condition = 'TypeOfBondedInteraction == "FENE"',
+                   AppliesToAllParticles = SIMP(statut='o', typ=bool, defaut=True), 
+                   blocNotOnAll = BLOC(condition = 'AppliesToAllParticles == False',
+                      FENEParameters = FACT(statut='o', max="**",
+                          SpeciesPair      = SIMP(statut='o', max=2, typ='TXM'),
+                          SpringConstant_H = SIMP(statut='o', typ='R', val_min=0),
+                          LMax             = SIMP(statut='o', typ='R', val_min=0),
+                                       ), # fin FENE_Parameters
+                       ), # fin bloc_not_on_all
+                   blocOnAll = BLOC(condition = 'AppliesToAllParticles == True',
+                       Spring_Constant_H = SIMP(statut='o', typ='R', val_min=0),
+                       LMax              = SIMP(statut='o', typ='R', val_min=0),
+                    ), # fin bloc_on_all
+                ), # fin blocFENE
+
+                blocLeReste = BLOC(condition = 'TypeOfBondedInteraction in ("Dihedral Angles", "Improper Dihedral", "Frozen Motion")',
+                      ParticleName = SIMP(statut="f", typ='TXM'),
+                      Consigne = SIMP(statut="o", homo="information", typ="TXM", defaut='Not Implemented Yet'),
+                ),
+
+               ), #  fin Bonded_Interaction
+
+                                               # ------------------------------- #
+
+               UnbondedInteractions     = FACT(statut='o', max= "**",
+
+                TypeOfUnbondedInteraction = SIMP(statut='o', typ='TXM', into=['No', 'electro_magnetic', 'Repulsion_and_VdW', 'Soft_Potentiel', ], defaut='No', position='global',fenetreIhm='menuDeroulant'),
+
+                blocElec = BLOC(condition = 'TypeOfUnbondedInteraction == "electro_magnetic"',
+                     Permittivity  = SIMP(statut='o', typ='R', position='global_jdc'),
+                     Magnetic      = SIMP(statut='o', typ=bool, defaut=False,),
+                     blocMagnetic = BLOC(condition = 'Magnetic == True',
+                         Permability = SIMP(statut='o', typ='R'),
+                     ), # bloc_magnetic
+                 ),# fin bloc_elec
+
+                blocVdW = BLOC(condition = 'TypeOfUnbondedInteraction == "Repulsion_and_VdW"',
+                  SpeciesPairParameters = FACT(statut='o', max="**",
+                    TypeRepulsionAndVdW = SIMP(statut='o', typ='TXM', into = [ 'Lennard_Jones', 'Hard_sphere_model']),
+                    SpeciesPair         = SIMP(statut='o', max=2, typ='TXM'),
+                    VdWRadius           = SIMP(statut='o', typ='R', val_min=0),
+                    blocLennard = BLOC(condition = "TypeRepulsionAndVdW == 'Lennard_Jones'",
+                        DepthOfThePotentialWell = SIMP(statut='o', typ='R', val_min=0),
+                    ), # fin b_Lennard
+                  ), # fin Species_Pair_Parameters 
+                 ), # bloc_VdW
+
+                 blocParamSoftPotentiel = BLOC(condition = "TypeOfUnbondedInteraction == 'Soft_Potentiel'",
+                     GrootWarrenRepulsion = SIMP(statut='o', typ='R', defaut=25.0, val_min=0),
+                     GrootWarrenCutoff    = SIMP(statut='o', typ='R', defaut=1.0, val_min=0),
+                     DragCoefficient      = SIMP(statut='o', typ='R'),                       # les 2 valent 0 pour MD
+                     DragForceCutoff      = SIMP(statut='o', typ='R', val_min=0),
+                 ), # b_Param_Soft_Potentiel
+                   
+             ), # fin UnBonded_Interactions
+
+                                               # ------------------------------- #
+
+             ExternalFieldInteraction = FACT(statut='o', max= "**",
+                TypeOfInteractionWithAnExternalField = SIMP(statut='o', typ='TXM', into=['NoOne','gravitational field','electric field','magnetic field', 'Hydrodynamic_Field'], fenetreIhm='menuDeroulant', defaut ='NoOne'),
+                blocGravite = BLOC(condition = 'TypeOfInteractionWithAnExternalField=="gravitational field"',
+                   G = SIMP(statut='o', typ='R', defaut=9.81),
+                ),
+                blocElect = BLOC(condition = 'TypeOfInteractionWithAnExternalField=="electric field"',
+                   ElectricField = prepareChamp('E', ('E',), 1),
+                ),
+                blocMagnetic = BLOC(condition = 'TypeOfInteractionWithAnExternalField=="magnetic field"',
+                   MagneticField = prepareChamp('B', ('B',), 1),
+                ),
+                blocHydrodynamic = BLOC(condition = 'TypeOfInteractionWithAnExternalField=="hydrodynamic field"',
+                   HydrodynamicField = prepareChamp('U', ('U',), 1),
+                ),
+                blocExternalFieldInteraction = BLOC(condition = 'TypeOfInteractionWithAnExternalField != "No"',
+                   FieldAppliesOnAllSpecies = SIMP(statut='o', typ=bool, defaut=True),
+                   blocPorteEspece = BLOC(condition = 'FieldAppliesOnAllSpecies == False ',
+                     SpeciesList = SIMP(statut='o', typ='TXM', max= '**', homo='SansOrdreNiDoublon'),     # faire un typ = "espece"
+                   ),
+                ), # fin b_External_Field_Interaction
+                ), #  fin Interaction_External_Field
+
+          ), # fin List_Of_Interactions
+
+############################
+) # fin Particle
+
+#--------------------
+def prepareBlocCPS():
+#--------------------
+   return BLOC(condition = 'SystemType == "Classical particle system"',
+     Particle = Particle('**'),
+   )
+
+#---------------------------
+def prepareBlocFluideMacro():
+#---------------------------
+   return BLOC(condition = 'SystemType == "Continuum system"',
+     ComplexFluid = SIMP(typ=bool,  statut='o', defaut = False, position='global'),
+     FlowNature   = SIMP(typ='TXM', statut='o', into =['Laminar', 'Turbulent'], position='global'),
+
+#    --------------------------- Density -------------
+     DensityInitialisation = FACT(statut ='o',
+        DensityValueType   = SIMP(typ='TXM', statut ='o', into  = ['Value', 'Field'], defaut ='Value'),
+        blocDensityValue   = BLOC(condition = 'DensityValueType == "Value"',
+            Density = SIMP(typ='R', statut ='o'),
+        ),
+        blocDensField= creeBlocPourLesFichiers('DensityValueType == "Field"', 'Density', ListeFormats=listeFormatGenerique, FieldName='DensityFieldName'),
+     ),# DensityInitialisation
+
+#    --------------------------- Viscosity -------------
+     ViscosityInitialisation = FACT(statut ='o',
+        ViscosityValueType   = SIMP(typ='TXM', statut ='o', into  = ['Value', 'Field'], defaut ='Value'),
+        blocViscosityValue   = BLOC(condition = 'ViscosityValueType == "Value"',
+            Viscosity        = SIMP(typ='R', statut ='o'),
+        ),
+        blocViscosityField = creeBlocPourLesFichiers('ViscosityValueType == "Field"', 'Viscosity', ListeFormats=listeFormatGenerique, FieldName='ViscosityFieldName'),
+     ), #fin ViscosityityInitialisation
+
+#    --------------------------- Turbulent  -------------
+     blocFlowNatureTurbulent = BLOC(condition = ' FlowNature == "Turbulent"',
+        TurbulenceForFlowDynamics = prepareFactTurbulence('o',position='global',positionChoice='reCalculeEtape'), 
+     ), #fin bloc_FlowNature_Turbulent
+
+     DynamicalVariables = FACT(statut ='o',
+         OriginOfDynamicalVariables = SIMP(statut='o', into =['Given', 'Interaction', 'to be simulated'], typ ='TXM', position='global'),
+         BlocGivenOrInteraction = BLOC(condition = 'OriginOfDynamicalVariables in ["Given", "Interaction",]',
+           Steady = SIMP(typ=bool, statut ='o', defaut = True, position = 'global'),
+           # BlocNotSteady = BLOC(condition = 'Steady == False',
+           BlocConsigne = BLOC(condition = 'Steady == False',
+             Consigne = SIMP(statut="o", homo="information", typ="TXM", defaut='Not implemented yet. Will ask for a range of calculation steps.'),
+           ), #BlocNotSteady                                       
+          BlocSteady = BLOC(condition = 'Steady == True',
+           BlocGiven = BLOC(condition = 'OriginOfDynamicalVariables == "Given"',
+             InSameFile   = SIMP(typ=bool, statut ='o', defaut = True, position = 'reCalculeEtape'),
+             BlocSameFile = creeBlocPourLesFichiers('InSameFile == True', 'DynamicalVariables', ('Med', 'cgns' ), None),
+           ), #BlocGiven
+          ),  #BlocSteady
+        ), #BlocGivenOrInteraction
+       PressureDefinition = FACT(statut ='o',
+           Pressure  = SIMP(typ=(dynamicVariable,'createObject'), statut='o', defaut ='Pressure', homo='constant'),
+           BlocSteady = BLOC(condition = 'Steady == True',
+             BlocFluidInSame = creeBlocPourLesFichiers('InSameFile == False', 'Pressure', ('Med', 'cgns' ), None),
+             BlocGivenPressure    = BLOC(condition = 'OriginOfDynamicalVariables == "Given"',
+                PressureFieldName = SIMP(typ='TXM',statut='o'),
+             ),
+             BlocInteractionPressure    = BLOC(condition = 'OriginOfDynamicalVariables == "Interaction"',
+                InteractionName = SIMP(typ=interaction,statut='o'),
+                Consigne = SIMP(statut="o", homo="information", typ="TXM", defaut='Create and choose suitable interaction'),
+             ),
+           ),
+           BlocSimulatedPressure    = BLOC(condition = 'OriginOfDynamicalVariables == "to be simulated"',
+             SourceTerm     = SIMP(typ=bool, statut='o', defaut=False),
+             blocSourceTerm = prepareTermeSourceDynVar('SourceTerm==True'),
+           ),
+       ),
+       VelocityDefinition = FACT(statut ='o',
+          blocFlowNatureTurbulent        = BLOC(condition = 'FlowNature == "Turbulent"',
+             #sousBlocFlowNatureTurbulent = BLOC(condition = 'TurbulenceModellingType != "Fully resolved (DNS)"',
+               AverageVelocity           = SIMP(typ=(dynamicVariable,'createObject'), statut='o', defaut ='Average_Velocity', homo='constant'),
+               BlocSteadyGivenVelocity1        = BLOC(condition = 'OriginOfDynamicalVariables == "Given" and Steady == True ',
+                   AverageVelocityValue  = SIMP(typ='R', statut='o' ),
+               ),
+             #),
+          ),
+          #blocFlowNatureLaminar     = BLOC(condition = ' FlowNature == "Laminar" or TurbulenceModellingType == "Fully resolved (DNS)"',
+          blocFlowNatureLaminar     = BLOC(condition = 'FlowNature == "Laminar"',
+              FluidVelocity         = SIMP(typ=(dynamicVariable,'createObject'), statut='o', defaut ='Fluid_Velocity', homo='constant'),
+              BlocSteady = BLOC(condition = 'Steady == True',
+                BlocVelocityInSame    = creeBlocPourLesFichiers('InSameFile == False', 'Velocity', ('Med', 'cgns' ), None),
+                BlocSteadyGivenVelocity2    = BLOC(condition = 'OriginOfDynamicalVariables == "Given"',
+                    VelocityFieldName = SIMP(typ='TXM',statut='o'),
+                ),
+              ),
+          ),
+          BlocSimulatedVelocity    = BLOC(condition = 'OriginOfDynamicalVariables == "to be simulated"',
+            SourceTerm     = SIMP(typ=bool, statut='o', defaut=False),
+            blocSourceTerm = prepareTermeSourceDynVar('SourceTerm==True'),
+          ),
+          BlocSteady = BLOC(condition = 'Steady == True',
+            BlocInteractionVelocity    = BLOC(condition = 'OriginOfDynamicalVariables == "Interaction"',
+               InteractionName = SIMP(typ=interaction,statut='o'),
+               Consigne = SIMP(statut="o", homo="information", typ="TXM", defaut='Create and choose suitable interaction'),
+            ),
+          ),
+       ),
+       BFlowNatureTurbulent = BLOC(condition ='FlowNature == "Turbulent"',
+       # K-epislon ou k-omega
+            blocTurbulenceTWMChoice1 = BLOC(condition = 'TVMChoice == "K-Epsilon" or TVMChoice == "K-Omega"',
+              KDefinition   = FACT(statut ='o',
+                Name        = SIMP(typ=(scalar,'createObject'), statut='o', defaut ='K', homo='constant'),
+                BlocSteady = BLOC(condition = 'Steady == True',
+                  BlocKInSame = creeBlocPourLesFichiers('InSameFile == False', 'K', ('Med', 'cgns' ), None),
+                  BlocKGiven  = BLOC(condition = 'OriginOfDynamicalVariables == "Given"',
+                     KFieldName = SIMP(typ='TXM',statut='o', defaut='K'),
+                  ),
+                  BlocKInteraction    = BLOC(condition = 'OriginOfDynamicalVariables == "Interaction"',
+                  InteractionName = SIMP(typ=interaction,statut='o'),
+                  Consigne = SIMP(statut="o", homo="information", typ="TXM", defaut='Create and choose suitable interaction'),
+                  ),
+                ),
+                BlocSimulatedKDefinition = BLOC(condition = 'OriginOfDynamicalVariables == "to be simulated"',
+                  SourceTerm  = SIMP(typ=bool, statut='o', defaut=False),
+                  blocSourceTerm = prepareTermeSourceDynVar('SourceTerm==True'),
+                ),
+              ), # KDefinition
+            ),# fin blocTurbulenceTWMChoice1
+
+            # REM : L'existence des mc TVMChoice et RSMChoice est exclusive, du coup une évaluation de condition
+            # qui contient les deux renvoie forcément une exception, le bloc n'est alors pas evalué
+            # sauf si le mc de la première condition existe (ordre évaluation du or)
+            # blocTurbulenceTWMChoice2 = BLOC(condition = 'TVMChoice == "K-Epsilon" or RSMChoice != None',
+            # blocTurbulenceTWMChoice2 = BLOC(condition = '(RSMChoice != None) or (TVMChoice == "K-Epsilon")',
+            # blocTurbulenceTWMChoice2 = BLOC(condition = 'TVMChoice == "K-Epsilon"',
+            blocTurbulenceTWMChoice2 = BLOC(condition = 'RANSModel == "Reynolds Stress Model (RSM)" or TVMChoice == "K-Epsilon"',
+              EpsilonDefinition   = FACT(statut ='o',
+                Name              = SIMP(typ=(scalar,'createObject'), statut='o', defaut ='Epsilon', homo='constant'),
+                BlocSteady = BLOC(condition = 'Steady == True',
+                  BlocEpsilonInSame = creeBlocPourLesFichiers('InSameFile == False', 'Epsilon', ('Med', 'cgns' ), None),
+                  BlocEpsilonGiven  = BLOC(condition = 'OriginOfDynamicalVariables == "Given"',
+                     EpsilonFieldName = SIMP(typ='TXM',statut='o'),
+                  ),
+                  BlocEpsilonInteraction = BLOC(condition = 'OriginOfDynamicalVariables == "Interaction"',
+                  InteractionName = SIMP(typ=interaction,statut='o'),
+                  Consigne = SIMP(statut="o", homo="information", typ="TXM", defaut='Create and choose suitable interaction'),
+                  ),                                  
+                ),
+                BlocSimulatedEpsilonDefinition = BLOC(condition = 'OriginOfDynamicalVariables == "to be simulated"',
+                  SourceTerm     = SIMP(typ=bool, statut='o', defaut=False),
+                  blocSourceTerm = prepareTermeSourceDynVar('SourceTerm==True'),
+                ),
+              ), #EpsilonDefinition
+            ), # bloc_Turbulence_TWMChoice2
+
+            blocTurbulenceTWMChoice3 = BLOC(condition = 'TVMChoice == "K-Omega"',
+             OmegaDefinition = FACT(statut ='o',
+                Name              = SIMP(typ=(scalar,'createObject'), statut='o', defaut ='Omega', homo='constant'),
+                BlocSteady = BLOC(condition = 'Steady == True',
+                  BlocOmegaInSame   = creeBlocPourLesFichiers('InSameFile == False', 'Omega', ('Med', 'cgns' ), None),
+                  BlocOmegaGiven    = BLOC(condition = 'OriginOfDynamicalVariables == "Given"',
+                     OmegaFieldName = SIMP(typ='TXM',statut='o'),
+                  ),
+                  BlocOmegaInteraction = BLOC(condition = 'OriginOfDynamicalVariables == "Interaction"',
+                  InteractionName = SIMP(typ=interaction,statut='o'),
+                  Consigne = SIMP(statut="o", homo="information", typ="TXM", defaut='Create and choose suitable interaction'),
+                  ),                                  
+                ),
+                BlocSimulatedOmegaDefinition = BLOC(condition = 'OriginOfDynamicalVariables == "to be simulated"',
+                  SourceTerm     = SIMP(typ=bool, statut='o', defaut=False),
+                  blocSourceTerm = prepareTermeSourceDynVar('SourceTerm==True'),
+                ),
+             ),
+            ), # blocTurbulenceTWMChoice3
+
+            # blocTurbulenceRSMChoice1 = BLOC(condition = "(RANSModel == 'Reynolds Stress Model (RSM)') and (RSMChoice !=None)",
+            blocTurbulenceRSMChoice1 = BLOC(condition = "RSMChoice !=None",
+             RijDefinition = FACT(statut ='o',
+                Name              = SIMP(typ=(scalar,'createObject'), statut='o', defaut ='Rij', homo='constant'),
+                BlocSteady = BLOC(condition = 'Steady == True',
+                  BlocRijInSame   = creeBlocPourLesFichiers('InSameFile == False', 'Rij', ('Med', 'cgns' ), None),
+                  BlocRijGiven    = BLOC(condition = 'OriginOfDynamicalVariables == "Given"',
+                  RijFieldName    = SIMP(typ='TXM',statut='o'),
+                  ),
+                  BlocRijInteraction = BLOC(condition = 'OriginOfDynamicalVariables == "Interaction"',
+                  InteractionName = SIMP(typ=interaction,statut='o'),
+                  Consigne = SIMP(statut="o", homo="information", typ="TXM", defaut='Create and choose suitable interaction'),
+                  ),                                  
+                ),
+                BlocSimulatedRijDefinition = BLOC(condition = 'OriginOfDynamicalVariables == "to be simulated"',
+                  SourceTerm     = SIMP(typ=bool, statut='o', defaut=False),
+                  blocSourceTerm = prepareTermeSourceDynVar('SourceTerm==True'),
+                ),
+             ),
+            ), # blocTurbulenceRSMChoice1
+                                   
+            # blocTurbulenceRSMChoice2 = BLOC(condition = 'RSMChoice != None',
+            #   EpsilonDefinition   = FACT(statut ='o',
+            #     Name              = SIMP(typ=(scalar,'createObject'), statut='o', defaut ='Epsilon', homo='constant'),
+            #     BlocSteady = BLOC(condition = 'Steady == True',
+            #       BlocEpsilonInSame = creeBlocPourLesFichiers('InSameFile == False', 'Epsilon', ('Med', 'cgns' ), None),
+            #       BlocEpsilonGiven  = BLOC(condition = 'OriginOfDynamicalVariables == "Given"',
+            #          EpsilonFieldName = SIMP(typ='TXM',statut='o'),
+            #       ),
+            #       BlocEpsilonInteraction = BLOC(condition = 'OriginOfDynamicalVariables == "Interaction"',
+            #       InteractionName = SIMP(typ=interaction,statut='o'),
+            #       Consigne = SIMP(statut="o", homo="information", typ="TXM", defaut='Create and choose suitable interaction'),
+            #       ),                                  
+            #     ),
+            #     BlocSimulatedEpsilonDefinition = BLOC(condition = 'OriginOfDynamicalVariables == "to be simulated"',
+            #       SourceTerm     = SIMP(typ=bool, statut='o', defaut=False),
+            #       blocSourceTerm = prepareTermeSourceDynVar('SourceTerm==True'),
+            #     ),
+            #   ), #EpsilonDefinition
+            # ), # bloc_Turbulence_RSMChoice2
+
+          ), #BFlowNatureTurbulent
+       ), # DynamicalVariables
+
+# ---------------------- Effets thermiques
+     Thermal = FACT(statut ='o',
+        ThermalEffects        = SIMP(typ='TXM', statut='o', into =['Non thermal', 'Thermal'] , defaut='Thermal', position='global' ),
+        blocNonThermalEffects = BLOC(condition = 'ThermalEffects == "Non thermal"',
+            ReferenceTemperature = SIMP(typ='R', statut='o', val_min=-273.15 ),
+        ), # fin bloc_NonThermal
+        bloc_ThermalEffects_    = BLOC(condition = 'ThermalEffects == "Thermal"',
+          ConductivityValueType = SIMP(typ='TXM', statut ='o', into  = ['Value', 'Field'], defaut ='Value'),
+          blocCondValue         = BLOC (condition = 'ConductivityValueType == "Value"',
+              Conductivity = SIMP(typ='R', statut ='o'),
+           ),
+          blocCondField = creeBlocPourLesFichiers('ConductivityValueType == "Field"', 'Conductivity', ListeFormats=listeFormatGenerique, FieldName='conductivityFieldName'),
+          #ActiveOnFlowEffect = ActiveOnFlowEffect(),
+        ),
+    ),# fin Fact Thermal
+
+# ---------------------- Scalaires
+
+    blocScalarFluidTurbulentOrLaminar = BLOC(condition = "(ComplexFluid == False and FlowNature == 'Turbulent') or (ComplexFluid == False and FlowNature == 'Laminar')",
+          Scalars = FACT(statut = 'o',
+              withScalars     = SIMP(statut='o', typ=bool, defaut=False), 
+              blocwithScalars = BLOC(condition = 'withScalars == True',
+              blocFlowNatureTurbulentForScalars = BLOC(condition = ' FlowNature == "Turbulent"',
+                   AsTurbulenceForFlowDynamics   = SIMP(statut='o', typ=bool, defaut=True),
+                   BlocAsTFFD = BLOC(condition  = "AsTurbulenceForFlowDynamics == False",
+                        ScalarsTurbulenceModelling = prepareFactTurbulenceScalaire('o',),
+                   ),
+              ),
+              blocThermalEffectsOn = BLOC(condition = ' ThermalEffects == "Thermal"',
+               TemperatureScalar   = FACT(statut ='o',
+                   #Name       = SIMP(typ=(scalar,'createObject'), statut='o', defaut ='Temperature', homo='constant', position='reCalculeEtape'),
+                   Name       = SIMP(typ=(scalar,'createObject'), statut='o', defaut ='Temperature', homo='constant'),
+                   SourceTerm = SIMP(typ=bool, statut='o', defaut=False),
+                   blocSourceTerm = prepareTermeSource('SourceTerm==True'),
+                   TemperatureInitialisation = FACT(statut ='o',
+                       OriginOfThermalFluxField = SIMP(statut='o', into =['Given', 'Interaction', 'to be simulated'], typ ='TXM'),
+                       BlocGiven = creeBlocPourLesFichiers('OriginOfThermalFluxField == "Given"', 'Temperature', ('Med', 'cgns' ), FieldName='FieldName'),
+                    ),# fin TemperatureInitialisation
+                ),# TemperatureScalar 
+              ), # fin bloc_ThermalEffects_On
+              Scalar = FACT(statut = 'o', max ='**',
+                Name = SIMP(typ=(scalar,'createObject'), statut='o',),
+                DiffusivityValueType = SIMP(typ='TXM', statut ='o', into  = ['Value', 'Field'], defaut ='Value'),
+                blocDiffValue   = BLOC(condition = 'DiffusivityValueType == "Value"',
+                    Diffusivity = SIMP(typ='R', statut ='o'),
+                ),
+                blocDiffField = creeBlocPourLesFichiers('DiffusivityValueType == "Field"', 'Diffusivity', ListeFormats=listeFormatGenerique, FieldName='DiffusivityFieldName'),
+                OriginOfScalar = SIMP(statut='o', into =['Given', 'Interaction', 'to be simulated'], typ ='TXM', defaut='to be simulated'),
+                blocSimulatedScalar = BLOC(condition = 'OriginOfScalar == "to be simulated"',
+                  SourceTerm = SIMP(typ=bool, statut='o', defaut=False),
+                  blocSourceTerm = prepareTermeSource('SourceTerm==True'),
+                  Initialisation = FACT(statut ='o',
+                    InitialisationOfScalar = SIMP(statut='o', into =['ValueInit', 'FileInit', 'InteractionInit'], typ ='TXM', defaut='ValueInit'),
+                    BlocFileInit = creeBlocPourLesFichiers('InitialisationOfScalar == "FileInit"', 'ScalarInit', ListeFormats = listeFormatGenerique, FieldName='ScalarInitField'),
+                    BlocInteractionInit    = BLOC(condition = 'InitialisationOfScalar == "InteractionInit"',
+                      InteractionName = SIMP(typ=interaction,statut='o'),
+                      Consigne = SIMP(statut="o", homo="information", typ="TXM", defaut='Create and choose suitable interaction'),
+                    ),
+                    BlocValueInit    = BLOC(condition = 'InitialisationOfScalar == "ValueInit"',
+                      ValueInit = SIMP (statut ='o', typ='R'),
+                   ),
+                  ),
+                ),
+                blocInteractionScalar    = BLOC(condition = 'OriginOfScalar == "Interaction"',
+                  InteractionName = SIMP(typ=interaction,statut='o'),
+                  Consigne = SIMP(statut="o", homo="information", typ="TXM", defaut='Create and choose suitable interaction'),
+                ),
+                blocGivenScalar = creeBlocPourLesFichiers('OriginOfScalar == "Given"', 'Scalar', ListeFormats = listeFormatGenerique, FieldName='ScalarField'),
+                EffectOnFlowDynamic = SIMP(typ='TXM', statut='o',  into=[ 'Passive', 'Active'], defaut='Passive',  ),
+                blocScalarActiveOnFlowDynamic = BLOC(condition = ' EffectOnFlowDynamic == "Active"',
+                  ActiveOnFlowEffect = ActiveOnFlowEffect(),
+                ),
+                blocScalarFluidTurbulentAndNonComplexe = BLOC (condition = "FlowNature == 'Turbulent'",
+                   ScalarFluxModel = prepareFactTurbulenceScalaire('f'),
+                ), # bloc_scalar_FluidTurbulentandNonComplexe
+               ),# Scalar 
+             ),# blocwWithScalars 
+          ),# Scalars 
+      ), # fin FluidTurbulentandNonComplexe
+     # il faut une validation de coherence entre l existence de tous les turbulencesModelling
+   )# fin bloc_FluideMacro
+
+#----------------------------------------
+def ActiveOnFlowEffect(inTemperature=True):
+#----------------------------------------
+ return FACT(statut = 'o', max='**',
+            RelationType  = SIMP(statut = 'o', into =['Equation Of State', 'Force-Flux Relation'], typ ='TXM'),
+            bloc_EOS = BLOC(condition = 'RelationType == "Equation Of State"',
+                TypeOfEquationOfState = SIMP(statut='o', into =['variable density', 'compressible'], typ ='TXM'),
+            ),
+              bloc_NonEOSAndSimple=BLOC(condition = 'RelationType == "Force-Flux Relation" and ComplexFluid == False',
+                TypeOfForceFluxRelation =  SIMP(statut='o', into =['Viscosity', 'Diffusivity', 'Thermal Conductivity'], intoXML=['Viscosity', 'Diffusivity', 'Thermal Conductivity','Shear-stress closure', 'Scalar flux'], typ ='TXM', ),
+                blocViscosity=BLOC(condition = 'TypeOfForceFluxRelation == "Viscosity" ',
+                  ViscosityLaw=SIMP(typ='TXM', statut = 'o', into=['law1', 'law2']),
+                ),
+                blocDiffusivity=BLOC(condition = 'TypeOfForceFluxRelation == "Diffusivity"',
+                  DiffusivityLaw=SIMP(typ='TXM', statut = 'o', into=['law1', 'law2']),
+                ),
+                blocConductivity=BLOC(condition = 'TypeOfForceFluxRelation == "Thermal Conductivity"',
+                  ConductivityLaw=SIMP(typ='TXM', statut = 'o', into=['law1', 'law2']),
+                ),
+           ),
+)
+
+#-----------------------------------------------------#
+def prepareBoundaryCondition():
+  return FACT(statut='o',max = '**',    # max = nb de facette de bord
+      TypeOfBoundaryCondition = SIMP(statut='o', typ='TXM', into=['Inlet', 'Outlet', 'Symmetry','Periodicity', 'Wall', 'Free Surface'], ),
+
+      blocDesigneMesh = BLOC(condition = "SystemType == 'Continuum system'",
+          ApplyOnGroups =  SIMP(statut ='o', typ=meshGroup, max='**', homo='SansOrdreNiDoublon',
+                                    filtre=( '(set(MeshIdentifiers).intersection( set(self.getParentsWithId().getListeUserASSD("MeshId")) ) != set()) ',
+                                              ( ('MeshIdentifiers', 'self.etape.getChild("blocModeleNumeriqueContinuum").getChild("NumericalModel")'), )
+                                           ),
+                                   ),
+      ),
+      blocDesigne_Shape = BLOC(condition = "SystemType == 'Classical particle system'",
+          #ApplyOnGroups =  SIMP (statut ='o', typ=spatialRegion, max='**'
+          ApplyOnGroups =  SIMP (statut ='o', typ=meshGroup, max='**', homo='SansOrdreNiDoublon',
+                                   filtre=( '(set(MeshIdentifiers).intersection( set(self.getParentsWithId().getListeUserASSD("MeshId")) ) != set()) ',
+                                              ( ('MeshIdentifiers', 'self.etape.getChild("blocModeleNumeriqueClassical").getChild("NumericalModel")'), )
+                                           ),
+                                ),
+      ),
+             
+      blocOnStateVariable  = BLOC(condition = "TypeOfBoundaryCondition not in ['Wall',]",
+        ApplyOnStateVariable =  SIMP (statut ='o', typ=stateVariable, max='**', homo='SansOrdreNiDoublon',
+                                      filtre=( 'etape in set(self.getEtapes()) ', (('etape', None),), ), #Il ne faut pas proposer les variables d'état des autres composants.
+        ), #PNPN A FAIRE : fenetreIhm='menuDeroulant'
+      ),
+      blocPeriodique = BLOC(condition = "TypeOfBoundaryCondition == 'Periodic'",
+        Direction = SIMP(statut='o', typ='TXM', into=['X','Y','Z', 'XYZ']),
+      ), # b_periodique
+      blocInlet = BLOC(condition = "TypeOfBoundaryCondition == 'Inlet'",
+        FormulationOfBoundary= SIMP(statut='o', typ='TXM', into=['Dirichlet','Neumann','Cauchy']),
+        blocDirichlet =   BLOC(condition = 'FormulationOfBoundary == "Dirichlet"',
+          regles=(AU_MOINS_UN('InletProfile','IntegratedValue','IntegratedVectorValue',),
+                  EXCLUS     ('InletProfile','IntegratedValue','IntegratedVectorValue',), ),
+          Consigne = SIMP(statut ="o", homo="information", typ="TXM", defaut = "Choose between InletProfile,IntegratedValue,IntegratedVectorValue "),
+          InletProfile = SIMP (statut ='f', typ='TXM'),
+          IntegratedValue = SIMP (statut='f', typ='R'),
+          IntegratedVectorValue = FACT(statut='f',
+            U = SIMP (statut ='o', typ='R'),
+            V = SIMP (statut ='o', typ='R'),
+            W = SIMP (statut ='o', typ='R'),
+          ),
+          #PN : faire une regle
+        ),
+        blocNeumann =   BLOC(condition = 'FormulationOfBoundary == "Neumann"',
+            Flux = SIMP (statut ='o', typ='TXM'),
+        ),
+        blocCauchy =   BLOC(condition = 'FormulationOfBoundary == "Cauchy"',
+            ImposedFlux      = SIMP (statut ='o', typ='TXM'),
+            _IntegratedValue = SIMP (statut='o', typ='R'),
+        ),
+      ), # b_inlet
+      blocWall = BLOC(condition = "TypeOfBoundaryCondition == 'Wall'",
+        VelocityAtBoundary = FACT(statut='o',
+            SlipVelocity = SIMP(statut='o', typ='R', defaut= 0.0),
+            WallMotion   = FACT(statut='o',
+              U = SIMP (statut ='o', typ='R'),
+              V = SIMP (statut ='o', typ='R'),
+              W = SIMP (statut ='o', typ='R'),
+            ),
+          ),
+          LevelOfDescription   = FACT(statut='o',
+            blocWall = BLOC(condition = "FlowNature == 'Turbulent'", ##JP+CH TODO : Choix des lois en fct du type du TurbulenceModelingType
+              WallFunction = SIMP(statut ='o', typ='TXM',
+                                  into=['No wall function','1-scale model (Log law)',
+                                        '2-scale model (Log law)','Scalable 2-scale model (Log law)',
+                                  ], defaut='No wall function', fenetreIhm='menuDeroulant'),
+            ),
+          ),
+      ), # b_Wall
+
+  ) # Boundary_Conditions
+
+
+# def prepareBoundaryCondition():
+#   return FACT(statut='o',max = '**',    # max = nb de facette de bord
+#       ApplyOnStateVariable =  SIMP (statut ='o', typ=stateVariable,  ), #PNPN A FAIRE : fenetreIhm='menuDeroulant'
+#       blocDesigneMesh = BLOC(condition = "SystemType == 'Continuum system'",
+#           ApplyOnGroups =  SIMP (statut ='o', typ=meshGroup, max='**', homo='SansOrdreNiDoublon'),
+#       ),
+#       blocDesigne_Shape = BLOC(condition = "SystemType == 'Classical particle system'",
+#           ApplyOnCadGroups =  SIMP (statut ='o', typ=spatialRegion, max='**'),
+#       ),
+#       TypeOfBoundaryCondition = SIMP(statut='o', typ='TXM', into=['Inlet', 'Outlet', 'Symmetry','Periodicity', 'Wall', 'Free Surface'], ),
+#       blocPeriodique = BLOC(condition = "TypeOfBoundaryCondition == 'Periodic'",
+#         Direction = SIMP(statut='o', typ='TXM', into=['X','Y','Z', 'XYZ']),
+#       ), # b_periodique
+#       blocInlet = BLOC(condition = "TypeOfBoundaryCondition == 'Inlet'",
+#         FormulationOfBoundary= SIMP(statut='o', typ='TXM', into=['Dirichlet','Neumann','Cauchy']),
+#         blocDirichlet =   BLOC(condition = 'FormulationOfBoundary == "Dirichlet"',
+#           regles=(AU_MOINS_UN('InletProfile','IntegratedValue','IntegratedVectorValue',),
+#                   EXCLUS     ('InletProfile','IntegratedValue','IntegratedVectorValue',), ),
+#           #Consigne = SIMP(statut ="o", homo="information", typ="TXM", defaut = "Choose between InletProfile,IntegratedValue,IntegratedVectorValue "),
+#           InletProfile = SIMP (statut ='f', typ='TXM'),
+#           IntegratedValue = SIMP (statut='f', typ='R'),
+#           IntegratedVectorValue = FACT(statut='f',
+#             x = SIMP (statut ='o', typ='R'),
+#             y = SIMP (statut ='o', typ='R'),
+#             z = SIMP (statut ='o', typ='R'),
+#           ),
+#           #PN : faire une regle
+#         ),
+#       blocNeumann =   BLOC(condition = 'FormulationOfBoundary == "Neumann"',
+#           Flux = SIMP (statut ='o', typ='TXM'),
+#       ),
+#       blocCauchy =   BLOC(condition = 'FormulationOfBoundary == "Cauchy"',
+#           ImposedFlux      = SIMP (statut ='o', typ='TXM'),
+#           IntegratedValue = SIMP (statut='o', typ='R'),
+#       ),
+#       ), # b_inlet
+#   ) # Boundary_Conditions
+
+
+
+
+JdC = JDC_CATA (
+  #PN : TODO :  regles = (AU_PLUS_UN('DataTransfer_Aspects',),),
+  code = 'Vimmp',
+  # faire un validateur qui verifie que si on active reactions chimiques il faut que les masses molaires soient rentrees
+)
+
+Component = OPER(nom='Component', sd_prod=composant,
+    SystemType  = SIMP(typ='TXM', into=['Quantum system', 'Classical particle system', 'Continuum system'], statut='o',position='global'),
+    PhysicalDescription = FACT(statut = 'o',
+      blocFluideMacro   = prepareBlocFluideMacro(),
+      blocCPS           = prepareBlocCPS(),
+    ),
+    blocModeleNumeriqueQuantum   = prepareBlocSystemType('Quantum system'),
+    blocModeleNumeriqueClassical = prepareBlocSystemType('Classical particle system'),
+    blocModeleNumeriqueContinuum = prepareBlocSystemType('Continuum system'),
+    BoundaryConditions = FACT(statut = 'o',
+        BoundaryCondition = prepareBoundaryCondition(), 
+    )
+)
+
+Species = PROC(nom='Species',
+     Specie   = FACT(statut='o', max ="**",
+         Name      = SIMP(statut='o', typ=(especeChimique,'createObject') ),
+         MolarMass = SIMP(statut='f', typ='R',),
+        )
+)
+
+def monBlocInteractionTypeChamp ():
+    return BLOC (condition = '1 == 1'  , # a distinguer selon les cas
+           fieldNameInOrigine = SIMP(typ='TXM', statut='o'),
+           fieldNameInDestination = SIMP(typ='TXM', statut='o'),
+    )
+
+def TousSelonLeTypeDeFormatDisponible(condition, prefixName=''):
+    TransfertType = SIMP(typ='TXM', statut='o', into =['File', 'Memory', 'CorbaObject'])
+    maListe = list(dictCodeFormat.keys())
+    dicoArgs={}
+    #index=0
+    #for Solv1 in maListe[index:]:
+    #   for Solv2 in maListe[index:]:
+    #       #print (Solv1,Solv2, calculCommun(Solv1, Solv2,dictCodeFormat))
+    #       print ('PNPN attention changement de dictCodeFormat tant que getEficasAttribut n est pas correct')
+    #       conditionSolv = 'TransfertType == "File" and getEficasAttribut(origine,"Solver")==Solv1 and getEficasAttribut(destination,"Solver")==Solv2' ,
+    #       conditionSolv = 'TransfertType == "File"'
+    #       monBlocFichier=creeBlocPourLesFichiers (conditionSolv, 'FileName', calculCommun(Solv1, Solv2,dictCodeFormat))
+    #       dicoArgs['monBlocFichier'+str(index)]=monBlocFichier
+    #   index=index+1
+    mesFormats=set()
+    for solv1 in dictCodeFormat.keys() :
+        for f in dictCodeFormat[solv1] : mesFormats.add(f)
+    conditionSolv='TransfertType == "File"'
+    BlocFichier=creeBlocPourLesFichiers (conditionSolv, prefixName, mesFormats, None)
+    dicoArgs['BlocFichier']=BlocFichier
+    monBlocChamp = BLOC(condition = "TransfertType=='File'", FieldName=SIMP(typ='TXM', statut='o'))
+    dicoArgs['monBlocChamp']=monBlocChamp
+    return BLOC(condition = condition,TransfertType=TransfertType, **dicoArgs)
+
+def SelonLeTypeDeFormatDisponibleMapper(condition):
+    TransferType = SIMP(typ='TXM', statut='o', into =['File', 'Memory', 'CorbaObject'])
+    maListe = list(dictCodeFormat.keys())
+    dicoArgs={}
+    index=0
+    for Solv1 in maListe[index:]:
+       for Solv2 in maListe[index:]:
+           #print (Solv1,Solv2, calculCommun(Solv1, Solv2,dictCodeFormat))
+           print ('PNPN attention changement de dictCodeFormat tant que getEficasAttribut n est pas correct')
+           conditionSolv = 'TransferType == "File" and getEficasAttribut(origine,"Solver")==Solv1 and getEficasAttribut(destination,"Solver")==Solv2' ,
+           conditionSolv = 'TransferType == "File"'
+           monBlocFichier=creeBlocPourLesFichiers (conditionSolv, '', calculCommun(Solv1, Solv2,dictCodeFormat),None)
+           dicoArgs['monBlocFichier'+str(index)]=monBlocFichier
+       index=index+1
+    BlocChamp = BLOC(condition = "TransferType=='File'", FieldName=SIMP(typ='TXM', statut='o'))
+    dicoArgs['BlocChamp'] = BlocChamp
+    return BLOC(condition = condition,TransferType=TransferType, **dicoArgs)
+
+Interpolator = OPER (nom= 'Interpolator',sd_prod=interpolator,
+    InterpolatorType=SIMP(statut='o', typ='TXM', into = list(dictInterpolatorFormat.keys())),
+    blocMedCoupling= BLOC(condition="InterpolatorType == 'Med Coupling'",
+      TargetMeshIdentifier = SIMP(statut ='o', typ = meshIdentifier,),
+      InterpolationType    = SIMP(statut ='o', typ='TXM', into=['P0P0','P0P1','P1P1','P1P0'],),
+    ),
+)
+Converter = OPER (nom= 'Converter',sd_prod=converter)
+
+Interactions = PROC(nom='Interactions',
+
+    IOAspects = FACT(statut='o',
+                           
+    #WorkingDirectory = SIMP(statut='o', typ='Repertoire', defaut='/tmp'),
+                           
+       FileTransfer   = FACT(statut='f', max='**',
+        TransferId    = SIMP(statut='o', typ=(fileId,'createObject'),),
+        monBlocFormat = creeBlocPourLesFichiers('1', '', listeFormatGenerique, FieldName=None ),
+       ),                      
+       MemoryTransfer = FACT(statut='f', max='**',
+        TransferId    = SIMP(statut='o', typ=(memoryId,'createObject'),),
+       ),
+       CorbaTransfer  = FACT(statut='f', max='**',
+        TransferId    = SIMP(statut='o', typ=(corbaId,'createObject'),),
+       ),
+    ),
+
+                    
+   Interaction = FACT(max = '**',
+      InteractionName  =  SIMP(statut='o', typ=(interaction,'createObject'),),
+      From = SIMP(typ=modeleNumDuCompo, statut='o'),
+      To   = SIMP(typ=modeleNumDuCompo, statut='o'),
+      # ApplyOnStateVariable  = SIMP(statut ='o', typ=stateVariable), #PNPN A FAIRE : fenetreIhm='menuDeroulant'
+      InvolvedStateVariable  = SIMP(statut ='o', typ=stateVariable), #PNPN A FAIRE : Seulement du composant d'origine From
+      # monBloc_FFFF = BLOC (
+      #   condition = 'getEficasAttribut(From,"ModelType") == "Fields" and getEficasAttribut(To,"ModelType") == "Fields"' ,
+      #   TermeLE = SIMP(typ='TXM', statut='o', into = dictTermeLE['Fields','Fields'],fenetreIhm='menuDeroulant'),
+      #     ),
+      # monBloc_DPDP = BLOC (
+      #   condition = 'getEficasAttribut(From,"ModelType") == "Particles" and getEficasAttribut(To,"ModelType") == "Particles"' ,
+      #   TermeLE = SIMP(typ='TXM', statut='o', into = dictTermeLE['Particles','Particles'],fenetreIhm='menuDeroulant'),
+      #     ),
+      # monBloc_FFDP = BLOC (
+      #   condition = 'getEficasAttribut(From,"ModelType") == "Fields" and getEficasAttribut(To,"ModelType") == "Particles"' ,
+      #   TermeLE = SIMP(typ='TXM', statut='o', into = dictTermeLE['Fields','Particles'],fenetreIhm='menuDeroulant'),
+      #     ),
+      # monBloc_DPFF = BLOC (
+      #   condition = 'getEficasAttribut(From,"ModelType") == "Particles" and getEficasAttribut(To,"ModelType") == "Fields"' ,
+      #   TermeLE = SIMP(typ='TXM', statut='o', into = dictTermeLE['Particles','Fields'],fenetreIhm='menuDeroulant'),
+      #     ),
+      InteractionConfiguration = FACT(statut='o',
+                                      
+         OutputId = SIMP(statut='o',typ=(transferId,),),
+         FieldName=SIMP(typ='TXM', statut='o'),
+         # ComponentProduction = FACT(statut='o',
+         #           monBlocFormat = TousSelonLeTypeDeFormatDisponible("1", 'ComponentProduction' ),
+         #     ),
+         # ),
+         #CouplingMode =  SIMP(typ='TXM', statut='o', into =['Direct', 'DataProcessing', 'Conversion']),
+         CouplingMode =  SIMP(typ='TXM', statut='o', into =['Direct', 'DataProcessing']),
+         #monBlocDirect = TousSelonLeTypeDeFormatDisponible("CouplingMode=='Direct'" ),
+
+         monBlocDataProcessing = BLOC (condition = "CouplingMode=='DataProcessing'",                         
+            DataProcessingNode = FACT(min=1, max='**', statut ='o',
+               Tool            = SIMP(typ=mapper, statut ='o'),
+               OutputId        = SIMP(statut='o',typ=(transferId,),),
+               FieldName       = SIMP(typ='TXM', statut='o'),
+               monBlocInterpolator = BLOC (condition = "(Tool != None) and (isinstance(Tool,interpolator))",
+                  FieldNature    = SIMP(typ='TXM', statut='o', into=['ExtensiveMaximum', 'IntensiveMaximum',
+                                                                     'ExtensiveConservation', 'IntensiveConservation']), #PN: DICO pour le into avec key==Tool
+               ),
+            ),
+          ), #fin monBlocDataProcessing
+      ), #fin InteractionConfiguration
+      ),
+)
+
+
+
+EnvironementAspects = PROC(nom ="EnvironementAspects",        
+    WorkflowName     = SIMP(statut='o', typ='TXM', defaut='MyStudyCasename'), #PN:  -> path
+    WorkingDirectory = SIMP(statut='o', typ='Repertoire', defaut='/tmp'),
+)
+
+#Le dictionnaire dict_condition est un dictionnaire utilisé par eficas
+# pour les position='global_jdc' et position='inGetAttribut'
+dict_condition={
+'ChoiceOfApproach': ('Interactions', 'Component'),
+'Interactions'    : ( 'Component'),
+}
+
+TemporalAspects = PROC(nom ="TemporalAspects",
+    Simulated_Time_Laps = FACT(statut='o', max='**',
+     name =  SIMP(statut='o', typ=(simulatedTime,'createObject'),),
+     initialTime = SIMP(statut='o', typ='R'),
+     finalTime   = SIMP(statut='o', typ='R'),
+     timeDiscretization = SIMP(statut ='o', typ = 'TXM', into = ['Constant Time Step', 'Varying Time Step']),
+     bloc_Constant = BLOC (condition = 'timeDiscretization == "Constant Time Step"',
+          constantTimeStep = SIMP (statut ='o', typ = 'R'),
+     ),
+     bloc_Varying = BLOC (condition = 'timeDiscretization == "Varying Time Step"',
+          CFLNumberCriteria     = SIMP (statut ='o', typ = 'R'),
+          FourierNumberCriteria = SIMP (statut ='o', typ = 'R'),
+     ),
+     ),
+)
+
+
+
+
+#
+# -----------------------------------------
+SpatialAspects = PROC(nom='SpatialAspects',
+# -----------------------------------------
+  regles = (AU_MOINS_UN('SystemGeometry', 'SpatialDiscretization'),),
+
+  SystemGeometry = FACT(statut='f', max='**', 
+       SystemGeometryName = SIMP(statut='o', typ=(systemGeometry, 'createObject'),),
+       Shape   = FACT(statut ='o', max='**',
+          ShapeIdentifier = SIMP(statut='o', typ=(cadShape,'createObject'),max='**',),
+          ShapeNature     = SIMP(statut='o', typ='TXM', into=['Typical Geometry', 'CAD']),
+
+          blocShape  = BLOC(condition = 'Shape_Nature == "Typical Geometry"',
+            Box      = SIMP(statut='o', typ='TXM', into=['Cube', 'Sphere','Cylinder'] ),
+            blocCube = BLOC(condition = 'Box == "Cube"',
+             #Taille_Box_Englobante = SIMP(statut='o', typ='R', max=3, min =3)
+             # derait etre un Tuple(3) mais a faire apres la projection
+             #Size_Of_Bounding_Box = SIMP(statut='o', typ=Tuple(3), validators=VerifTypeTuple(('R','R','R'),),)
+              Size_Of_Bounding_Box = SIMP(statut='o', typ='R', max=3, min=3, ),
+            ), # fin blocCube
+            blocBoule = BLOC(condition = 'Box == "Sphere"',
+              Center  = SIMP(statut='o', typ='R', max=3, min =3),
+            ),# fin b_Boule
+            blocCylinder = BLOC(condition = 'Box == "Cylinder"',
+              Heigth  = SIMP(statut="o", typ='R', val_min=0.0, ang='Nanotube length [m]'),
+            ),# fin blocCylinder
+            blocBouleOuCylinder = BLOC(condition = 'Box == "Sphere" or Box == "Cylinder"',
+                Radius  = SIMP(statut='o', typ='R', val_min=0.0, ang='radius length [m]') ,
+            ),# fin blocBouleOuCylinder
+          ), # fin blocShape
+          blocCAO = creeBlocPourLesFichiers("Shape_Nature == 'CAD'",'Domain', ['txt','I-deas', 'Gmsh', 'top',],None),
+      ), # fin Shape
+   ),# SystemGeometry
+
+   SpatialDiscretization = FACT(statut='f', max="**",
+      MeshId    = SIMP(statut='o', typ=(meshIdentifier,'createObject')),
+      MeshName  = SIMP(statut='o', typ='TXM'),
+      blocMeshFile = creeBlocPourLesFichiers("1 == 1",'Mesh',listeFormatGenerique,None),
+      GroupIdentifier = SIMP(statut='o', typ=(meshGroup,'createObject'),max='**',),
+   ),# SpatialDiscretization
+
+   BoundaryConstraints = FACT(statut = 'f',
+       Motion = FACT(statut='f',
+          MotionNature = SIMP(statut='o', typ='TXM', into=['Fixed boudary', 'Translational motion', 'Rotational motion', 'Scaling']),
+
+          blocTranslationalMotion = BLOC(condition = 'MotionNature == "Translational motion"',
+            TranslationVelocity   = SIMP(statut='o', typ='R'),
+            boundaries            = SIMP(statut='o', typ=spatialRegion,max='**', homo='SansOrdreNiDoublon' ),
+          ),
+          blocRotationalMotion = BLOC(condition = 'MotionNature == "Rotational motion"',
+            RotationRate       = SIMP(statut='o', typ='R'),
+            boundaries         = SIMP(statut='o', typ=spatialRegion,max='**', homo='SansOrdreNiDoublon' ),
+          ),
+          blocFixed    = BLOC(condition = 'MotionNature == "Fixed boudary"',
+            boundaries = SIMP(statut='o', typ=spatialRegion,max='**', homo='SansOrdreNiDoublon'),
+          ),
+       ),
+#PN decrire page 28
+       Mapping = FACT(statut='f',
+       ),
+     ), # Boundary_Constraints
+) # fin Geometric_Domain
+
+TEXTE_NEW_JDC = "\
+Velocity=scalar()\
+"
diff --git a/Vimmp/cata_CSAndCPS_v12_test_driver_1.comm b/Vimmp/cata_CSAndCPS_v12_test_driver_1.comm
new file mode 100644 (file)
index 0000000..61b84d0
--- /dev/null
@@ -0,0 +1,186 @@
+Pressure=dynamicVariable()
+Temperature=scalar()
+Time1=simulatedTime()
+CS_Num1=modeleNumDuCompo()
+P1=userDiscrete()
+CS_Num2=modeleNumDuCompo()
+Group_From_Mesh1=meshGroup()
+Group_From_Mesh2=meshGroup()
+Average_Velocity=dynamicVariable()
+K=scalar()
+Epsilon=scalar()
+outlet=meshGroup()
+symmetry=meshGroup()
+wall=meshGroup()
+inlet1=meshGroup()
+inlet2=meshGroup()
+fluidfile=fileId()
+CS_Num1__CS_Num2_Velocity=interaction()
+CS_Num1__CS_Num2_Epsilon=interaction()
+CS_Num1__CS_Num2_Pressure=interaction()
+Time2=simulatedTime()
+half_pipe_21_60=meshIdentifier()
+half_pipe_15_40=meshIdentifier()
+Interpolated_Pressure_File=fileId()
+Interpolated_Epsilon_File=fileId()
+interpolated_Velocity_File=fileId()
+
+EnvironementAspects(WorkflowName='Inria',
+                    WorkingDirectory='/tmp/eric',);
+
+SpatialAspects(SpatialDiscretization=(_F(MeshId=half_pipe_21_60,
+                                         MeshName='half_pipe_generation_2inlet',
+                                         MeshFileFormat='Med',
+                                         MeshFileName=\
+                                '/home/eric/VIMMP/vimmptraining/app/fluide+mapper+particule/datafiles/half_pipe_21_60_2inlet.med',
+                                         GroupIdentifier=(inlet1,inlet2,outlet,symmetry,wall,Group_From_Mesh1,),),
+                                      _F(MeshId=half_pipe_15_40,
+                                         MeshName='half_pipe_generation_2inlet',
+                                         MeshFileFormat='Med',
+                                         MeshFileName=\
+                                '/home/eric/VIMMP/vimmptraining/app/fluide+mapper+particule/datafiles/half_pipe_15_40_2inlet.med',
+                                         GroupIdentifier=(inlet1,inlet2,outlet,symmetry,wall,Group_From_Mesh2,),),),);
+
+TemporalAspects(Simulated_Time_Laps=(_F(name=Time1,
+                                        initialTime=0.0,
+                                        finalTime=10.0,
+                                        timeDiscretization='Constant Time Step',
+                                        constantTimeStep=0.1,),
+                                     _F(name=Time2,
+                                        initialTime=10.0,
+                                        finalTime=15.0,
+                                        timeDiscretization='Constant Time Step',
+                                        constantTimeStep=0.01,),),);
+
+FluidComponent=Component(SystemType='Continuum system',
+                         PhysicalDescription=_F(ComplexFluid=False,
+                                                FlowNature='Turbulent',
+                                                DensityInitialisation=_F(DensityValueType='Value',
+                                                                         Density=1.17862,),
+                                                ViscosityInitialisation=_F(ViscosityValueType='Value',
+                                                                           Viscosity=0.0183,),
+                                                TurbulenceForFlowDynamics=_F(TurbulenceModellingType='One-point moment',
+                                                                             RANSModel='Turbulent-Viscosity Model (TVM)',
+                                                                             TVMChoice='K-Epsilon',),
+                                                DynamicalVariables=_F(OriginOfDynamicalVariables='to be simulated',
+                                                                      PressureDefinition=_F(Pressure=Pressure,
+                                                                                            SourceTerm=False,),
+                                                                      VelocityDefinition=_F(AverageVelocity=Average_Velocity,
+                                                                                            SourceTerm=False,),
+                                                                      KDefinition=_F(Name=K,
+                                                                                     SourceTerm=False,),
+                                                                      EpsilonDefinition=_F(Name=Epsilon,
+                                                                                           SourceTerm=False,),),
+                                                Thermal=_F(ThermalEffects='Non thermal',
+                                                           ReferenceTemperature=293.15,),
+                                                Scalars=_F(withScalars=False,),),
+                         NumericalModel=_F(Identifier=CS_Num1,
+                                           SimulatedTimeLapse=Time1,
+                                           ChoiceOfApproach='Field-based',
+                                           NumericalMethod='FV',
+                                           Solver='Code_Saturne',
+                                           MeshIdentifiers=(half_pipe_21_60,),),
+                         BoundaryConditions=_F(BoundaryCondition=(_F(TypeOfBoundaryCondition='Inlet',
+                                                                     ApplyOnGroups=(inlet1,inlet2,),
+                                                                     ApplyOnStateVariable=(Average_Velocity,),
+                                                                     FormulationOfBoundary='Dirichlet',
+                                                                     Consigne=\
+                                                             'Choose between InletProfile,IntegratedValue,IntegratedVectorValue ',
+                                                                     IntegratedVectorValue=_F(U=1.0,
+                                                                                              V=0.0,
+                                                                                              W=0.0,),),
+                                                                  _F(TypeOfBoundaryCondition='Inlet',
+                                                                     ApplyOnGroups=(inlet1,inlet2,),
+                                                                     ApplyOnStateVariable=(K,),
+                                                                     FormulationOfBoundary='Dirichlet',
+                                                                     Consigne=\
+                                                             'Choose between InletProfile,IntegratedValue,IntegratedVectorValue ',
+                                                                     IntegratedValue=0.0,),
+                                                                  _F(TypeOfBoundaryCondition='Wall',
+                                                                     ApplyOnGroups=(wall,),
+                                                                     VelocityAtBoundary=_F(SlipVelocity=0.0,
+                                                                                           WallMotion=_F(U=1.0,
+                                                                                                         V=0.0,
+                                                                                                         W=0.0,),),
+                                                                     LevelOfDescription=_F(WallFunction='2-scale model (Log law)',),),),),);
+
+PartComponent=Component(SystemType='Classical particle system',
+                        PhysicalDescription=_F(Particle=_F(ParticleNature='Discrete Particle',
+                                                           DiscreteParticleName=P1,
+                                                           TypeOfDiscreteParticle='Solid',
+                                                           TypeOfSolid='Primary Particle',
+                                                           Properties=_F(Geometry='Sphere',
+                                                                         ParticleRadius=1e-05,
+                                                                         Weight=_F(Density=1000.0,),
+                                                                         Mechanical='Rigid',),
+                                                           ListOfInteractions=_F(BondedInteractions=_F(TypeOfBondedInteraction=\
+                                                                                                                          'NoOne',),
+                                                                                 UnbondedInteractions=_F(TypeOfUnbondedInteraction=\
+                                                                                                                             'No',),
+                                                                                 ExternalFieldInteraction=_F(
+                                                                                     TypeOfInteractionWithAnExternalField='NoOne',
+                                                                                                    FieldAppliesOnAllSpecies=True,),),),),
+                        NumericalModel=_F(Identifier=CS_Num2,
+                                          SimulatedTimeLapse=Time2,
+                                          ChoiceOfApproach='N-Particle_Method',
+                                          NumericalMethod='CFD_Discrete_N-Particle_Method',
+                                          Solver='Code_Saturne',
+                                          MeshIdentifiers=(half_pipe_15_40,),),
+                        BoundaryConditions=_F(BoundaryCondition=_F(TypeOfBoundaryCondition='Wall',
+                                                                   ApplyOnGroups=(wall,),
+                                                                   VelocityAtBoundary=_F(SlipVelocity=0.0,
+                                                                                         WallMotion=_F(U=0.0,
+                                                                                                       V=0.0,
+                                                                                                       W=0.0,),),
+                                                                   LevelOfDescription=_F(),),),);
+
+MedCouplingComponent=Interpolator(InterpolatorType='Med Coupling',
+                                  TargetMeshIdentifier=half_pipe_15_40,
+                                  InterpolationType='P0P0',);
+
+Interactions(IOAspects=_F(FileTransfer=(_F(TransferId=fluidfile,
+                                           FileFormat='Med',
+                                           FileName='results_Fluid_domain.med',),
+                                        _F(TransferId=interpolated_Velocity_File,
+                                           FileFormat='Med',
+                                           FileName='results_Fluid_Interpolated_Velocity.med',),
+                                        _F(TransferId=Interpolated_Epsilon_File,
+                                           FileFormat='Med',
+                                           FileName='results_Fluid_Interpolated_Epsilon.med',),
+                                        _F(TransferId=Interpolated_Pressure_File,
+                                           FileFormat='Med',
+                                           FileName='results_Fluid_Interpolated_Pressure.med',),),),
+             Interaction=(_F(InteractionName=CS_Num1__CS_Num2_Velocity,
+                             From=CS_Num1,
+                             To=CS_Num2,
+                             InvolvedStateVariable=Average_Velocity,
+                             InteractionConfiguration=_F(OutputId=fluidfile,
+                                                         FieldName='Velocity',
+                                                         CouplingMode='DataProcessing',
+                                                         DataProcessingNode=_F(Tool=MedCouplingComponent,
+                                                                               OutputId=interpolated_Velocity_File,
+                                                                               FieldName='Velocity',
+                                                                               FieldNature='IntensiveMaximum',),),),
+                          _F(InteractionName=CS_Num1__CS_Num2_Epsilon,
+                             From=CS_Num1,
+                             To=CS_Num2,
+                             InvolvedStateVariable=Epsilon,
+                             InteractionConfiguration=_F(OutputId=fluidfile,
+                                                         FieldName='epsilon',
+                                                         CouplingMode='DataProcessing',
+                                                         DataProcessingNode=_F(Tool=MedCouplingComponent,
+                                                                               OutputId=Interpolated_Epsilon_File,
+                                                                               FieldName='epsilon',
+                                                                               FieldNature='IntensiveMaximum',),),),
+                          _F(InteractionName=CS_Num1__CS_Num2_Pressure,
+                             From=CS_Num1,
+                             To=CS_Num2,
+                             InvolvedStateVariable=Pressure,
+                             InteractionConfiguration=_F(OutputId=fluidfile,
+                                                         FieldName='Pressure',
+                                                         CouplingMode='DataProcessing',
+                                                         DataProcessingNode=_F(Tool=MedCouplingComponent,
+                                                                               OutputId=Interpolated_Pressure_File,
+                                                                               FieldName='Pressure',
+                                                                               FieldNature='IntensiveMaximum',),),),),);
+#CHECKSUM:bf096ea4db8633808bfcdba60f251338  -:FIN CHECKSUM
\ No newline at end of file
diff --git a/Vimmp/cata_CSAndCPS_v16_test_driver_1.comm b/Vimmp/cata_CSAndCPS_v16_test_driver_1.comm
new file mode 100644 (file)
index 0000000..be92c7c
--- /dev/null
@@ -0,0 +1,286 @@
+Pressure=dynamicVariable()
+Temperature=scalar()
+Time1=simulatedTime()
+CS_Num1=modeleNumDuCompo()
+CS_Num2=modeleNumDuCompo()
+Group_From_Mesh1=meshGroup()
+Group_From_Mesh2=meshGroup()
+Average_Velocity=dynamicVariable()
+Epsilon=scalar()
+outlet=meshGroup()
+symmetry=meshGroup()
+wall=meshGroup()
+inlet1=meshGroup()
+inlet2=meshGroup()
+fluidfile=fileId()
+CS_Num1__CS_Num2_Velocity=interaction()
+CS_Num1__CS_Num2_Epsilon=interaction()
+CS_Num1__CS_Num2_Pressure=interaction()
+Time2=simulatedTime()
+half_pipe_21_60=meshIdentifier()
+half_pipe_15_40=meshIdentifier()
+Interpolated_Pressure_File=fileId()
+Interpolated_Rij_File=fileId()
+Interpolated_Epsilon_File=fileId()
+interpolated_Velocity_File=fileId()
+Position=dynamicVariable()
+Velocity=dynamicVariable()
+Rij=scalar()
+Colloids=userDiscrete()
+Diameter=dynamicVariable()
+Mass=dynamicVariable()
+WallReboundCondition=wallInteractionId()
+FluidSeenVelocity=dynamicVariable()
+CS_Num1__CS_Num2_Rij=interaction()
+
+EnvironementAspects(WorkflowName='Inria',
+                    WorkingDirectory='/tmp',);
+
+SpatialAspects(SpatialDiscretization=(_F(MeshId=half_pipe_21_60,
+                                         MeshName='half_pipe_generation_2inlet',
+                                         MeshFileFormat='Med',
+                                         MeshFileName=\
+                                '/home/eric/VIMMP/vimmptraining/app/fluide+mapper+particule/datafiles/half_pipe_21_60_2inlet.med',
+                                         GroupIdentifier=(inlet1,inlet2,outlet,symmetry,wall,Group_From_Mesh1,),),
+                                      _F(MeshId=half_pipe_15_40,
+                                         MeshName='half_pipe_generation_2inlet',
+                                         MeshFileFormat='Med',
+                                         MeshFileName=\
+                                '/home/eric/VIMMP/vimmptraining/app/fluide+mapper+particule/datafiles/half_pipe_15_40_2inlet.med',
+                                         GroupIdentifier=(inlet1,inlet2,outlet,symmetry,wall,Group_From_Mesh2,),),),);
+
+TemporalAspects(Simulated_Time_Laps=(_F(name=Time1,
+                                        initialTime=0.0,
+                                        finalTime=10.0,
+                                        timeDiscretization='Constant Time Step',
+                                        constantTimeStep=0.1,),
+                                     _F(name=Time2,
+                                        initialTime=10.0,
+                                        finalTime=15.0,
+                                        timeDiscretization='Constant Time Step',
+                                        constantTimeStep=0.01,),),);
+
+FluidComponent=Component(SystemType='Continuum system',
+                         PhysicalDescription=_F(ComplexFluid=False,
+                                                FlowNature='Turbulent',
+                                                DensityInitialisation=_F(DensityValueType='Value',
+                                                                         Density=1.17862,),
+                                                ViscosityInitialisation=_F(ViscosityValueType='Value',
+                                                                           Viscosity=0.0183,),
+                                                TurbulenceForFlowDynamics=_F(TurbulenceModellingType='One-point moment',
+                                                                             RANSModel='Reynolds Stress Model (RSM)',
+                                                                             RSMChoice='Rotta',),
+                                                DynamicalVariables=_F(VariablesSimulation=True,
+                                                                      PressureDefinition=_F(Pressure=Pressure,
+                                                                                            Initialisation=_F(InitialisationType=\
+                                                                                                                        'ByValue',
+                                                                                                              Value=0.0,),
+                                                                                            SourceTerm=False,),
+                                                                      VelocityDefinition=_F(AverageVelocity=Average_Velocity,
+                                                                                            Initialisation=_F(InitialisationType=\
+                                                                                                                        'ByValue',
+                                                                                                              Value=0.0,),
+                                                                                            SourceTerm=False,),
+                                                                      EpsilonDefinition=_F(Name=Epsilon,
+                                                                                           Initialisation=_F(InitialisationType=\
+                                                                                                                        'ByValue',
+                                                                                                             Value=1.3e-06,),
+                                                                                           SourceTerm=False,),
+                                                                      RijDefinition=_F(Name=Rij,
+                                                                                       Initialisation=_F(InitialisationType=\
+                                                                                                                        'ByValue',
+                                                                                                         Value=0.0004,),
+                                                                                       SourceTerm=False,),),
+                                                Thermal=_F(ThermalEffects='Non thermal',
+                                                           ReferenceTemperature=293.15,),
+                                                Scalars=_F(withScalars=False,),),
+                         NumericalModel=_F(Identifier=CS_Num1,
+                                           SimulatedTimeLapse=Time1,
+                                           ChoiceOfApproach='Field_based',
+                                           NumericalMethod='FV',
+                                           Solver='Code_Saturne',
+                                           MeshIdentifiers=(half_pipe_21_60,),),
+                         BoundaryConditions=_F(BoundaryCondition=(_F(TypeOfBoundaryCondition='Inlet',
+                                                                     ApplyOnGroups=(inlet1,inlet2,),
+                                                                     ApplyOnStateVariable=(Average_Velocity,),
+                                                                     FormulationOfBoundary='Dirichlet',
+                                                                     Consigne=\
+                                                             'Choose between InletProfile,IntegratedValue,IntegratedVectorValue ',
+                                                                     IntegratedVectorValue=_F(U=1.0,
+                                                                                              V=0.0,
+                                                                                              W=0.0,),),
+                                                                  _F(TypeOfBoundaryCondition='Outlet',
+                                                                     ApplyOnGroups=(outlet,),),
+                                                                  _F(TypeOfBoundaryCondition='Wall',
+                                                                     ApplyOnGroups=(wall,),
+                                                                     VelocityAtBoundary=_F(SlipVelocity=0.0,
+                                                                                           WallMotion=_F(U=0.0,
+                                                                                                         V=0.0,
+                                                                                                         W=0.0,),),
+                                                                     LevelOfDescription=_F(WallFunction='2-scale model (Log law)',),),
+                                                                  _F(TypeOfBoundaryCondition='Symmetry',
+                                                                     ApplyOnGroups=(symmetry,),
+                                                                     ApplyOnStateVariable=(Pressure,Average_Velocity,Epsilon,Rij,),),),),);
+
+PartComponent=Component(SystemType='Classical particle system',
+                        PhysicalDescription=_F(Particles=_F(ParticleNature='Discrete Particle',
+                                                            ParticleName=Colloids,
+                                                            InitialNumberOfParticles=0,
+                                                            TypeOfDiscreteParticle='Solid',
+                                                            PrimaryOrAggregate='Primary Particle',
+                                                            Properties=_F(Geometry='Sphere',
+                                                                          ReferenceParticleRadius=1e-05,
+                                                                          Weight=_F(Density=1000.0,),
+                                                                          Mechanical='Rigid',),),
+                                               AmbiantMediaInteraction=_F(MomentumExchange=_F(withMomentumExchange=True,
+                                                                                              MomentumFieldType=('Hydrodynamic',),
+                                                                                              DefineForceOnParticle=_F(
+                                                                                                TypeOfHydroDynamicForce=('Drag',),
+                                                                                                    FieldAppliesOnAllSpecies=True,
+                                                                                                                       NatureOfFluidForce=_F(
+                                                                                                         NatureOfFlow='Turbulent',
+                                                                                       TurbulenceModellingType='One-point moment',
+                                                                                      RANSModel='Turbulent-Viscosity Model (TVM)',
+                                                                                             TurbulenceModelDispersion='Langevin',
+                                                                                               InitialisationType='ByInteraction',
+                                                                                Consigne='Create and choose suitable interaction',
+                                                                             InteractionNameForPressure=CS_Num1__CS_Num2_Pressure,
+                                                                             InteractionNameForVelocity=CS_Num1__CS_Num2_Velocity,
+                                                                               InteractionNameForEpsilon=CS_Num1__CS_Num2_Epsilon,
+                                                                                       InteractionNameForRij=CS_Num1__CS_Num2_Rij,),),),
+                                                                          MassExchange=_F(withMassExchange=False,),
+                                                                          EnergyExchange=_F(withEnergyExchange=False,),
+                                                                          AmbientInducedProcesses=_F(withAmbientInducedProcesses=\
+                                                                                                                            False,),
+                                                                          AdditionalSamplingOfAmbientMedia=_F(
+                                                                                       withAdditionalSamplingOfAmbientMedia=False,),),
+                                               ParticleParticleInteraction=_F(BondedInteractions=_F(BondedParticles=False,),
+                                                                              ActionsAtDistance=_F(withActionsAtDistance=False,),
+                                                                              ContactPhenomena=_F(withContactPhenomena=False,),),
+                                               ParticleWallInteraction=_F(withParticleWallInteraction=True,
+                                                                          ParticleWallInteractionId=WallReboundCondition,
+                                                                          TypeOfWall=_F(Dynamics='Fixed position',
+                                                                                        LevelOfDescription='Continuum',
+                                                                                        SurfaceTexture='Smooth',),
+                                                                          ActionsAtDistance=_F(withActionsAtDistance=False,),
+                                                                          ContactPhenomena=_F(withContactPhenomena=True,
+                                                                                              LevelOfDescription='Macroscopic',
+                                                                                              OutcomeOfContact='Elastic collision',),),
+                                               ConstraintsAndReducedStatisticalDescription=_F(Constraint=_F(TypeOfConstraint=
+                                                                                                                               ('Time-marching_non-equilibrium',
+                                                                                                                               ),),),
+                                               StateVector=_F(ParticleDiameter=_F(Diameter=Diameter,
+                                                                                  ToSimulate=False,),
+                                                              ParticleMass=_F(Mass=Mass,
+                                                                              ToSimulate=False,),
+                                                              ParticlePosition=_F(Position=Position,
+                                                                                  ToSimulate=True,
+                                                                                  Initialisation=_F(InitialisationType='Not needed',),),
+                                                              ParticleVelocity=_F(Velocity=Velocity,
+                                                                                  ToSimulate=True,
+                                                                                  Initialisation=_F(InitialisationType='Not needed',
+                                                                                                    SourceTerm=False,),),
+                                                              FluidVelocitySeenByParticles=_F(FluidSeenVelocity=FluidSeenVelocity,
+                                                                                              ToSimulate=True,
+                                                                                              Initialisation=_F(InitialisationType=\
+                                                                                                                     'Not needed',
+                                                                                                                SourceTerm=False,),),),),
+                        NumericalModel=_F(Identifier=CS_Num2,
+                                          SimulatedTimeLapse=Time2,
+                                          ChoiceOfApproach='Particle_based',
+                                          NumericalMethod='CFD_Discrete_Particle_based',
+                                          Solver='Code_Saturne',
+                                          MeshIdentifiers=(half_pipe_15_40,),),
+                        BoundaryConditions=_F(BoundaryCondition=(_F(TypeOfBoundaryCondition='Inlet',
+                                                                    ApplyOnGroups=(inlet2,),
+                                                                    TypeOfParticleInjected=Colloids,
+                                                                    NumberOfParticleInjected=100,
+                                                                    InjectionEveryNTimeSteps=1,
+                                                                    DiameterOfParticleInjected=1e-05,
+                                                                    MassOfParticleInjected=4.2e-12,
+                                                                    PositionOfParticleInjected=_F(InitialisationMode='ByFormula',),
+                                                                    ParticleVelocity=_F(InitialisationMode='ByFormula',),
+                                                                    FluidVelocitySeenByParticles=_F(InitialisationMode='ByFormula',),),
+                                                                 _F(TypeOfBoundaryCondition='Outlet',
+                                                                    ApplyOnGroups=(outlet,inlet1,),
+                                                                    ApplyOnAllsParticle=True,),
+                                                                 _F(TypeOfBoundaryCondition='Symmetry',
+                                                                    ApplyOnGroups=(symmetry,),
+                                                                    ApplyOnStateVariable=
+                                                                    
+                                                                                           (Position,Velocity,
+                                                                                           Diameter,Mass,
+                                                                                           FluidSeenVelocity,),
+                                                                    ApplyOnAllsParticle=True,),
+                                                                 _F(TypeOfBoundaryCondition='Wall',
+                                                                    ApplyOnGroups=(wall,),
+                                                                    ApplyOnStateVariable=(Position,Velocity,FluidSeenVelocity,),
+                                                                    ChoiceOfParticleWallInteraction=WallReboundCondition,
+                                                                    ApplyOnAllsParticle=True,),),),);
+
+MedCouplingComponent=Interpolator(InterpolatorType='Med Coupling',
+                                  TargetMeshIdentifier=half_pipe_15_40,
+                                  InterpolationType='P0P0',
+                                  DefaultValueForUnmatchedMeshTargetEntity=-1.0,);
+
+Interactions(IOAspects=_F(FileTransfer=(_F(TransferId=fluidfile,
+                                           FileFormat='Med',
+                                           FileName='results_Fluid_domain.med',),
+                                        _F(TransferId=interpolated_Velocity_File,
+                                           FileFormat='Med',
+                                           FileName='results_Fluid_Interpolated_Velocity.med',),
+                                        _F(TransferId=Interpolated_Rij_File,
+                                           FileFormat='Med',
+                                           FileName='results_Fluid_Interpolated_Rij.med',),
+                                        _F(TransferId=Interpolated_Epsilon_File,
+                                           FileFormat='Med',
+                                           FileName='results_Fluid_Interpolated_Epsilon.med',),
+                                        _F(TransferId=Interpolated_Pressure_File,
+                                           FileFormat='Med',
+                                           FileName='results_Fluid_Interpolated_Pressure.med',),),),
+             Interaction=(_F(InteractionName=CS_Num1__CS_Num2_Velocity,
+                             From=CS_Num1,
+                             To=CS_Num2,
+                             InvolvedStateVariable=Average_Velocity,
+                             InteractionConfiguration=_F(OutputId=fluidfile,
+                                                         FieldName='Velocity',
+                                                         CouplingMode='DataProcessing',
+                                                         DataProcessingNode=_F(Tool=MedCouplingComponent,
+                                                                               OutputId=interpolated_Velocity_File,
+                                                                               FieldName='Velocity',
+                                                                               FieldNature='IntensiveMaximum',),),),
+                          _F(InteractionName=CS_Num1__CS_Num2_Epsilon,
+                             From=CS_Num1,
+                             To=CS_Num2,
+                             InvolvedStateVariable=Epsilon,
+                             InteractionConfiguration=_F(OutputId=fluidfile,
+                                                         FieldName='epsilon',
+                                                         CouplingMode='DataProcessing',
+                                                         DataProcessingNode=_F(Tool=MedCouplingComponent,
+                                                                               OutputId=Interpolated_Epsilon_File,
+                                                                               FieldName='epsilon',
+                                                                               FieldNature='IntensiveMaximum',),),),
+                          _F(InteractionName=CS_Num1__CS_Num2_Pressure,
+                             From=CS_Num1,
+                             To=CS_Num2,
+                             InvolvedStateVariable=Pressure,
+                             InteractionConfiguration=_F(OutputId=fluidfile,
+                                                         FieldName='Pressure',
+                                                         CouplingMode='DataProcessing',
+                                                         DataProcessingNode=_F(Tool=MedCouplingComponent,
+                                                                               OutputId=Interpolated_Pressure_File,
+                                                                               FieldName='Pressure',
+                                                                               FieldNature='IntensiveMaximum',),),),
+                          _F(InteractionName=CS_Num1__CS_Num2_Rij,
+                             From=CS_Num1,
+                             To=CS_Num2,
+                             InvolvedStateVariable=Rij,
+                             InteractionConfiguration=_F(OutputId=fluidfile,
+                                                         FieldName='Rij',
+                                                         CouplingMode='DataProcessing',
+                                                         DataProcessingNode=_F(Tool=MedCouplingComponent,
+                                                                               OutputId=Interpolated_Rij_File,
+                                                                               FieldName='Rij',
+                                                                               FieldNature='IntensiveMaximum',),),),),);
+#VERSION_CATALOGUE:VimmpV16:FIN VERSION_CATALOGUE
+#CHECKSUM:af6dc896f894fc543700d58eb69f9c92  -:FIN CHECKSUM
\ No newline at end of file