Exemplo n.º 1
0
    def setComponent(self, componentName):

        if type(componentName) == StringType:
            self.componentName = componentName.lower()
            from elmer import Elmer
            self.componentName == "elmer"
            self.mechanicalSolver = Elmer(self.mesh)
            self.mechanicalSolver.calcTimesDico = Dico()

            self.mechanicalSolver.setMechaSolverDefaults()
            self.mechanicalSolver.setProblemType("mechanical")
            self.mechanicalSolver.setDirBC(None, self.boundaryConditions)
            self.mechanicalSolver.setDirIC(self.initialConditions)
            if (self.timeStepIntervals == None
                    and self.calculationTimes != None):
                self.timeStepIntervals = len(self.calculationTimes) - 1
                self.timeStepSizes = [
                    self.calculationTimes[i + 1] - self.calculationTimes[i]
                    for i in range(len(self.calculationTimes) - 1)
                ]
                pass
            elif (self.timeStepIntervals != None):
                self.mechanicalSolver.setTimeDiscretisation(
                    self.timeStepIntervals, self.timeStepSizes)
                pass
            self.mechanicalSolver.setOutputName(self.problem.name)
            pass
        else:
            raise Warning(
                " the default mechanical solver has been fixed to elmer ")
            self.componentName = "elmer"
            pass
        #
        #
        #
        self.mechanicalSolver.setBodyList(self.problem.getRegions())
        #
        #
        #
        #   print " dbg hm we set the bic ",self.boundaryConditions
        self.mechanicalSolver.setBoundaryConditionConcentrations(
            self.boundaryConditions)
        #
        # Density
        #
        if self.density: self.mechanicalSolver.setSolidDensity(self.density)
        #
        #
        #
        #self.mechanicalSolver.setInitialConditions(self.initialConditions)
        #
        # Gravity
        #
        #if self.gravity:
        #    self.mechanicalSolver.setGravity(self.gravity)
        #
        # Porosity
        #
        if self.matrixCompressibilityFactor:
            self.mechanicalSolver.setMatrixCompressibilityFactor(
                self.matrixCompressibilityFactor)
        #
        # Sources
        #
        if self.sourceField: self.mechanicalSolver.setSource(self.sourceField)
        #
        # time steps treatment
        #
        if self.simulationType == "Transient":
            self.mechanicalSolver.calcTimesDico[
                'finalTime'] = self.problem.calculationTimes[-1]