def __slotDirectionFormula(self): """ """ exp = self.__boundary.getDirection('direction_formula') req = [('dir_x', 'Direction of the flow along X'), ('dir_y', 'Direction of the flow along Y'), ('dir_z', 'Direction of the flow along Z')] exa = "dir_x = 3.0;\ndir_y = 1.0;\ndir_z = 0.0;\n" sym = [('x', "X face's gravity center"), ('y', "Y face's gravity center"), ('z', "Z face's gravity center"), ('dt', 'time step'), ('t', 'current time'), ('iter', 'number of iteration')] for (nme, val) in self.notebook.getNotebookList(): sym.append((nme, 'value (notebook) = ' + str(val))) dialog = QMegEditorView(parent=self, function_type="bnd", zone_name=self.__boundary._label, variable_name="direction", expression=exp, required=req, symbols=sym, condition="formula", examples=exa) if dialog.exec_(): result = dialog.get_result() log.debug("slotFormulaDirection -> %s" % str(result)) self.__boundary.setDirection('direction_formula', str(result)) self.pushButtonDirectionFormula.setToolTip(result) self.pushButtonDirectionFormula.setStyleSheet( "background-color: green")
def slotFormulaDiff(self): """ User formula for the diffusion coefficient """ exp, req, sca, sym = self.mdl.getFormulaDiffComponents(self.scalar) exa = '' dname = self.mdl.m_sca.getScalarDiffusivityName(self.scalar) mci = mei_to_c_interpreter(self.case, False) mci.init_cell_block(exp, req, sym, sca, dname) dialog = QMegEditorView(self, mei_to_c=mci, expression=exp, required=req, symbols=sym, examples=exa) if dialog.exec_(): result = dialog.get_result() log.debug("slotFormulaDiff -> %s" % str(result)) self.mdl.m_sca.setDiffFormula(self.scalar, str(result)) self.pushButtonDiff.setToolTip(result) self.pushButtonDiff.setStyleSheet("background-color: green")
def slotFormulaCp(self): """ User formula for specific heat """ exp, req, sca, symbols_cp = self.mdl.getFormulaCpComponents() exa = FluidCharacteristicsView.specific_heat dialog = QMegEditorView(parent=self, function_type='vol', zone_name='all_cells', variable_name='specific_heat', expression=exp, required=req, symbols=symbols_cp, known_fields=sca, examples=exa) if dialog.exec_(): result = dialog.get_result() log.debug("slotFormulaRho -> %s" % str(result)) self.mdl.setFormula('specific_heat', str(result)) self.pushButtonCp.setToolTip(result) self.pushButtonCp.setStyleSheet("background-color: green")
def slotFormulaViscv0(self): """ User formula for volumic viscosity """ exp, req, sca, symbols_viscv0 = self.mdl.getFormulaViscv0Components() exa = FluidCharacteristicsView.volume_viscosity dialog = QMegEditorView(parent=self, function_type='vol', zone_name='all_cells', variable_name='volume_viscosity', expression=exp, required=req, symbols=symbols_viscv0, known_fields=sca, examples=exa) if dialog.exec_(): result = dialog.get_result() log.debug("slotFormulaViscv0 -> %s" % str(result)) self.mdl.setFormula('volume_viscosity', str(result)) self.pushButtonViscv0.setToolTip(result) self.pushButtonViscv0.setStyleSheet("background-color: green")
def slotFormulaRho(self): """ User formula for density """ exp, req, sca, symbols_rho = self.mdl.getFormulaRhoComponents() self.m_th = ThermalScalarModel(self.case) s = self.m_th.getThermalScalarName() mdl = self.m_th.getThermalScalarModel() if mdl == "off": exa = FluidCharacteristicsView.density_wo elif mdl == "temperature_celsius": TempInContext = "(" + s + " + 273.15)" exa = FluidCharacteristicsView.density.replace( "temperature", TempInContext) elif mdl == "enthalpy": exa = FluidCharacteristicsView.density_h else: exa = FluidCharacteristicsView.density dialog = QMegEditorView(parent=self, function_type='vol', zone_name='all_cells', variable_name='density', expression=exp, required=req, symbols=symbols_rho, known_fields=sca, examples=exa) if dialog.exec_(): result = dialog.get_result() log.debug("slotFormulaRho -> %s" % str(result)) self.mdl.setFormula('density', str(result)) self.pushButtonRho.setToolTip(result) self.pushButtonRho.setStyleSheet("background-color: green")
def slotSpeciesFormula(self): """ Input the initial formula of species """ exp, req, sym = self.init.getSpeciesFormulaComponents(self.zone_id, self.scalar) name = DefineUserScalarsModel(self.case).getScalarName(self.scalar) exa = """#example: \n""" + str(name) + """ = 0;\n""" dialog = QMegEditorView(parent=self, function_type="ini", zone_name=self.zone_name, variable_name=name, expression=exp, required=req, symbols=sym, examples=exa) if dialog.exec_(): result = dialog.get_result() log.debug("slotFormulaSpecies -> %s" % str(result)) self.init.setSpeciesFormula(self.zone_id, self.scalar, str(result)) self.pushButtonSpecies.setStyleSheet("background-color: green") self.pushButtonSpecies.setToolTip(result)
def __slotFormula(self, checked): """ Run formula editor. """ # Read current expression name = str(self.getBoundaryName()) exp = self.getBoundaryDefinedValue() if not exp: exp = self.__default # run the editor dialog = QMegEditorView(self.parent, function_type = 'fsi', zone_name = name, variable_name = self.object_type, expression = exp, required = self.__required, symbols = self.__symbols, examples = self.__examples) if dialog.exec_(): result = dialog.get_result() log.debug("FormulaCoupling -> %s" % str(result)) self.setBoundaryDefinedValue(result)
def slotHeadLossesFormula(self): """ """ exp = self.__boundary.getHeadLossesFormula() if not exp: exp = "K = 0.;" req = [('K', 'External head losses')] exa = "K = 0.;" sym = [('x', "X face's gravity center"), ('y', "Y face's gravity center"), ('z', "Z face's gravity center"), ('dt', 'time step'), ('t', 'current time'), ('iter', 'number of iteration')] for (nme, val) in self.notebook.getNotebookList(): sym.append((nme, 'value (notebook) = ' + str(val))) dialog = QMegEditorView(parent=self, function_type='bnd', zone_name=self.__boundary._label, variable_name='head_loss', expression=exp, required=req, symbols=sym, condition='formula', examples=exa) if dialog.exec_(): result = dialog.get_result() log.debug("slotFormulaDirection -> %s" % str(result)) self.__boundary.setHeadLossesFormula(str(result)) self.pushButtonHeadLossesFormula.setStyleSheet( "background-color: green") self.pushButtonHeadLossesFormula.setToolTip(result)
def slotThermalFormula(self): """ Input the initial formula of thermal scalar """ exa = """#example: """ exp, req, sym = self.mdl.getThermalFormulaComponents(self.zone, self.currentId, self.th_sca_name) name = 'enthalpy_%s' % (str(self.currentId)) zone_name = None for zone in self.volzone.getZones(): if str(zone.getCodeNumber()) == self.zone: zone_name = zone.getLabel() break dialog = QMegEditorView(parent = self, function_type = 'src', zone_name = zone_name, variable_name = name, expression = exp, required = req, symbols = sym, examples = exa, source_type = 'thermal_source_term') if dialog.exec_(): result = dialog.get_result() log.debug("slotFormulaThermal -> %s" % str(result)) self.mdl.setThermalFormula(self.zone, self.currentId, self.th_sca_name, str(result)) self.pushButtonThermal.setToolTip(result) self.pushButtonThermal.setStyleSheet("background-color: green")
def __slotTurbulenceFormula(self): """ User formula for turbulence """ turb_model = TurbulenceModel(self.case).getTurbulenceModel( self.__currentField) exp, req, sym = \ self.__boundary.getTurbFormulaComponents(self.__currentField, turb_model) # Set model name and specific examples if turb_model in ('k-epsilon', 'k-epsilon_linear_production'): if not exp: exp = self.__boundary.getDefaultTurbFormula(turb_model) exa = """#example : uref2 = 10.; dh = 0.2; re = sqrt(uref2)*dh*rho0/mu0; if (re < 2000){ # in this case u*^2 is directly calculated to not have a problem with # xlmbda=64/Re when Re->0 ustar2 = 8.*mu0*sqrt(uref2)/rho0/dh;} else if (re<4000){ xlmbda = 0.021377 + 5.3115e-6*re; ustar2 = uref2*xlmbda/8.;} else { xlmbda = 1/( 1.8*log(re)/log(10.)-1.64)^2; ustar2 = uref2*xlmbda/8.;} cmu = 0.09; kappa = 0.42; k = ustar2/sqrt(cmu); eps = ustar2^1.5/(kappa*dh*0.1);""" name = 'turbulence_ke_%s' % (self.__currentField) elif turb_model in ('rij-epsilon_ssg', 'rij-epsilon_ebrsm'): if not exp: exp = self.__boundary.getDefaultTurbFormula(turb_model) exa = """#exemple : uref2 = 10.; dh = 0.2; re = sqrt(uref2)*dh*rho0/mu0; if (re < 2000){ # in this case u*^2 is directly calculated to not have a problem with # xlmbda=64/Re when Re->0 ustar2 = 8.*mu0*sqrt(uref2)/rho0/dh;} else if (re<4000){ xlmbda = 0.021377 + 5.3115e-6*re; ustar2 = uref2*xlmbda/8.;} else { xlmbda = 1/( 1.8*log(re)/log(10.)-1.64)^2; ustar2 = uref2*xlmbda/8.;} cmu = 0.09; kappa = 0.42; k = ustar2/sqrt(cmu); eps = ustar2^1.5/(kappa*dh*0.1); d2s3 = 2/3; R11 = d2s3*k; R22 = d2s3*k; R33 = d2s3*k; R12 = 0; R13 = 0; R23 = 0; """ name = 'turbulence_rije_%s' % (self.__currentField) elif turb_model in ('tchen', 'q2-q12'): name = 'turbulence_tchen_%s' % (self.__currentField) if not exp: exp = self.__boundary.getDefaultTurbFormula(turb_model) exa = """#example : q2 = 5.e-05; q12 = 0.0001;""" elif turb_model in ('r2-q12'): name = 'turbulence_r2q12_%s' % (self.__currentField) if not exp: exp = self.__boundary.getDefaultTurbFormula(turb_model) exa = """#example : R11 = 5e-05; R22 = 5e-05; R33 = 5e-05; R12 = 5e-05; R13 = 5e-05; R23 = 5e-05; q12 = 0.0001;""" elif turb_model in ('r2-r12-tchen'): name = 'turbulence_r2r12_%s' % (self.__currentField) if not exp: exp = self.__boundary.getDefaultTurbFormula(turb_model) exa = """#example : R11 = 5e-05; R22 = 5e-05; R33 = 5e-05; R12 = 5e-05; R13 = 5e-05; R23 = 5e-05; R12-11 = 5e-05; R12-22 = 5e-05; R12-33 = 5e-05; R12-12 = 5e-05; R12-13 = 5e-05; R12-23 = 5e-05;""" dialog = QMegEditorView(parent=self, function_type='bnd', zone_name=self.__boundary._label, variable_name=name, expression=exp, required=req, symbols=sym, condition="formula", examples=exa) if dialog.exec_(): result = dialog.get_result() log.debug("slotFormulaTurb -> %s" % str(result)) self.__boundary.setTurbFormula(self.__currentField, result) self.pushButtonTurb.setToolTip(result) self.pushButtonTurb.setStyleSheet("background-color: green")
def __slotTurbulenceFormula(self): """ INPUT user formula """ turb_model = TurbulenceModel(self.__case).getTurbulenceModel() if turb_model in ('k-epsilon', 'k-epsilon-PL'): exp = self.__boundary.getTurbFormula() if not exp: exp = self.__boundary.getDefaultTurbFormula(turb_model) exa = """#example : uref2 = 10.; dh = 0.2; re = sqrt(uref2)*dh*rho0/mu0; if (re < 2000){ # in this case u*^2 is directly calculated to not have a problem with # xlmbda=64/Re when Re->0 ustar2 = 8.*mu0*sqrt(uref2)/rho0/dh;} else if (re<4000){ xlmbda = 0.021377 + 5.3115e-6*re; ustar2 = uref2*xlmbda/8.;} else { xlmbda = 1/( 1.8*log(re)/log(10.)-1.64)^2; ustar2 = uref2*xlmbda/8.;} cmu = 0.09; kappa = 0.42; k = ustar2/sqrt(cmu); epsilon = ustar2^1.5/(kappa*dh*0.1);""" req = [('k', "turbulent energy"), ('epsilon', "turbulent dissipation")] sym = [('x', 'cell center coordinate'), ('y', 'cell center coordinate'), ('z', 'cell center coordinate'), ('t', 'time'), ('dt', 'time step'), ('iter', 'number of time step')] for (nme, val) in self.notebook.getNotebookList(): sym.append((nme, 'value (notebook) = ' + str(val))) mci = mei_to_c_interpreter(self.__case, False) mci.init_bnd_block(expression=exp, required=['k', 'epsilon'], name='turbulence_ke', bnd_name=self.__boundary._label, condition='formula') dialog = QMegEditorView(self, mei_to_c=mci, expression=exp, required=req, symbols=sym, examples=exa) if dialog.exec_(): result = dialog.get_result() log.debug("slotFormulaTurb -> %s" % str(result)) self.__boundary.setTurbFormula(str(result)) self.pushButtonTurb.setStyleSheet("background-color: green") self.pushButtonTurb.setToolTip(result) elif turb_model in ('Rij-epsilon', 'Rij-SSG'): exp = self.__boundary.getTurbFormula() if not exp: exp = self.__boundary.getDefaultTurbFormula(turb_model) exa = """#exemple : uref2 = 10.; dh = 0.2; re = sqrt(uref2)*dh*rho0/mu0; if (re < 2000){ # in this case u*^2 is directly calculated to not have a problem with # xlmbda=64/Re when Re->0 ustar2 = 8.*mu0*sqrt(uref2)/rho0/dh;} else if (re<4000){ xlmbda = 0.021377 + 5.3115e-6*re; ustar2 = uref2*xlmbda/8.;} else { xlmbda = 1/( 1.8*log(re)/log(10.)-1.64)^2; ustar2 = uref2*xlmbda/8.;} cmu = 0.09; kappa = 0.42; k = ustar2/sqrt(cmu); epsilon = ustar2^1.5/(kappa*dh*0.1); d2s3 = 2/3; r11 = d2s3*k; r22 = d2s3*k; r33 = d2s3*k; r12 = 0; r13 = 0; r23 = 0; """ req = [('r11', "Reynolds stress R11"), ('r22', "Reynolds stress R22"), ('r33', "Reynolds stress R33"), ('r12', "Reynolds stress R12"), ('r13', "Reynolds stress R13"), ('r23', "Reynolds stress R23"), ('epsilon', "turbulent dissipation")] sym = [('x', 'cell center coordinate'), ('y', 'cell center coordinate'), ('z', 'cell center coordinate'), ('t', 'time'), ('dt', 'time step'), ('iter', 'number of time step')] for (nme, val) in self.notebook.getNotebookList(): sym.append((nme, 'value (notebook) = ' + str(val))) mci = mei_to_c_interpreter(self.__case, False) mci.init_bnd_block( expression=exp, required=['r11', 'r22', 'r33', 'r12', 'r23', 'r13', 'epsilon'], name='turbulence_rije', bnd_name=self.__boundary._label, condition='formula') dialog = QMegEditorView(self, mei_to_c=mci, expression=exp, required=req, symbols=sym, examples=exa) if dialog.exec_(): result = dialog.get_result() log.debug("slotFormulaTurb -> %s" % str(result)) self.__boundary.setTurbFormula(str(result)) self.pushButtonTurb.setStyleSheet("background-color: green") self.pushButtonTurb.setToolTip(result) elif turb_model == 'Rij-EBRSM': exp = self.__boundary.getTurbFormula() if not exp: exp = self.__boundary.getDefaultTurbFormula(turb_model) exa = """#exemple : uref2 = 10.; dh = 0.2; re = sqrt(uref2)*dh*rho0/mu0; if (re < 2000){ # in this case u*^2 is directly calculated to not have a problem with # xlmbda=64/Re when Re->0 ustar2 = 8.*mu0*sqrt(uref2)/rho0/dh;} else if (re<4000){ xlmbda = 0.021377 + 5.3115e-6*re; ustar2 = uref2*xlmbda/8.;} else { xlmbda = 1/( 1.8*log(re)/log(10.)-1.64)^2; ustar2 = uref2*xlmbda/8.;} cmu = 0.09; kappa = 0.42; k = ustar2/sqrt(cmu); epsilon = ustar2^1.5/(kappa*dh*0.1); d2s3 = 2/3; r11 = d2s3*k; r22 = d2s3*k; r33 = d2s3*k; r12 = 0; r13 = 0; r23 = 0; alpha = 1.; """ req = [('r11', "Reynolds stress R11"), ('r22', "Reynolds stress R22"), ('r33', "Reynolds stress R33"), ('r12', "Reynolds stress R12"), ('r13', "Reynolds stress R13"), ('r23', "Reynolds stress R23"), ('epsilon', "turbulent dissipation"), ('alpha', "alpha")] sym = [('x', 'cell center coordinate'), ('y', 'cell center coordinate'), ('z', 'cell center coordinate'), ('t', 'time'), ('dt', 'time step'), ('iter', 'number of time step')] for (nme, val) in self.notebook.getNotebookList(): sym.append((nme, 'value (notebook) = ' + str(val))) mci = mei_to_c_interpreter(self.__case, False) mci.init_bnd_block(expression=exp, required=[ 'r11', 'r22', 'r33', 'r12', 'r23', 'r13', 'epsilon', 'alpha' ], name='turbulence_rije', bnd_name=self.__boundary._label, condition='formula') dialog = QMegEditorView(self, mei_to_c=mci, expression=exp, required=req, symbols=sym, examples=exa) if dialog.exec_(): result = dialog.get_result() log.debug("slotFormulaTurb -> %s" % str(result)) self.__boundary.setTurbFormula(str(result)) self.pushButtonTurb.setStyleSheet("background-color: green") self.pushButtonTurb.setToolTip(result) elif turb_model == 'v2f-BL-v2/k': exp = self.__boundary.getTurbFormula() if not exp: exp = self.__boundary.getDefaultTurbFormula(turb_model) exa = """#exemple : uref2 = 10.; dh = 0.2; re = sqrt(uref2)*dh*rho0/mu0; if (re < 2000){ # in this case u*^2 is directly calculated to not have a problem with # xlmbda=64/Re when Re->0 ustar2 = 8.*mu0*sqrt(uref2)/rho0/dh;} else if (re<4000){ xlmbda = 0.021377 + 5.3115e-6*re; ustar2 = uref2*xlmbda/8.;} else { xlmbda = 1/( 1.8*log(re)/log(10.)-1.64)^2; ustar2 = uref2*xlmbda/8.;} cmu = 0.09; kappa = 0.42; d2s3 = 2/3; k = ustar2/sqrt(cmu); epsilon = ustar2^1.5/(kappa*dh*0.1); phi = d2s3; alpha = 0;""" req = [('k', "turbulent energy"), ('epsilon', "turbulent dissipation"), ('phi', "variable phi in v2f model"), ('alpha', "variable alpha in v2f model")] sym = [('x', 'cell center coordinate'), ('y', 'cell center coordinate'), ('z', 'cell center coordinate'), ('t', 'time'), ('dt', 'time step'), ('iter', 'number of time step')] for (nme, val) in self.notebook.getNotebookList(): sym.append((nme, 'value (notebook) = ' + str(val))) mci = mei_to_c_interpreter(self.__case, False) mci.init_bnd_block(expression=exp, required=['k', 'epsilon', 'phi', 'alpha'], name='turbulence_rije', bnd_name=self.__boundary._label, condition='formula') dialog = QMegEditorView(self, mei_to_c=mci, expression=exp, required=req, symbols=sym, examples=exa) if dialog.exec_(): result = dialog.get_result() log.debug("slotFormulaTurb -> %s" % str(result)) self.__boundary.setTurbFormula(str(result)) self.pushButtonTurb.setStyleSheet("background-color: green") self.pushButtonTurb.setToolTip(result) elif turb_model == 'k-omega-SST': exp = self.__boundary.getTurbFormula() if not exp: exp = self.__boundary.getDefaultTurbFormula(turb_model) exa = """#exemple : uref2 = 10.; dh = 0.2; re = sqrt(uref2)*dh*rho0/mu0; if (re < 2000){ # in this case u*^2 is directly calculated to not have a problem with # xlmbda=64/Re when Re->0 ustar2 = 8.*mu0*sqrt(uref2)/rho0/dh;} else if (re<4000){ xlmbda = 0.021377 + 5.3115e-6*re; ustar2 = uref2*xlmbda/8.;} else { xlmbda = 1/( 1.8*log(re)/log(10.)-1.64)^2; ustar2 = uref2*xlmbda/8.;} cmu = 0.09; kappa = 0.42; k = ustar2/sqrt(cmu); eps = ustar2^1.5/(kappa*dh*0.1); omega = eps/(cmu * k);""" req = [('k', "turbulent energy"), ('omega', "specific dissipation rate")] sym = [('x', 'cell center coordinate'), ('y', 'cell center coordinate'), ('z', 'cell center coordinate'), ('t', 'time'), ('dt', 'time step'), ('iter', 'number of time step')] for (nme, val) in self.notebook.getNotebookList(): sym.append((nme, 'value (notebook) = ' + str(val))) mci = mei_to_c_interpreter(self.__case, False) mci.init_bnd_block(expression=exp, required=['k', 'omega'], name='turbulence_ke', bnd_name=self.__boundary._label, condition='formula') dialog = QMegEditorView(self, mei_to_c=mci, expression=exp, required=req, symbols=sym, examples=exa) if dialog.exec_(): result = dialog.get_result() log.debug("slotFormulaTurb -> %s" % str(result)) self.__boundary.setTurbFormula(str(result)) self.pushButtonTurb.setStyleSheet("background-color: green") self.pushButtonTurb.setToolTip(result) elif turb_model == 'Spalart-Allmaras': exp = self.__boundary.getTurbFormula() if not exp: exp = self.__boundary.getDefaultTurbFormula(turb_model) exa = """#exemple : uref2 = 10.; dh = 0.2; re = sqrt(uref2)*dh*rho0/mu0; if (re < 2000){ # in this case u*^2 is directly calculated to not have a problem with # xlmbda=64/Re when Re->0 ustar2 = 8.*mu0*sqrt(uref2)/rho0/dh;} else if (re<4000){ xlmbda = 0.021377 + 5.3115e-6*re; ustar2 = uref2*xlmbda/8.;} else { xlmbda = 1/( 1.8*log(re)/log(10.)-1.64)^2; ustar2 = uref2*xlmbda/8.;} cmu = 0.09; kappa = 0.42; k = ustar2/sqrt(cmu); eps = ustar2^1.5/(kappa*dh*0.1); nu_tilda = eps/(cmu * k);""" req = [('nu_tilda', "nu_tilda")] sym = [('x', 'cell center coordinate'), ('y', 'cell center coordinate'), ('z', 'cell center coordinate'), ('t', 'time'), ('dt', 'time step'), ('iter', 'number of time step')] for (nme, val) in self.notebook.getNotebookList(): sym.append((nme, 'value (notebook) = ' + str(val))) mci = mei_to_c_interpreter(self.__case, False) mci.init_bnd_block(expression=exp, required=['nu_tilda'], name='turbulence_ke', bnd_name=self.__boundary._label, condition='formula') dialog = QMegEditorView(self, mei_to_c=mci, expression=exp, required=req, symbols=sym, examples=exa) if dialog.exec_(): result = dialog.get_result() log.debug("slotFormulaTurb -> %s" % str(result)) self.__boundary.setTurbFormula(str(result)) self.pushButtonTurb.setStyleSheet("background-color: green") self.pushButtonTurb.setToolTip(result)