# -*- coding: iso-8859-1 -*- # #------------------------------------------------------------------------------- # Code_Saturne version 1.3 # ------------------------ # # # This file is part of the Code_Saturne User Interface, element of the # Code_Saturne CFD tool. # # Copyright (C) 1998-2007 EDF S.A., France # # contact: saturne-support@edf.fr # # The Code_Saturne User Interface 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 2 of # the License, or (at your option) any later version. # # The Code_Saturne User Interface 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 the Code_Saturne Kernel; if not, write to the # Free Software Foundation, Inc., # 51 Franklin St, Fifth Floor, # Boston, MA 02110-1301 USA # #------------------------------------------------------------------------------- """ This module defines the XML calls for ecs execution This module contains the following classes and function: - SolutionDomainModel """ #------------------------------------------------------------------------------- # Library modules import #------------------------------------------------------------------------------- import sys, unittest import os, sys, string, types #------------------------------------------------------------------------------- # Class #------------------------------------------------------------------------------- class SolutionDomainModel: """ This class allow to call function for fill saturne running file (lance) """ def __init__(self, case): """ Simple constructor. """ # TODO: remplacer cutting par splitting # TODO: remplacer solution_domain par solution_domain # TODO: remplacer standalone par verification # TODO: deplacer le contenu de miscellaneous dans batch_running self.case = case self.node_ecs = self.case.xmlGetNode('solution_domain') # self.node_meshes = self.node_ecs.xmlInitNode('meshes') self.node_meshes = self.node_ecs.xmlInitNode('meshes_list') self.node_paste = self.node_ecs.xmlGetNode('paste_meshes', "status") self.node_cut = self.node_ecs.xmlGetNode('faces_cutting', "status") self.node_syrthes = self.node_ecs.xmlGetNode('syrthes_coupling', "status") self.node_perio = self.node_ecs.xmlGetNode('periodic_boundary', "status") ## self.node_miscel = self.node_ecs.xmlGetNode('miscellaneous') self.node_standalone = self.node_ecs.xmlInitNode('standalone') ## self.node_post = self.node_standalone.xmlInitNode('post-processing', 'status', format="ensight7 gold") ## self.node_med = self.node_standalone.xmlInitNode('post-processing', 'status', format="med") def defaultValues(self): """ Return a dictionnary with default values """ defvalue = {} defvalue['paste_status'] = "off" defvalue['cutting_status'] = "off" defvalue['fraction'] = "0.1" defvalue['plan'] = "0.8" defvalue['angle'] = "0.01" defvalue['syrth_status'] = "off" defvalue['echo_status'] = "off" defvalue['echo_elt_nb'] = "5" defvalue['sim_status'] = "on" defvalue['verif_mail'] = "on" defvalue['ens_status'] = "on" defvalue['med_status'] = "off" defvalue['dir_cas'] = "cas_defaut" defvalue['poly_status'] = "off" defvalue['perio_status'] = "off" defvalue['dx'] = "0.0" defvalue['dy'] = "0.0" defvalue['dz'] = "0.0" defvalue['rx'] = "0.0" defvalue['ry'] = "0.0" defvalue['rz'] = "0.0" defvalue['px'] = "0.0" defvalue['py'] = "0.0" defvalue['pz'] = "0.0" defvalue['rangle'] = "0.0" defvalue['m11'] = "0.0" defvalue['m12'] = "0.0" defvalue['m13'] = "0.0" defvalue['m21'] = "0.0" defvalue['m22'] = "0.0" defvalue['m23'] = "0.0" defvalue['m31'] = "0.0" defvalue['m32'] = "0.0" defvalue['m33'] = "0.0" return defvalue def getMeshList(self): """ Return the meshes name list already put in the case. """ meshList = [] nodeList = self.node_meshes.xmlGetNodeList('mesh', 'name') for node in nodeList: meshList.append(node['name']) return meshList def setMesh(self, mesh, format): """ Add mesh name in xml file """ if self.node_meshes: self.node_meshes.xmlInitNode('mesh', name=mesh, format=format) def delMesh(self, mesh): """ Delete node for mesh named "mesh" in xml file """ nodeList = self.node_meshes.xmlGetNodeList('mesh', 'name') for node in nodeList: if node['name'] == mesh: node.xmlRemoveNode() def getPasteMeshesStatus(self): """ Get status on balise "paste_meshes" from xml file """ status = "" if self.node_paste: status = self.node_paste['status'] return status def setPasteMeshesStatus(self, status): """ Put status on balise "paste_meshes" in xml file """ if self.node_paste: self.node_paste['status'] = status else: self.node_paste = self.node_ecs.xmlInitNode('paste_meshes', status=status) def getListNodes(self, parentNode, tagName): """ Return node corresponding at the selection """ listNode = parentNode.xmlGetNodeList(tagName) return listNode def getCutStatus(self): """ Get status on balise "faces_cutting" from xml file """ status = "" if self.node_cut: status = self.node_cut['status'] return status def setCutStatus(self, status): """ Put status on balise "faces_cutting" in xml file """ if self.node_cut: self.node_cut['status'] = status else: self.node_cut = self.node_ecs.xmlInitNode('faces_cutting', status=status) def getFacesPeriodicSelection(self, perio): """ Return faces selection for periodic transformation """ line ='' node, mode = self.getPeriodicNumberNode(perio) list = node.xmlGetNodeList('faces_periodic', status="on") for n in list: line = n.xmlGetString('faces_color') return line def getFacesSyrthesSelection(self): """ Return faces selection for syrthes """ line ='' list = self.node_syrthes.xmlGetNodeList('faces_syrthes', status="on") for n in list: line = n.xmlGetString('faces_color') return line def setFacesSelect(self, node, tagName, select): """ Uptodate xml file if we add select in ListBox """ if tagName == 'faces_syrthes'or tagName == 'faces_select': select['fraction'] ="" select['plan'] = "" if tagName == 'faces_select': select['type'] ="" if node['status'] == 'on': for sel, txt in [ (select['color'], 'faces_color'), (select['group'], 'faces_group'), (select['fraction'], 'faces_fraction'), (select['plan'], 'faces_plan')]: if sel: node.xmlSetData(txt, sel) else: node.xmlRemoveChild(txt) n = node.xmlGetChildNode('faces_type') if n: n.xmlRemoveNode() if select['reverse'] == 'on': node_revers = node.xmlInitNode('faces_reverse',status=select['reverse']) else: node.xmlRemoveChild('faces_reverse') if select['semiconf'] == 'on': node_semiconf = node.xmlInitNode('faces_semi_conf',status=select['semiconf']) else: node.xmlRemoveChild('faces_semi_conf') def getValue(self, node, var): """ Return node corresponding at the selection """ val = node.xmlGetDouble(var) return val def getFaces(self, node): """ Return values found for color, group .. for node "node" """ default = {} default['color'] ="" default['group'] = "" default['fraction'] = "" default['plan'] = "" default['type'] = "" default['reverse'] = "" default['semiconf'] = "" if node: default['color'] = node.xmlGetString('faces_color') default['group'] = node.xmlGetString('faces_group') default['fraction'] = node.xmlGetString('faces_fraction') default['plan'] = node.xmlGetString('faces_plan') default['type'] = node.xmlGetString('faces_type') n_revers = node.xmlGetNode('faces_reverse','status') if n_revers: default['reverse'] = n_revers['status'] else: default['reverse'] = "off" n_semi_conf = node.xmlGetNode('faces_semi_conf','status') if n_semi_conf: default['semiconf'] = n_semi_conf['status'] else: default['semiconf'] = "off" return default def getFacesSelect(self, nodeList, n): """ Return default filled with values found for color, group .. """ node = nodeList[n] return self.getFaces(node) def getStatus(self, parent, tagName): """ Return status for node with parent "parent" and tagName "tagname" """ node = parent.xmlInitNode(tagName, 'status') status = node['status'] return status def getStatusNode(self, node): """ Return status for node "node" """ if node : status = node['status'] return status def setStatusNode(self, node, status): """ Put status for node "node" """ if node: node['status'] = status def getNodeAdd(self, parentNode, tagName, perio): """ Return node corresponding at the selection """ if tagName == "faces_periodic": node, mode = self.getPeriodicNumberNode(perio) childNode = node.xmlAddChild(tagName, status="on") else: childNode = parentNode.xmlAddChild(tagName, status="on") return childNode def delNode(self, node): """ Remove node "node" """ node.xmlRemoveNode() def setCutAngle(self, var): """ input '-dec-faces' parameter. """ if self.node_cut: if var == self.defaultValues()['angle']: self.node_cut.xmlRemoveChild('warp_angle_max') else: self.node_cut.xmlSetData('warp_angle_max', var) def getCutAngle(self): """ get '-dec-faces' parameters. """ angle ="" if self.node_cut: angle = self.node_cut.xmlGetString('warp_angle_max') return angle def getSyrthesCouplingStatus(self): """ Get status on balise "syrthes_coupling" in xml file """ status = "" if self.node_syrthes: status = self.node_syrthes['status'] if status not in ("on", "off"): status = self.defaultValues()['syrth_status'] self.node_syrthes['status'] = status return status def setSyrthesCouplingStatus(self, status): """ Put status on balise "syrthes_coupling" in xml file """ if self.node_syrthes: self.node_syrthes['status'] = status else: self.node_syrthes = self.node_ecs.xmlInitNode('syrthes_coupling', status=status) def getSyrthes2dMeshStatus(self): """ Return status of balise "'syrthes_mesh_2d'" from xml file """ status = "" node = self.node_syrthes.xmlGetNode('syrthes_mesh_2d', 'status') if node : status = node['status'] return status def setSyrthes2dMeshStatus(self, status): """ Put status of balise 'syrthes_mesh_2d' into xml file """ if self.node_syrthes: node = self.node_syrthes.xmlInitNode('syrthes_mesh_2d', 'status') if node: node['status'] = status def delSyrthes2dMeshNode(self): """ Put status of balise 'syrthes_mesh_2d' into xml file """ node = self.node_syrthes.xmlInitNode('syrthes_mesh_2d', 'status') if node: node.xmlRemoveNode() def getPeriodicStatus(self): """ Get status on balise "periodic_boundary" in xml file """ status = "" if self.node_perio: status = self.node_perio['status'] if status not in ("on", "off"): status = self.defaultValues()['perio_status'] self.node_perio['status'] = status return status def setPeriodicStatus(self, status): """ Put status on balise "periodic_boundary" in xml file """ if self.node_perio: self.node_perio['status'] = status else: self.node_perio = self.node_ecs.xmlInitNode('periodic_boundary', status=status) if status == "on": nodeList = self.node_perio.xmlGetNodeList('transformation', 'mode', 'status') if len(nodeList) == 0: self.node_perio.xmlAddChild('transformation', mode="translation", status="on") self.node_perio.xmlAddChild('transformation', 'mode', status="off") self.node_perio.xmlAddChild('transformation', 'mode', status="off") def setPeriodicNumberNode(self, perio, new_mode, old_mode): """ Set node of transformation in periodic boundary for periodicity number "perio" and for mode "mode" """ #pour le moment perio =1 : 1 seule transformation autorisée pour le moment flag = 0 i = 0 nodeList = self.node_perio.xmlGetNodeList('transformation', 'mode', 'status') for n in nodeList: i = i + 1 if n['status'] == "on" and n['mode'] == old_mode: n['status'] = 'off' else: if n['mode'] == new_mode: n['status'] = 'on' flag = 1 return if flag == 0: for nd in nodeList: ## if n['status'] != 'on': if nd['status'] == 'off' and nd['mode'] == "": nd['status'] = 'on' nd['mode'] = new_mode flag = 1 return else: flag = 2 if flag == 2: for n in nodeList: if n['status'] == 'off' and n['mode'] != "old_mode": n['status'] = 'on' n['mode'] = new_mode flag = 1 return def getPeriodicNumberNode(self, perio): """ Get node of transformation in periodic boundary for periodicity number "perio" """ #pour le moment perio =1 : 1 seule transformation autorisée pour le moment perio = perio - 1 mode_perio = "" node_perio = "" nodeList = self.node_perio.xmlGetNodeList('transformation', 'mode', 'status') for node in nodeList: if node['status'] == 'on': node_perio = node mode_perio = node['mode'] return node_perio, mode_perio def getPeriodicTransformation(self, perio): """ Get mode of transformation in periodic boundary for periodicity number "perio" """ #pour le moment perio = 1 mode ="" node, mode = self.getPeriodicNumberNode(perio) return mode def setPeriodicTransformation(self, perio, mode): """ Put mode of transformation in periodic boundary """ node, mode_perio = self.getPeriodicNumberNode(perio) if mode_perio != mode: self.setPeriodicNumberNode(perio, mode, mode_perio) node, mode_perio = self.getPeriodicNumberNode(perio) mode_list = ('translation', 'rotation1', 'rotation2') if mode in mode_list: nList = node.xmlGetChildNodeList(mode) if not nList: if mode =="translation": self.setTranslationDefault(perio) if mode =="rotation1": self.setRotation1Default(perio) if mode =="rotation2": self.setRotation2Default(perio) else: if mode =="tr+rota1": nList1 = node.xmlGetChildNodeList('translation') nList2 = node.xmlGetChildNodeList('rotation1') if not nList1 : self.setTranslationDefault(perio) if not nList2 : self.setRotation1Default(perio) elif mode =="tr+rota2": nList1 = node.xmlGetChildNodeList('translation') nList2 = node.xmlGetChildNodeList('rotation2') if not nList1 : self.setTranslationDefault(perio) if not nList2 : self.setRotation2Default(perio) def getTranslationDir(self, perio): """ Get values of translation for periodic translation """ dx = "" dy = "" dz = "" node, mode = self.getPeriodicNumberNode(perio) ntransList = node.xmlGetChildNodeList('translation') if ntransList: for n in ntransList: if n: dx = n.xmlGetString('translation_x') dy = n.xmlGetString('translation_y') dz = n.xmlGetString('translation_z') return dx, dy, dz def setTranslationDefault(self, perio): """ Put default values of translation for periodic translation """ node, mode = self.getPeriodicNumberNode(perio) if node: nList = node.xmlInitChildNodeList('translation') for n in nList: n.xmlSetData('translation_x', self.defaultValues()['dx']) n.xmlSetData('translation_y', self.defaultValues()['dy']) n.xmlSetData('translation_z', self.defaultValues()['dz']) def setTranslationDir(self, perio, dir, valcoor): """ Put values of translation for periodic translation """ node, mode = self.getPeriodicNumberNode(perio) if node: ntransList = node.xmlGetChildNodeList('translation') for n in ntransList: n.xmlSetData(dir,valcoor) def getRotationDir(self, perio): """ Get values for director vector rotation for periodic translation """ rx = "" ry = "" rz = "" node, mode = self.getPeriodicNumberNode(perio) nList = node.xmlGetChildNodeList('rotation1') for n in nList: if n: rx = n.xmlGetString('rotation_x') ry = n.xmlGetString('rotation_y') rz = n.xmlGetString('rotation_z') return rx, ry, rz def setRotation1Default(self, perio): """ Put default values of translation for periodic translation """ node, mode = self.getPeriodicNumberNode(perio) nList = node.xmlInitChildNodeList('rotation1') for n in nList: n.xmlSetData('rotation_angle', self.defaultValues()['rangle']) n.xmlSetData('rotation_x', self.defaultValues()['rx']) n.xmlSetData('rotation_y', self.defaultValues()['ry']) n.xmlSetData('rotation_z', self.defaultValues()['rz']) n.xmlSetData('rotation_center_x', self.defaultValues()['px']) n.xmlSetData('rotation_center_y', self.defaultValues()['py']) n.xmlSetData('rotation_center_z', self.defaultValues()['pz']) def setRotation2Default(self, perio): """ Put default values of translation for periodic translation """ node, mode = self.getPeriodicNumberNode(perio) nList = node.xmlInitChildNodeList('rotation2') for n in nList: n.xmlSetData('rotation_matrix_11', self.defaultValues()['m11']) n.xmlSetData('rotation_matrix_12', self.defaultValues()['m12']) n.xmlSetData('rotation_matrix_13', self.defaultValues()['m13']) n.xmlSetData('rotation_matrix_21', self.defaultValues()['m21']) n.xmlSetData('rotation_matrix_22', self.defaultValues()['m22']) n.xmlSetData('rotation_matrix_23', self.defaultValues()['m23']) n.xmlSetData('rotation_matrix_31', self.defaultValues()['m31']) n.xmlSetData('rotation_matrix_32', self.defaultValues()['m32']) n.xmlSetData('rotation_matrix_33', self.defaultValues()['m33']) n.xmlSetData('rotation_center_x', self.defaultValues()['px']) n.xmlSetData('rotation_center_y', self.defaultValues()['py']) n.xmlSetData('rotation_center_z', self.defaultValues()['pz']) def setRotationDir(self, perio, dir, valcoor): """ Put values for director vector rotation for periodic translation """ node, mode = self.getPeriodicNumberNode(perio) nodeList = node.xmlGetChildNodeList('rotation1') for n in nodeList: n.xmlSetData(dir,valcoor) def getRotationAngle(self, perio): """ Get angle for ratation for periodic rotation """ angle = "" node, mode = self.getPeriodicNumberNode(perio) nList = node.xmlGetChildNodeList('rotation1') for n in nList: if n: angle = n.xmlGetString('rotation_angle') return angle def setRotationAngle(self, perio, angle): """ Put angle for rotation for periodic rotation """ node, mode = self.getPeriodicNumberNode(perio) nodeList = node.xmlGetChildNodeList('rotation1') for n in nodeList: n.xmlSetData('rotation_angle',angle) def getRotationCenter(self, perio, mode): """ Get coordinates of center of rotation for periodic transformation """ px = "" py = "" pz = "" node, mode_perio = self.getPeriodicNumberNode(perio) if mode_perio != mode: self.setPeriodicNumberNode(perio, mode, mode_perio) node, mode_perio = self.getPeriodicNumberNode(perio) if mode == "rotation1" or mode == "tr+rota1": nList = node.xmlGetChildNodeList('rotation1') elif mode == "rotation2" or mode == "tr+rota2": nList = node.xmlGetChildNodeList('rotation2') for n in nList: if n: px = n.xmlGetString('rotation_center_x') py = n.xmlGetString('rotation_center_y') pz = n.xmlGetString('rotation_center_z') return px, py, pz def setRotationCenter(self, perio, mode, pos, val): """ Put coordinates of center of rotation for periodic transformation """ node, mode_perio = self.getPeriodicNumberNode(perio) if mode_perio != mode: self.setPeriodicNumberNode(perio, mode, mode_perio) node, mode_perio = self.getPeriodicNumberNode(perio) if node['mode'] == mode: if mode == "rotation1" or mode == "tr+rota1": nList = node.xmlGetChildNodeList('rotation1') elif mode == "rotation2" or mode == "tr+rota2": nList = node.xmlGetChildNodeList('rotation2') for n in nList: n.xmlSetData(pos,val) def getRotationMatrix(self, perio, mode): """ Get values of matrix of rotation for periodic transformation """ m11 = "" m12 = "" m13 = "" m21 = "" m22 = "" m23 = "" m31 = "" m32 = "" m33 = "" node, mode_perio = self.getPeriodicNumberNode(perio) if mode_perio != mode: self.setPeriodicNumberNode(perio, mode, mode_perio) node, mode_perio = self.getPeriodicNumberNode(perio) if mode == "rotation2" or mode == "tr+rota2": nList = node.xmlGetChildNodeList('rotation2') for n in nList: if n: m11 = n.xmlGetString('rotation_matrix_11') m12 = n.xmlGetString('rotation_matrix_12') m13 = n.xmlGetString('rotation_matrix_13') m21 = n.xmlGetString('rotation_matrix_21') m22 = n.xmlGetString('rotation_matrix_22') m23 = n.xmlGetString('rotation_matrix_23') m31 = n.xmlGetString('rotation_matrix_31') m32 = n.xmlGetString('rotation_matrix_32') m33 = n.xmlGetString('rotation_matrix_33') return m11, m12, m13, m21, m22, m23, m31, m32, m33 def setRotationMatrix(self, perio, mode, pos, val): """ Put values of matrix of rotation for periodic transformation """ node, mode_perio = self.getPeriodicNumberNode(perio) if mode_perio != mode: self.setPeriodicNumberNode(perio, mode, mode_perio) node, mode_perio = self.getPeriodicNumberNode(perio) if mode == "rotation2" or mode == "tr+rota2": nodeList = node.xmlGetChildNodeList('rotation2') for n in nodeList: n.xmlSetData(pos,val) # TODO: deplacer les 3 méthodes suivantes dans future classe BatchRunning ## def setEchoCommStatus(self, status): ## """ ## Put status of balise ''echo_communication' into xml file ## """ ## if self.node_miscel: ## self.node_miscel['status'] = status ## else: ## self.node_miscel = self.node_ecs.xmlInitNode('echo_communication', status=status) ## def setNbElementEchocomm(self, nb): ## """ ## Put value of number of elements when echo-comm is ON in xml file ## """ ## node = self.node_miscel.xmlInitNode('echo_communication') ## numxml = node.xmlGetInt('elements_number') ## if not numxml or nb != numxml: ## node.xmlSetData('elements_number', nb) ## def getEchoCommCommand(self): ## """ ## Get "-echo-comm" command line for enveloppe execution ## """ ## lines = "" ## node = self.node_miscel.xmlInitNode('echo_communication') ## if node['status'] == 'on': ## line = " -echo-comm " ## nb_elmts = node.xmlGetInt('elements_number') ## line = line + str(nb_elmts) +" " ## lines = lines + line ## ## return lines def setSimCommStatus(self, status): """ Put status of balise ''similation_communication' into xml file """ node = self.node_standalone.xmlInitNode('simulation_communication', 'status') if node: node['status'] = status def setAsciiCommStatus(self, status): """ Put status of balise 'ascii_communication' into xml file or remove balise """ node = self.node_standalone.xmlInitNode('ascii_communication', 'status') if status == 'on': node['status'] = status else: node.xmlRemoveNode() def setMeshCheckStatus(self, status): """ Put status of balise 'check_mesh' into xml file """ node = self.node_standalone.xmlInitNode('check_mesh', 'status') if status == 'on': node['status'] = status else: node.xmlRemoveNode() def setEnsightStatus(self, status): """ Put status of balise 'ensight post' into xml file """ self.node_post = self.node_standalone.xmlInitNode('post-processing', 'status', format="ensight7 gold") if self.node_post: self.node_post['status'] = status def getEnsightStatus(self): """ Get status of balise 'ensight post' into xml file """ self.node_post = self.node_standalone.xmlGetNode('post-processing', 'status', format="ensight7 gold") if self.node_post: status = self.node_post['status'] return status def setMedStatus(self, status): """ Put status of balise 'med format post' into xml file """ self.node_med = self.node_standalone.xmlInitNode('post-processing', 'status', format="med") if self.node_med: self.node_med['status'] = status def getMedStatus(self): """ Get status of balise 'med format post' into xml file """ self.node_med = self.node_standalone.xmlGetNode('post-processing', 'status', format="med") if self.node_med: status = self.node_med['status'] return status def createPostDir(self, dir): """ Create a directory else than "cas_defaut" for Ensight """ if self.node_post or self.node_med: if self.node_post['status'] == "on" or self.node_med['status'] == "on": self.node_standalone.xmlSetData('post_directory', dir) def getPostDir(self): """ Get status of balise 'med format post' into xml file """ dir = self.node_standalone.xmlGetString('post_directory') return dir def delPostDir(self): """ Remove balise "post_directory" """ node = self.node_standalone.xmlGetChildNode('post_directory') if node: node.xmlRemoveNode() def setPolygonalNodeStatus(self, status): """ Put status for balise if some faces are not triangle or square, there are cut """ node = self.node_standalone.xmlInitNode('polygonal_faces_cutting', 'status') if node: node['status'] = status def setPolyhedralNodeStatus(self, status): """ Put status for balise if some faces are not triangle or square, there are cut """ node = self.node_standalone.xmlInitNode('polyhedral_faces_cutting', 'status') if node: node['status'] = status def delPolygonalNode(self): """ Remove balise "polygonal_faces_cutting" """ node = self.node_standalone.xmlGetChildNode('polygonal_faces_cutting') if node: node.xmlRemoveNode() def delPolyhedralNode(self): """ Remove balise "polygonal_faces_cutting" """ node = self.node_standalone.xmlGetChildNode('polyhedral_faces_cutting') if node: node.xmlRemoveNode() def getMeshCommand(self): """ Get mesh command line for enveloppe execution """ lines = '' nodeList = self.node_meshes.xmlGetNodeList('mesh', 'name') for meshNode in nodeList: name = meshNode['name'] format = meshNode['format'] f = string.split(string.split(name,".")[1]," ")[0] if f not in ["unv","des","hex","med","cgns","msh","ngeom","case","neu"]: name=string.split(name," ")[0] mesh = self.case['mesh_path'] + '/' + name lines = lines + " -maillage " + mesh + " " if format: lines = lines + " -format " + format + " " return lines def getLineCommand(self, node, line): """ Get color group faces and revers satus and fraction and plan datas for command line to enveloppe execution """ coul = node.xmlGetString('faces_color') grp = node.xmlGetString('faces_group') n_revers = node.xmlGetNode('faces_reverse','status') n_semi_conf = node.xmlGetNode('faces_semi_conf','status') if coul: line = line + " -couleur " + coul +" " if grp: line = line + " -groupe " + grp +" " if n_revers and n_revers['status'] == "on": line = line + " -invsel " if n_semi_conf and n_semi_conf['status'] == "on": line = line + " -semi-conf " return line def getPasteCommand(self): """ Get rc command line for enveloppe execution """ lines = '' if self.node_paste and self.node_paste['status'] == 'on': lines = ' -rc ' node_face_paste_list = self.node_paste.xmlInitNodeList('faces_paste') if node_face_paste_list: for node_face_paste in node_face_paste_list: if node_face_paste['status'] == 'on': linecoul = ' -rc ' lines = self.getLineCommand(node_face_paste, linecoul) fraction = node_face_paste.xmlGetString('faces_fraction') lines = lines + " -fraction " + fraction +" " plan = node_face_paste.xmlGetString('faces_plan') lines = lines + " -plan " + plan +" " lines = lines + ' ' else: lines = ' -rc ' return lines def getCutCommand(self): """ Get dec-faces command line for enveloppe execution """ line = '' if self.node_cut and self.node_cut['status'] == 'on': line = line + ' -dec-faces ' warp = self.getCutAngle() line = line + str(warp) return line def getPerioCommand(self, perio): """ Get perio command line for enveloppe execution """ line = '' if self.node_perio and self.node_perio['status'] == 'on': lineperio = ' -perio ' node_face_perio_list = self.node_perio.xmlGetNodeList('faces_periodic') ##on peut ne rien préciser comme faces pour la périodicité: if node_face_perio_list: for node in node_face_perio_list: if node['status'] == 'on': line = self.getLineCommand(node, lineperio) fraction = node.xmlGetString('faces_fraction') if fraction: line = line + " -fraction " + fraction +" " plan = node.xmlGetString('faces_plan') if plan: line = line + " -plan " + plan +" " else: line = lineperio mode = self.getPeriodicTransformation(perio) if mode == 'translation' or mode == 'tr+rota1' or mode == 'tr+rota2': dx, dy, dz = self.getTranslationDir(perio) line = line + " -trans " + dx +" " + dy +" " + dz +" " if mode == 'rotation1' or mode == 'tr+rota1': angle = self.getRotationAngle(perio) rx, ry, rz = self.getRotationDir(perio) px, py, pz = self.getRotationCenter(perio, mode) line = line + " -rota " + " -angle " + angle + " -dir " + rx +" " + ry +" " + rz +" " + " -ptinv " + px +" " + py +" " + pz +" " if mode == 'rotation2' or mode == 'tr+rota2': m11, m12, m13, m21, m22, m23, m31, m32, m33 = self.getRotationMatrix(perio, mode) px, py, pz = self.getRotationCenter(perio, mode) line = line + " -rota " + " -matrice " + m11 +" " + m12 +" " + m13 +" " + m21 +" " + m22 +" " + m23 +" " + m31 +" " + m32 +" " + m33 +" " + " -ptinv " + px +" " + py +" " + pz +" " return line def getSyrthesCommand(self): """ Get syrthes command line for enveloppe execution """ lines = '' if self.node_syrthes and self.node_syrthes['status'] == 'on': linesyr = ' -syrthes ' node_list = self.node_syrthes.xmlInitNodeList('faces_syrthes') for node in node_list: #n_revers = node.xmlInitNode('faces_reverse','status') if node['status'] == 'on': linesyr = self.getLineCommand(node, linesyr) node_syrth_2d = self.node_syrthes.xmlInitNode('syrthes_mesh_2d', 'status') if node_syrth_2d['status'] == 'on': linesyr = linesyr + " -2d " lines = lines + linesyr return lines def getSimCommCommand(self): """ Get " -sim-comm " command line for enveloppe execution """ lines = '' node = self.node_standalone.xmlInitNode('simulation_communication') if node['status'] == 'on': line = " -sim-comm " lines = lines + line return lines def getVerifMaillCommand(self): """ Get " -verif " command line for enveloppe execution """ lines = '' node = self.node_standalone.xmlInitNode('check_mesh') if node['status'] != 'off': lines = " -verif " return lines def getSelectCommand(self): """ Get "-fac-int" command line for enveloppe execution """ lines = '' ## line = "" node_list = self.node_standalone.xmlGetNodeList('faces_select') for nod in node_list: if nod['status'] == 'on': #n_revers = nod.xmlGetNodeList('faces_reverse','status') line = ' -fac-int ' line = self.getLineCommand(nod, line) #coul = nod.xmlGetString('faces_color') #grp = nod.xmlGetString('faces_group') #if n_revers: rev = n_revers['status'] #if coul: line = line + "-couleur " + coul +" " #if grp: line = line + "-groupe " + grp +" " #if rev == 'on': line = line + "-invsel " ## typ = nod.xmlGetString('faces_type') ## if typ == 'int': line = line + "-int " ## if typ == 'bord': line = line + "-bord " lines = lines + line return lines def getEnsightCommand(self): """ Get "-ensight" command line for enveloppe executiont """ line = '' if self.getEnsightStatus() == 'on': n_decpolygonal = self.node_standalone.xmlGetChildNode('polygonal_faces_cutting','status') n_decpolyhedral = self.node_standalone.xmlGetChildNode('polyhedral_faces_cutting','status') line = ' -ensight ' if n_decpolygonal or n_decpolyhedral: if n_decpolygonal['status'] == 'on' or n_decpolyhedral['status'] == 'on': line = " -ensight -dec-poly " dir = self.getPostDir() if dir and dir != "cas_defaut": line = line + "-cas " + dir +" " ## else: ## line = '' return line def getMedCommand(self): """ Get "-med" command line for enveloppe execution """ lines = '' if self.getMedStatus() == 'on': lines = ' -med ' dir = self.getPostDir() if dir and dir != "cas_defaut": dir = self.getPostDir() lines = lines + "-cas " + dir +" " return lines #------------------------------------------------------------------------------- # SolutionDomain Model test case #------------------------------------------------------------------------------- class SolutionDomainTestCase(unittest.TestCase): """ """ def setUp(self): """ This method is executed before all "check" methods. """ from Base.XMLengine import Case from Base.XMLinitialize import XMLinit from Base.Toolbox import GuiParam GuiParam.lang = 'en' self.case = Case() XMLinit(self.case) def tearDown(self): """ This method is executed after all "check" methods. """ del self.case def xmlNewFile(self): """Private method to return a xml document.""" xmldoc = \ '' +\ '' return xmldoc def checkSolutionDomainInstantiation(self): """ Check whether the SolutionDomainModel class could be instantiated """ model = None model = SolutionDomainModel(self.case) assert model != None, 'Could not instantiate SolutionDomainModel' def checkSetMesh(self): """ Check whether the setMesh could be set """ mdl = SolutionDomainModel(self.case) mdl.setMesh('fdc','des') mdl.setMesh('pic','des') truc = mdl.node_meshes.toString() doc = ''\ ''\ ''\ '' assert doc == truc, \ 'Could not set meshes' def checkGetMeshList(self): """ Check whether the getMeshList could be get """ mdl = SolutionDomainModel(self.case) mdl.setMesh('toto','des') mdl.setMesh('machin','truc') assert mdl.getMeshList() == ['toto','machin'],\ 'Could not get mesh list' def checkDelMesh(self): """ Check whether the delMesh could be set """ mdl = SolutionDomainModel(self.case) mdl.setMesh('toto','des') mdl.setMesh('machin','truc') mdl.delMesh('toto') truc = mdl.node_meshes.toString() doc = '' assert doc == truc, \ 'Could not delete meshes' def checkSetPasteMeshesStatus(self): """ Check whether the status of paste meshes could be set """ mdl = SolutionDomainModel(self.case) mdl.setPasteMeshesStatus('on') truc = mdl.node_paste.toString() doc = '' assert doc == truc, 'could not set status in paste meshes balise' def checkGetPasteMeshesStatus(self): """ Check whether the status of paste meshes could be get """ mdl = SolutionDomainModel(self.case) mdl.setPasteMeshesStatus('on') assert mdl.getPasteMeshesStatus() == 'on',\ 'Could not get status from paste meshes balise' def checkSetFacesSelect(self): """ Check whether the values of color,group ... could be set """ select = {} select['color'] = '1 2 3' select['group'] = 'toto' select['fraction'] = '0.1' select['plan'] = '0.8' select['type'] = '' select['reverse'] = 'off' select['semiconf'] = 'on' mdl = SolutionDomainModel(self.case) mdl.setPasteMeshesStatus('on') node = mdl.getNodeAdd(mdl.node_paste, 'faces_paste', 0) mdl.setFacesSelect(node,'faces_paste',select) truc = mdl.node_paste.toString() doc = ''\ ''\ '1 2 3'\ 'toto'\ '0.1'\ '0.8'\ ''\ ''\ '' assert doc == truc, 'could not set selection for faces' def checkGetFacesSelect(self): """ Check whether the status of paste meshes could be get """ select = {} select['color'] = '1 2 3' select['group'] = 'toto' select['fraction'] = '0.1' select['plan'] = '0.8' select['type'] = '' select['reverse'] = 'off' select['semiconf'] = 'on' mdl = SolutionDomainModel(self.case) mdl.setPasteMeshesStatus('on') node1 = mdl.node_paste.xmlAddChild('faces_paste', status="on") mdl.setFacesSelect(node1,'faces_paste',select) select['color'] = '9 8 7' select['group'] = 'machin' node2 = mdl.node_paste.xmlAddChild('faces_paste', status="on") mdl.setFacesSelect(node2,'faces_paste',select) ## listNode = mdl.node_paste.xmlGetNodeList('faces_paste', status='on') listNode = mdl.getListNodes(mdl.node_paste,'faces_paste') assert mdl.getFacesSelect(listNode, 0) ==\ {'group': 'toto', 'reverse': 'off', 'color': '1 2 3', 'plan': '0.8', \ 'fraction': '0.1', 'semiconf': 'on', 'type': ''},\ 'could not get selection for faces' def checkGetListNodes(self): """ Check whether the list of nodes could be get """ mdl = SolutionDomainModel(self.case) mdl.setPasteMeshesStatus('on') mdl.getNodeAdd(mdl.node_paste, 'faces_paste', 0) mdl.getNodeAdd(mdl.node_paste, 'faces_paste', 0) mdl.getNodeAdd(mdl.node_paste, 'faces_paste', 0) assert len(mdl.getListNodes(mdl.node_paste,'faces_paste')) == 3,\ 'could not get list of nodes' def checkGetStatus(self): """ Check whether the status of node given with parent and tagname could be get """ mdl = SolutionDomainModel(self.case) mdl.setPasteMeshesStatus('on') stat = mdl.getStatus(mdl.node_ecs, 'paste_meshes') assert mdl.getStatus(mdl.node_ecs, 'paste_meshes') == 'on',\ 'could not get status' def checkSetStatusNode(self): """ Check whether the status of node could be set """ mdl = SolutionDomainModel(self.case) mdl.setPasteMeshesStatus('on') node = mdl.node_paste.xmlAddChild('faces_paste') mdl.setStatusNode(node,'off') truc = node.toString() doc = '' assert doc == truc,'could not set status' def checkGetStatusNode(self): """ Check whether the status of node could be get """ mdl = SolutionDomainModel(self.case) mdl.setPasteMeshesStatus('on') mdl.setStatusNode(mdl.node_paste,'off') truc = mdl.node_paste.toString() assert mdl.getStatusNode(mdl.node_paste) == 'off',\ 'could not get status of node' def checkGetNodeAdd(self): """ Check whether the status of node could be get """ mdl = SolutionDomainModel(self.case) mdl.setPasteMeshesStatus('on') mdl.getNodeAdd(mdl.node_paste,'faces_paste',0) truc = mdl.node_paste.toString() doc ='' assert doc == truc,'could not add a node' def checkSetCutStatus(self): """ Check whether the status of node cut could be set """ mdl = SolutionDomainModel(self.case) mdl.setCutStatus('on') truc = mdl.node_cut.toString() doc = '' assert doc == truc,'could not set status of faces_cutting' def checkGetCutStatus(self): """ Check whether the status of node cut could be get """ mdl = SolutionDomainModel(self.case) mdl.setCutStatus('off') assert mdl.getCutStatus() == 'off',\ 'could not get status of faces_cutting' def checkSetCutAngle(self): """ Check whether the status of node cut could be set """ mdl = SolutionDomainModel(self.case) mdl.setCutStatus('on') mdl.setCutAngle('0.05') truc = mdl.node_cut.toString() doc = ''\ '0.05'\ '' assert doc == truc,'could not set angle for faces_cutting' def checkGetCutAngle(self): """ Check whether the status of node cut could be set """ mdl = SolutionDomainModel(self.case) mdl.setCutStatus('on') mdl.setCutAngle('0.05') assert mdl.getCutAngle() == '0.05','could not get angle for faces_cutting' def checkSetSyrthesCouplingStatus(self): """ Check whether the status of node syrthes_coupling could be set """ mdl = SolutionDomainModel(self.case) mdl.setSyrthesCouplingStatus('on') truc = mdl.node_syrthes.toString() doc = '' assert doc == truc,'could not set status for syrthes_coupling balise' def checkGetSyrthesCouplingStatus(self): """ Check whether the status of node syrthes_coupling could be get """ mdl = SolutionDomainModel(self.case) mdl.setSyrthesCouplingStatus('on') assert mdl.getSyrthesCouplingStatus() == 'on',\ 'could not get status for syrthes_coupling balise' def checkSetSyrthes2dMeshStatus(self): """ Check whether the status of node syrthes_mesh_2d could be set """ mdl = SolutionDomainModel(self.case) mdl.setSyrthesCouplingStatus('on') mdl.setSyrthes2dMeshStatus('on') truc = mdl.node_syrthes.toString() doc = ''\ ''\ '' assert doc == truc,'could not set status for 2dMesh balise' def checkGetSyrthes2dMeshStatus(self): """ Check whether the status of node syrthes_mesh_2d could be get """ mdl = SolutionDomainModel(self.case) mdl.setSyrthesCouplingStatus('on') mdl.setSyrthes2dMeshStatus('on') assert mdl.getSyrthes2dMeshStatus() == 'on',\ 'could not get status for 2dMesh balise' def checkDelSyrthes2dMeshNode(self): """ Check whether the status of node syrthes_mesh_2d could be get """ mdl = SolutionDomainModel(self.case) mdl.setSyrthesCouplingStatus('on') mdl.setSyrthes2dMeshStatus('on') mdl.delSyrthes2dMeshNode() doc = mdl.node_syrthes.toString() assert doc =='',\ 'could not del balise syrthes_mesh_2d' def checkSetPeriodicStatus(self): """ Check whether the status of node periodic_boundary could be set """ mdl = SolutionDomainModel(self.case) mdl.setPeriodicStatus('on') truc = mdl.node_perio.toString() doc =''\ ''\ ''\ ''\ '' assert doc == truc,'could not set status for periodicity' def checkGetPeriodicStatus(self): """ Check whether the status of node periodic_boundary could be set """ mdl = SolutionDomainModel(self.case) mdl.setPeriodicStatus('on') assert mdl.getPeriodicStatus() == 'on',\ 'could not get status for periodicity' def checkSetPeriodicNumberNode(self): """ Check whether the hopped node periodic_boundary could be get """ mdl = SolutionDomainModel(self.case) mdl.setPeriodicStatus('on') mdl.setPeriodicTransformation(1, "translation") mdl.setPeriodicTransformation(1, "tr+rota1") truc = mdl.node_perio.toString() doc = ''\ ''\ ''\ '0.0'\ '0.0'\ '0.0'\ ''\ ''\ ''\ ''\ '0.0'\ '0.0'\ '0.0'\ ''\ ''\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ ''\ ''\ ''\ '' assert doc == truc,'could not set node for number 1 of periodicity' def checkGetPeriodicNumberNode(self): """ Check whether the hopped node periodic_boundary could be get """ mdl = SolutionDomainModel(self.case) mdl.setPeriodicStatus('on') mdl.setPeriodicTransformation(1, "translation") mdl.setPeriodicTransformation(1, "tr+rota1") node, mode = mdl.getPeriodicNumberNode(1) def checkSetPeriodicTransformation(self): """ Check whether the periodicity mode could be set """ mdl = SolutionDomainModel(self.case) mdl.setPeriodicStatus("on") mdl.setPeriodicTransformation(1, "translation") mdl.setPeriodicTransformation(1, "tr+rota1") truc = mdl.node_perio.toString() doc = ''\ ''\ ''\ '0.0'\ '0.0'\ '0.0'\ ''\ ''\ ''\ ''\ '0.0'\ '0.0'\ '0.0'\ ''\ ''\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ ''\ ''\ ''\ '' assert doc == truc,'could not set transformations mode of periodicity' def checkGetPeriodicTransformation(self): """ Check whether the periodicity mode could be get """ mdl = SolutionDomainModel(self.case) mdl.setPeriodicStatus("on") mdl.setPeriodicTransformation(1, "translation") assert mdl.getPeriodicTransformation(1) == 'translation',\ 'could not get mode "translation" of periodicity' mdl.setPeriodicTransformation(1, "tr+rota1") assert mdl.getPeriodicTransformation(1) == 'tr+rota1',\ 'could not get mode "tr+rota1" of periodicity' def checkSetTranslationDefault(self): """ Check whether the default translation mode of periodicity could be set """ mdl = SolutionDomainModel(self.case) mdl.setPeriodicStatus("on") mdl.setTranslationDefault(1) truc = mdl.node_perio.toString() doc = ''\ ''\ ''\ '0.0'\ '0.0'\ '0.0'\ ''\ ''\ ''\ ''\ '' assert doc == truc,'could not set the default translation mode of periodicity' def checkSetTranslationDir(self): """ Check whether the dir values translation mode of periodicity could be set """ mdl = SolutionDomainModel(self.case) mdl.setPeriodicStatus("on") mdl.setPeriodicTransformation(1,'translation') mdl.setTranslationDefault(1) mdl.setTranslationDir(1,'translation_y','3') truc = mdl.node_perio.toString() doc = ''\ ''\ ''\ '0.0'\ '3'\ '0.0'\ ''\ ''\ ''\ ''\ '' assert doc == truc,'could not set the dir values for translation' def checkGetTranslationDir(self): """ Check whether the dir values translation mode of periodicity could be get """ mdl = SolutionDomainModel(self.case) mdl.setPeriodicStatus("on") mdl.setPeriodicTransformation(1,'translation') mdl.setTranslationDefault(1) mdl.setTranslationDir(1,'translation_x','0.11') mdl.setTranslationDir(1,'translation_y','0.22') mdl.setTranslationDir(1,'translation_z','0.33') x,y,z = mdl.getTranslationDir(1) def checkSetRotation1Default(self): """ Check whether the default values for rotation mode of periodicity could be set """ mdl = SolutionDomainModel(self.case) mdl.setPeriodicStatus("on") mdl.setPeriodicTransformation(1,'rotation1') mdl.setRotation1Default(1) truc = mdl.node_perio.toString() doc = ''\ ''\ ''\ ''\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ ''\ ''\ ''\ '' assert doc == truc,'could not set the default values for rotation1' def checkSetRotation2Default(self): """ Check whether the default values for rotation mode of periodicity could be set """ mdl = SolutionDomainModel(self.case) mdl.setPeriodicStatus("on") mdl.setPeriodicTransformation(1,'rotation2') mdl.setRotation2Default(1) truc = mdl.node_perio.toString() doc = ''\ ''\ ''\ ''\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ ''\ ''\ ''\ '' assert doc == truc,'could not set the default values for rotation2' def checkSetRotationDir(self): """ Check whether the values for dir of rotation could be set """ mdl = SolutionDomainModel(self.case) mdl.setPeriodicStatus("on") mdl.setPeriodicTransformation(1,'rotation1') mdl.setRotationDir(1, 'rotation_x', '9.') mdl.setRotationDir(1, 'rotation_y', '8.') mdl.setRotationDir(1, 'rotation_z', '7.') truc = mdl.node_perio.toString() doc = ''\ ''\ ''\ ''\ '0.0'\ '9.'\ '8.'\ '7.'\ '0.0'\ '0.0'\ '0.0'\ ''\ ''\ ''\ '' assert doc == truc,'could not set the values for dir of rotation' def checkSetRotationAngle(self): """ Check whether the angle for rotation could be set """ mdl = SolutionDomainModel(self.case) mdl.setPeriodicStatus("on") mdl.setPeriodicTransformation(1,'rotation1') mdl.setRotationDir(1, 'rotation_x', '9.') mdl.setRotationDir(1, 'rotation_y', '8.') mdl.setRotationDir(1, 'rotation_z', '7.') mdl.setRotationAngle(1, '45.') truc = mdl.node_perio.toString() doc = ''\ ''\ ''\ ''\ '45.'\ '9.'\ '8.'\ '7.'\ '0.0'\ '0.0'\ '0.0'\ ''\ ''\ ''\ '' assert doc == truc,'could not set the angle for rotation' def checkSetRotationCenter(self): """ Check whether the center of rotation for rotation mode could be set """ mdl = SolutionDomainModel(self.case) mdl.setPeriodicStatus("on") mdl.setPeriodicTransformation(1,'rotation1') mdl.setRotationDir(1, 'rotation_x', '9.') mdl.setRotationDir(1, 'rotation_y', '8.') mdl.setRotationDir(1, 'rotation_z', '7.') mdl.setRotationAngle(1, '45.') mdl.setRotationCenter(1, 'rotation1', 'rotation_center_y', '66.') truc = mdl.node_perio.toString() doc = ''\ ''\ ''\ ''\ '45.'\ '9.'\ '8.'\ '7.'\ '0.0'\ '66.'\ '0.0'\ ''\ ''\ ''\ '' assert doc == truc,'could not set the center of rotation for rotation mode' def checkSetRotationMatrix(self): """ Check whether the matrix of rotation for rotation2 mode could be set """ mdl = SolutionDomainModel(self.case) mdl.setPeriodicStatus("on") mdl.setPeriodicTransformation(1,'rotation2') mdl.setRotationMatrix(1,'rotation2', 'rotation_matrix_31', '31.31') truc = mdl.node_perio.toString() doc = ''\ ''\ ''\ ''\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '31.31'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ ''\ ''\ ''\ '' assert doc == truc,'could not set matrix for rotation2 mode' def checkGetRotationDirAngleCenterAndMatrix(self): """ Check whether dir,angle and center of rotation and matrix for rotation modes could be get """ mdl = SolutionDomainModel(self.case) mdl.setPeriodicStatus("on") mdl.setPeriodicTransformation(1,'rotation1') mdl.setRotationDir(1, 'rotation_x', '9.') mdl.setRotationDir(1, 'rotation_y', '8.') mdl.setRotationDir(1, 'rotation_z', '7.') mdl.setRotationAngle(1, '45.') mdl.setRotationCenter(1, 'rotation1', 'rotation_center_y', '66.') angle = mdl.getRotationAngle(1) rx, ry, rz = mdl.getRotationDir(1) px, py, pz = mdl.getRotationCenter(1,'rotation1') mdl.setPeriodicTransformation(1,'tr+rota2') mdl.setRotationMatrix(1,'tr+rota2', 'rotation_matrix_31', '31.31') truc = mdl.node_perio.toString() doc = ''\ ''\ ''\ ''\ '45.'\ '9.'\ '8.'\ '7.'\ '0.0'\ '66.'\ '0.0'\ ''\ ''\ ''\ ''\ '0.0'\ '0.0'\ '0.0'\ ''\ ''\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '31.31'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ '0.0'\ ''\ ''\ '' assert doc == truc,'could not change mode of rotation' angle = mdl.getRotationAngle(1) rx, ry, rz = mdl.getRotationDir(1) px, py, pz = mdl.getRotationCenter(1,'tr+rota2') m11, m12, m13, m21, m22, m23, m31, m32, m33 = mdl.getRotationMatrix(1,'tr+rota2') def checkSetSimCommStatus(self): """ Check whether the status of node simulation_communication could be set """ mdl = SolutionDomainModel(self.case) mdl.setSimCommStatus('on') truc = mdl.node_ecs.toString() doc = ''\ ''\ ''\ ''\ ''\ '' assert doc == truc,'could not set status of node simulation_communication' def checkSetAsciiCommStatus(self): """ Check whether the status of node ascii_communication could be set """ mdl = SolutionDomainModel(self.case) mdl.setAsciiCommStatus('on') truc1 = mdl.node_ecs.toString() doc1 = ''\ ''\ ''\ ''\ ''\ '' assert doc1 == truc1,'could not set status "on" of node ascii_communication' mdl.setAsciiCommStatus('off') truc2 = mdl.node_ecs.toString() doc2 = ''\ ''\ ''\ '' assert doc2 == truc2,'could not set status "off" of node ascii_communication' def checkSetMeshCheckStatus(self): """ Check whether the status of node ascii_communication could be set """ mdl = SolutionDomainModel(self.case) mdl.setMeshCheckStatus('on') truc1 = mdl.node_ecs.toString() doc1 = ''\ ''\ ''\ ''\ ''\ '' assert doc1 == truc1,'could not set status "on" of node check_mesh' mdl.setMeshCheckStatus('off') truc2 = mdl.node_ecs.toString() doc2 = ''\ ''\ ''\ '' assert doc2 == truc2,'could not set status "off" of node check_mesh' def checkSetPostAndMedStatus(self): """ Check whether the status of post-processing ensight and med format could be set """ mdl = SolutionDomainModel(self.case) mdl.setEnsightStatus('on') mdl.setMedStatus('off') truc = mdl.node_ecs.toString() doc = ''\ ''\ ''\ ''\ ''\ ''\ '' assert doc == truc,'could not set status of post-processing ensight and med format' def checkCreatePostDir(self): """ Check whether a post-processing directory could be created""" mdl = SolutionDomainModel(self.case) mdl.setEnsightStatus('on') mdl.setMedStatus('off') mdl.createPostDir("bonjour") truc = mdl.node_ecs.toString() doc = ''\ ''\ ''\ ''\ ''\ 'bonjour'\ ''\ '' assert doc == truc,'could not create post directory for post processing' def checkDelPostDir(self): """ Check whether a post-processing directory could be deleted """ mdl = SolutionDomainModel(self.case) mdl.setEnsightStatus('on') mdl.setMedStatus('off') mdl.createPostDir("bonjour") mdl.delPostDir() truc = mdl.node_ecs.toString() doc = ''\ ''\ ''\ ''\ ''\ ''\ '' assert doc == truc,'could not delete post directory for post processing' def checkSetPolygonalAndHedralNodesStatus(self): """ Check whether the status of node poly..._faces_splitting could be set """ mdl = SolutionDomainModel(self.case) mdl.setPolygonalNodeStatus('on') mdl.setPolyhedralNodeStatus('on') truc = mdl.node_ecs.toString() doc = ''\ ''\ ''\ ''\ ''\ ''\ '' assert doc == truc,'could not set status for node poly..._faces_splitting' def checkdelPolygonalAndHedralNodes(self): """ Check whether nodes poly..._faces_splitting could be deleted """ mdl = SolutionDomainModel(self.case) mdl.setPolygonalNodeStatus('on') mdl.setPolyhedralNodeStatus('on') mdl.delPolygonalNode() mdl.delPolyhedralNode() truc = mdl.node_ecs.toString() doc = ''\ ''\ ''\ '' assert doc == truc,'could not delete nodes poly..._faces_splitting' def checkMeshCommand(self): """ Check whether command for meshes could be set """ mdl = SolutionDomainModel(self.case) mdl.case['mesh_path'] = 'MAILLAGE' mdl.setMesh('fdc.des','des') mdl.setMesh('pic.des','des') mdl.setMesh('truc.machin','machin') cmd = mdl.getMeshCommand() def checkPasteAndCutCommand(self): """ Check whether paste and cut command lines could be get """ mdl = SolutionDomainModel(self.case) mdl.case['mesh_path'] = 'MAILLAGE' mdl.setMesh('fdc.des','des') mdl.setMesh('pic.des','des') select = {} select['color'] = '1 2 3' select['group'] = 'toto' select['fraction'] = '0.1' select['plan'] = '0.8' select['type'] = '' select['reverse'] = 'off' select['semiconf'] = 'on' mdl.setPasteMeshesStatus('on') node = mdl.getNodeAdd(mdl.node_paste, 'faces_paste', 0) mdl.setFacesSelect(node,'faces_paste',select) mdl.setCutStatus('on') mdl.setCutAngle('0.05') truc = mdl.node_ecs.toString() cmd_paste = mdl.getPasteCommand() cmd_cut = mdl.getCutCommand() def checkPerioCommand(self): """ Check whether perio command line could be get """ mdl = SolutionDomainModel(self.case) mdl.setPeriodicStatus("on") mdl.setPeriodicTransformation(1,'rotation1') mdl.setRotationDir(1, 'rotation_x', '9.') mdl.setRotationDir(1, 'rotation_y', '8.') mdl.setRotationDir(1, 'rotation_z', '7.') mdl.setRotationAngle(1, '45.') mdl.setRotationCenter(1, 'rotation1', 'rotation_center_y', '66.') mdl.setPeriodicTransformation(1,'tr+rota2') mdl.setTranslationDir(1,'translation_y','3') mdl.setRotationMatrix(1,'tr+rota2', 'rotation_matrix_31', '31.31') cmd = mdl.getPerioCommand(1) def checkSyrthesCommand(self): """ Check whether perio command line could be get """ mdl = SolutionDomainModel(self.case) mdl.setSyrthesCouplingStatus('on') mdl.setSyrthes2dMeshStatus('on') select = {} select['color'] = '1 2 3' select['group'] = 'toto' select['reverse'] = 'off' select['semiconf'] = 'on' mdl = SolutionDomainModel(self.case) node = mdl.getNodeAdd(mdl.node_syrthes, 'faces_syrthes', 0) mdl.setFacesSelect(node,'faces_syrthes',select) cmd = mdl.getSyrthesCommand() def checkSimCommAndVerifMaillCommand(self): """ Check whether perio command line could be get """ mdl = SolutionDomainModel(self.case) mdl.setSimCommStatus('on') mdl.setMeshCheckStatus('on') cmd_sim = mdl.getSimCommCommand() cmd_verif = mdl.getVerifMaillCommand() def checkSelectCommand(self): """ Check whether perio command line could be get """ select = {} select['color'] = '1 2 3' select['group'] = 'toto' select['type'] = 'int' select['reverse'] = 'off' select['semiconf'] = 'on' mdl = SolutionDomainModel(self.case) node_select = mdl.getNodeAdd(mdl.node_standalone,'faces_select',0) mdl.setFacesSelect(node_select,'faces_select',select) cmd = mdl.getSelectCommand() def checkEnsAndMedCommand(self): """ Check whether perio command line could be get """ mdl = SolutionDomainModel(self.case) mdl.setEnsightStatus('on') mdl.setMedStatus('on') mdl.setPolygonalNodeStatus('on') mdl.setPolyhedralNodeStatus('on') cmd_ens = mdl.getEnsightCommand() cmd_med = mdl.getMedCommand() def suite(): testSuite = unittest.makeSuite(SolutionDomainTestCase, "check") return testSuite def runTest(): print "SolutionDomainTestCase" runner = unittest.TextTestRunner() runner.run(suite())