# coding: utf-8 -*-
#
-# Copyright (C) 2012-2013 EDF
-#
-# This file is part of SALOME HYDRO module.
-#
-# SALOME HYDRO module is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# SALOME HYDRO module is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with SALOME HYDRO module. If not, see <http://www.gnu.org/licenses/>.
-# PNPN changer la place du trait dans les FACT ouverts
-# PNPN ne pas afficher les facts optionnels
+import os
import types
-from Accas import *
-import types
-class Tuple:
- def __init__(self,ntuple):
- self.ntuple=ntuple
+monFichier=os.path.abspath(__file__)
- def __convert__(self,valeur):
- if type(valeur) == types.StringType: return None
- if len(valeur) != self.ntuple: return None
- return valeur
+# ------------------------------------------------- Definition fonction utilisateur
+from Accas import *
+class Surface_Elementaire (UserASSD): pass
+class StudySD (ASSD) : pass
- def info(self):
- return "Tuple de %s elements" % self.ntuple
+def creeSurfaceElementaire(MC) :
+ MC.creeObjetClasse(Surface_Elementaire)
+ return
-class Surface_Elementaire (UserASSD): pass
+# ------------------------------------------------- Definition fonction du catalogue ou macro
def champ (nomDelaContante, labels ,nbReels ) :
# ajouter les extensions pour le fichier et les blocs associes
# validators=VerifTypeTuple(("'R',"*nbReels),),) # end Particule
), #b_vsaisie
b_vdsfich = BLOC (condition = "Mode_saisie == 'valeurs ds fichier'",
- Format = SIMP (statut='o', typ = 'TXM', into = ['txt','Med',] ),
+ Format = SIMP (statut='o', typ = 'TXM', into = ['txt','Med',], position='global' ),
td_txt = BLOC_FICHIER (condition = 'Format == "txt"',
Fichier = SIMP(statut='o', typ = ('Fichier','Text Files(*.txt);All Files (*)'),),
),
),
)
-
-
-def bloc_description_particule_manuelle (fonction_type_de_description) :
- return BLOC ( condition = 'type_description_particule == "manuelle"',
- Nombre_D_Especes = SIMP(statut = 'o', typ = 'I', defaut =1,),
- Consigne = SIMP(statut ="o", homo="information", typ="TXM", defaut = " definir autant d espece que le nombre d especes"),
- Espece = FACT ( statut='o', max = "**",
- Particule = apply(fonction_type_de_description),
- ), # fin fact Espece
- ) # end b_manuelle
-def bloc_description_particule_tableau (nbReels, labels):
- return BLOC ( condition = 'type_description_particule == "tableau"',
- Nombre_D_Especes = SIMP(statut = 'o', typ = 'I', defaut =1,),
- Consigne = SIMP(statut ="o", homo="information", typ="TXM", defaut = " definir autant d espece que le nombre d especes"),
- Espece = FACT ( statut='o', max = "**",
- Particules = SIMP( fenetreIhm='Tableau', homo = labels,
- statut='o', min=2, max='**',
- typ = Tuple(nbReels),
- validators=VerifTypeTuple(("'R',"*nbReels),),) # end Particule
- ), # fin fact Espece
- ) # end b_tableau
-
-def creeSurfaceElementaire(MC) :
- # PNPN pour qu eric puisse tester
- MC.creeObjetClasse(Surface_Elementaire)
- return
-
-#
+def BlocPourLesFichiers (laCondition, NomDuFichier, ListeFormats):
+ SIMPFormatFichier = SIMP(statut='o', typ = 'TXM', into = tuple(ListeFormats) + ('others',), )
+ dicoDesBlocs = {}
+ for formatFich in ListeFormats :
+ nomBloc = 'b_format_fichier' + str(formatFich)
+ typeDesFichiers = ('Fichier', formatFich + " Files (*." + formatFich + ");;All Files (*)",)
+ blocCondition ="Format_Fichier == '" + formatFich + "'"
+ dicoDesBlocs[nomBloc] = BLOC_FICHIER ( condition = blocCondition, NomDuFichier = SIMP(statut='o', typ = typeDesFichiers ),)
+ dicoDesBlocs['b_format_fichier_others'] = BLOC_FICHIER (condition="Format_Fichier == 'others'", NomDuFichier = SIMP(statut='o', typ = ('Fichier','All Files (*)'),),)
+ return BLOC(condition=laCondition, Format_Fichier = SIMPFormatFichier, **dicoDesBlocs)
+
-dict_Composant = { "Usecase Silvia" : ['Particule'],
- "Ecoulement_diphasique_disperse" : ['Particule', 'Fluide','Solide','Plasma',]
- }
-JdC = JDC_CATA('Vimmp')
+# ____________________________________________________________________________________________ #
+JdC = JDC_CATA(code='Vimmp',fichierSource=monFichier)
-Etude = PROC (nom = 'Etude',
- Titre = SIMP(statut='o', typ = 'TXM'),
+Etude = OPER (nom = 'Etude', sd_prod = StudySD,
+ Titre = SIMP(statut='o', typ = 'TXM'),
+ Temps_Simule = FACT(statut='o',
+ Temps_Initial = SIMP(statut='o', typ = 'R'),
+ Duree = SIMP(statut='o', typ = 'R'),
+ ),
+#
Domaine_Geometrique= FACT( statut='o',
- Forme = SIMP(statut='o', typ = 'TXM',into = ['Forme Simplifiee', 'CAO ou Maillage']),
- b_Forme = BLOC( condition = 'Forme == "Forme Simplifiee"',
- Boite = SIMP(statut='o', typ = 'TXM',into = ['Cube', 'Boule',] ),
+ Forme = SIMP(statut='o', typ = 'TXM',into = ['Forme Simplifiee', 'CAO ou Maillage']),
+ b_Forme = BLOC( condition = 'Forme == "Forme Simplifiee"',
+ Boite = SIMP(statut='o', typ = 'TXM',into = ['Cube', 'Sphere','Cylindre'] ),
b_Cube = BLOC( condition = 'Boite == "Cube"',
- Taille_Boite_Englobante = SIMP(statut='o', typ = 'R', max=3, min =3)
- # derait etre un Tuple(3) mais a faire apres la projection
+ #Taille_Boite_Englobante = SIMP(statut='o', typ = 'R', max=3, min =3)
+ # derait etre un Tuple(3) mais a faire apres la projection
+ Taille_Boite_Englobante = SIMP(statut='o', typ= Tuple(3), validators=VerifTypeTuple(('R','R','R'),),)
), # fin b_Cube
b_Boule = BLOC( condition = 'Boite == "Sphere"',
Centre = SIMP(statut='o', typ = 'R', max=3, min =3),
- Rayon = SIMP(statut='o', typ = 'R') ,
- # derait etre un Tuple(3) mais a faire apres la projection
- ), # fin b_Sphere
- ), # fin b_Forme
- b_CAO = BLOC ( condition="Forme == 'CAO ou Maillage'" ,
- format_fichier = SIMP (statut='o', typ = 'TXM', into = ['txt','Med','I-deas', 'Gmsh', 'Harpoon', 'Simail', 'Star-CCM'], ),
- # PNPN -> generer tous les blocs
- # faire un mot clef pour avoir une projection qui permet le concatenation des into ?
- b_format_fichier_med = BLOC ( condition="format_fichier == 'Med'",
- Fichier_Domaine= SIMP(statut='o', typ = ('Fichier','Med Files(*.med);All Files (*)'),),
- ),
- ),# fin b_CAO
+ # devrait etre un Tuple(3) mais a faire apres la projection
+ ),# fin b_Boule
+ b_Cylindre = BLOC( condition = 'Boite == "Cylindre"',
+ Hauteur = SIMP(statut = "o", typ = 'R', val_min=0.0, ang='Nanotube length [m]'),
+ ),# fin b_Tube
+ b_Boule_ou_Cylindre = BLOC( condition = 'Boite == "Sphere" or Boite == "Cylindre"',
+ Rayon = SIMP(statut='o', typ = 'R', val_min=0.0, ang='radius length [m]') ,
+ ),# fin b_Boule_ouCylindre
+ ), # fin b_Forme
+#
+ b_CAO = BlocPourLesFichiers ("Forme == 'CAO ou Maillage'",'Fichier_Domaine', ['txt','med','I-deas', 'Gmsh', 'top',]),
surface_Elementaire=SIMP(statut= 'o',typ= 'TXM',max='**', siValide=creeSurfaceElementaire),
- essai=SIMP(statut= 'o',typ= Surface_Elementaire),
-
- ), # fin Domaine_Geometrique
+ ), # fin Domaine_Geometrique
+# ------------------- Composant_Du_Systeme -----------------------------#
Composant_Du_Systeme= FACT( statut='o', max = "**",
-# #EF : Je ne ferais pas apparaître ici l'hybridation via le max=2
-# # J'attendrais de définir la méthode numérique...
Composant = SIMP(statut='o', typ = 'TXM',into = ['Particule', 'Fluide','Solide','Plasma'], position = 'global'),
Niveau_De_Description = FACT ( min=1, max= 2, statut='o',
Niveau_De_Description_Generale = SIMP( statut ='o', typ = 'TXM',into = ['Microscopique','Mesoscopique', 'Macroscopique']),
-
- # PNPN voir le global qui ne fonctionne pas
- #b_Mesoscopique_Particule = BLOC( condition = "Niveau_De_Description_Generale == 'Mesoscopique' ",
b_Mesoscopique_Particule = BLOC( condition = "Niveau_De_Description_Generale == 'Mesoscopique' and Composant == 'Particule'",
Description_Physique = FACT( statut = 'o',
- Electrostatics = SIMP( statut='o', typ=bool, defaut=False, position ='global'),
+ Electrostatics = SIMP( statut='o', typ=bool, defaut=False, position ='global'),
Nombre_D_Especes = SIMP( statut = 'o', typ = 'I', defaut =1, position ='global_jdc'),
Espece = FACT( statut='o', max = "**",
Nom_De_L_Espece = SIMP( statut='o', typ = 'TXM'),
Modele_De_Particule = FACT ( statut='o', max ='**',
Type_D_Approche = SIMP(statut='o', typ = 'TXM',into =['Cinetique', 'Cinetique_Etendue', 'Position']),
), # Modele_De_Particule
- Modele_Numerique = FACT ( statut='o',
+ Definition_Modele_Numerique = FACT ( statut='o',
Modele_Numerique = SIMP (statut = 'o', typ = 'TXM', into = ['MD', 'DPD'], defaut ='DPD'),
b_DPD = BLOC(condition = 'Modele_Numerique == "DPD"' ,
Structure_Loi_evolution = SIMP (statut = 'o', typ = 'TXM', into = ['Equations de Langevin']),
b_periodique = BLOC( condition = "Type_Conditions_Limites == 'Periodique'",
Direction = SIMP(statut='o', typ = 'TXM', into = ['X','Y','Z', 'all']),
), # b_periodique
- b_Variable = BLOC( condition = "Porte_Sur_Tout_le_Vecteur == False ",
+ b_Variable_CL = BLOC( condition = "Porte_Sur_Tout_le_Vecteur == False ",
Variable_Du_Vecteur_Etat = SIMP(statut='o', typ = 'TXM'),
), # b_Variable
), # Conditions_Aux_Limites
Conditions_Initiales = FACT ( statut ='o', # 1 par valeur du vecteur d etat
Porte_Sur_Tout_le_Vecteur = SIMP(statut='o', typ = bool),
- b_Variable = BLOC( condition = "Porte_Sur_Tout_le_Vecteur == False ",
+ b_Variable_CI = BLOC( condition = "Porte_Sur_Tout_le_Vecteur == False ",
Condition_Initiale_Par_Variable = FACT ( max = "**", statut ='o',
Variable_Du_Vecteur_Etat = SIMP(statut='o', typ = 'TXM'),
Type_Conditions_Initiales = SIMP( statut='o', typ= 'TXM', into =['Distribution Initiale Vecteur Etat', 'Valeurs Vecteur Etat Initiales'], position ='global'),
),# Condition_Initiale_Par_Variable
), # b_Globale
), # Conditions_Initiales
-
) # Etude
-# # Systeme physique : met en oeuvre 1 ou plusieurs des 4 entites ELectron
-# # Atome Coarse CVE (en check) but de l etude
-# # plasma, solid, fluid , particule
-# # met en oeuvre des composants principaux puis a quel niveau
-# # sous systeme physique elementaire pour composant principal
-# #
-# Niveau_De_Description = SIMP(statut='o', max= '**',typ ='TXM', into = ['Microscopic','Mesoscopic', 'Macroscopic',], homo= 'SansOrdreNiDoublon',position='global') ,
-# Type_De_Description = SIMP( statut='o', max= '**',homo ='SansOrdreNiDoublon',typ ='TXM', into = ['Modele Particulaire','Particulaire Stochastique','Automate sur reseau','Lagrangien Stochastique'],position='global') ,
-# Modele_numeric = SIMP( statut='o', max= '**',homo ='SansOrdreNiDoublon',typ ='TXM', into = ['MD','DPD', 'DEM', 'CFD','LBM'],position='global') ,
-# # selon les types de description on aura un modele de description de particules =
-# # vecteur d etat ( approche cinetique et approche cinetique etendue ( electromagnetisme ou charge ...)) (independant du nb d espece)
-# # on peut avoir des vecteurs d etat differents pour chacune des especes mais un vecteur d etat seulement par espece (differentes especes )
-# #
-# #
-# # en ddp la loi de comportement est donnée
-# # DPD - > approche cinetique
-# # on choisit la structure de loi d evolution = langevin
-# # expression de la force conservative = loi de comportement (p33) _ MR (0 ou n)
-# # pour la m loi d evolution avec parametres fixes standalone
-# # pour la m loi d evolution avec parametres sont donnes par 1 ou +sieurs calculs (surtout en CFD pour +sieurs calcul pour chaque niveau) (hybride)
-# # on pourrait ne pas avoir de loi de comportement mais des parametres de la loi d evolution
-# # fermeture des contraintes : q faire sur une quantite numerique
-# # il y a des familles de structure de loi d evolution en fonction du couple ( modele de description et du modele numerique )
-# # DPD : 1 structure de loi d evolution : 3 termes
-# # 1 et 1 seule structure de loi d evolution par modele numerique (inverse pas vrai : si langevin par forcement DPD)
-# #Entite = SIMP(statut='o', max= '**',homo ='SansOrdreNiDoublon',typ ='TXM', into = ['element','atomic', 'grain', 'CVE (cont volume)'],position='global'),
-# #method_numeric = SIMP(statut='o', typ ='TXM', into = ['DPD ', 'SDPD']),
-# type_de_methode= SIMP(statut='o', typ ='TXM', into = ['stand_alone', 'hybride'])
-# # MD = molecular dynamics (= microscopic)
-# # CFD = computational fluid dynamics (= macroscopic)
-# # DPD = Dissipative Particule dynamics (= meso)
-# # DEM = Discrete Element Method
-# # ----------------------------------------------
-# #b_DEM = BLOC (condition = 'Type_Etude == "DEM"',
-# # ----------------------------------------------
-# # type_description_particule = SIMP(statut = 'o', typ ='TXM', into =['fichier', 'tableau', 'manuelle'],position = 'global'),
-# # b_fichier = bloc_description_particule_fichier(),
-# # b_tableau = bloc_description_particule_tableau (9, ('Ux','Uy', 'Uz,', 'Vx','Vy', 'Vz','Rx','Ry','Rz')),
-# # b_manuelle = bloc_description_particule_manuelle(description_manuelle_particule_DEM),
-# # ), # fin b_DEM
-#
-# # ------------------------------------------------
-## b_CFD = BLOC (condition = 'Type_Etude == "CFD"',
-## # -----------------------------------------------
-## Ecoulement = SIMP(statut='o', typ ='TXM', into = ['Laminaire','Turbulent']),
-## FLuid = FACT( statut = 'o',
-## Masse_Volumique = SIMP(statut='o', typ='R', ),
-## Viscosite_cinetique = SIMP(statut='o', typ='R', ),
-## Diffusivite_thermique = SIMP(statut='f', typ='R', ),
-## Diffusivite_des_especes = SIMP(statut='f', typ='R', max = '**'),
-## ),
-##
-## #Particule = FACT( statut = 'o', max="**",
-## # Description_Cinetique = Description_manuelle_Particule_Cinetique_etendue(),
-## # ),
-## # type_description_particule = SIMP(statut = 'o', typ ='TXM', into =['fichier', 'tableau', 'manuelle'],position = 'global'),
-## # b_fichier = bloc_description_particule_fichier(),
-## #b_tableau = bloc_description_particule_tableau (9, ('Ux','Uy', 'Uz,', 'Vx','Vy', 'Vz','Rx','Ry','Rz')),
-## ), # fin b_CFD
-##
-## b_MD = BLOC (condition = 'Type_Etude == "MD"',
-## type_description_particule = SIMP(statut = 'o', typ ='TXM', into =['fichier', 'tableau', 'manuelle'],position = 'global'),
-## b_fichier = bloc_description_particule_fichier(),
-## b_tableau = bloc_description_particule_tableau (6, ('Ux','Uy', 'Uz,', 'Vx','Vy', 'Vz')),
-## b_manuelle = bloc_description_particule_manuelle(description_manuelle_particule_cinetique),
-##
-## Materiel_Relation = FACT( statut ='f',
-## Entree_Possible= SIMP(statut='o', typ ='TXM', into = ['calcul', 'fichier']),
-## b_fichier = BLOC (condition = "Entree_Possible == 'fichier'",
-## fichier_MR= SIMP(statut='o', typ= ('Fichier','All Files (*)')),
-## ),
-## ),
-## ), # fin b_MD
-## # ---------------------------------------------
-## b_DPD = BLOC (condition = 'Type_Etude == "DPD"',
-## # ---------------------------------------------
-## type_description_particule = SIMP(statut = 'o', typ ='TXM', into =['fichier', 'tableau', 'manuelle'],position = 'global'),
-## b_fichier = bloc_description_particule_fichier(),
-## b_tableau = bloc_description_particule_tableau (6, ('Ux','Uy', 'Uz,', 'Vx','Vy', 'Vz')),
-## b_manuelle = bloc_description_particule_manuelle(description_manuelle_particule_cinetique),
-## Thermostat = SIMP(statut='o', typ='R', ),
-## ),
-##)
-### ),
-### ),
-#)
-### #Fluid = SIMP(statut='o', typ ='TXM', into ='Laminaire', 'Trubulent'])
-### # Temperature = SIMP(statut='f', typ='R', ),
-### # Concentration = SIMP(statut='f', typ='R'),
-### # Diffusivite = SIMP(statut='f', typ='R'),
-### # Frottement = SIMP(statut='f', typ='R'),
-### # Concentration = SIMP(statut='f', typ='R'),
-### #),
-###
-###
+Run_Option = PROC ( nom='Run_Option',
+ MyStudy = SIMP (statut ='o', typ = StudySD ),
+ Working_Dir = SIMP( statut='f', typ= 'TXM'), #
+ Input_Files = FACT( statut ='o',
+ Type_Topology_File = SIMP( statut='o', typ= 'TXM', into=['geo']),
+ Topology_File = SIMP( statut='o', typ= 'TXM'),
+ ),
+ Output_Files = FACT ( statut ='o',
+ Output_File = SIMP( statut='f', typ= 'TXM'),
+ ),
+ )# Run_Option
+
+
+DicoNomTypeDifferentNomElt={'T_Type_Interaction': {'_Type_Interaction_Interaction_Par_Paire_b_Interactionparpaire_Description_Physique_b_Mesoscopique_Particule_Niveau_De_Description_Composant_Du_Systeme_Etude': 'T_Type_Interaction',
+ '_Type_Interaction_Interaction_champ_moyen_b_champ_moyen_Description_Physique_b_Mesoscopique_Particule_Niveau_De_Description_Composant_Du_Systeme_Etude': 'T_Type_Interaction_1',
+ '_Type_Interaction_Interaction_champ_moyen_dynamique_b_champ_moyen_dynamique_Description_Physique_b_Mesoscopique_Particule_Niveau_De_Description_Composant_Du_Systeme_Etude': 'T_Type_Interaction_2'}}
+
+
+#def bloc_description_particule_tableau (nbReels, labels):
+# return BLOC ( condition = 'type_description_particule == "tableau"',
+# Nombre_D_Especes = SIMP(statut = 'o', typ = 'I', defaut =1,),
+# Consigne = SIMP(statut ="o", homo="information", typ="TXM", defaut = " definir autant d espece que le nombre d especes"),
+# Espece = FACT ( statut='o', max = "**",
+# Particules = SIMP( fenetreIhm='Tableau', homo = labels,
+# statut='o', min=2, max='**',
+# typ = Tuple(nbReels),
+# validators=VerifTypeTuple(("'R',"*nbReels),),) # end Particule
+# ), # fin fact Espece
+# ) # end b_tableau