Example #1
0
    def __initGeo(self):
        if (self.__selectionString == None or self.__selectionString
                == "") and (self.__getSubsetModuleGeo == None):
            return

        if self.__geoInConnectionPoint == None:
            if self.__getSubsetModuleGeo == None:
                self.__getSubsetModuleGeo = GetSubsetModule()

            self.__getSubsetModuleGeo.setSelectionString(
                self.__selectionString)

            self.__geoConnectionPoint = self.__getSubsetModuleGeo.geoOutConnectionPoint(
            )
            self.__geoInConnectionPoint = self.__getSubsetModuleGeo.geoInConnectionPoint(
            )

            self.__needExecuteGeo = True
Example #2
0
    def __initData(self, varName):
        if not varName in self.__needExecuteData.keys():
            self.__needExecuteData[varName] = False

        if (self.__selectionString == None or self.__selectionString
                == "") and (varName not in self.__getSubsetModuleData.keys()):
            return

        if not varName in self.__getSubsetModuleData.keys():

            self.__getSubsetModuleData[varName] = GetSubsetModule()
            self.__getSubsetModuleData[varName].setSelectionString(
                self.__selectionString)

            self.__dataConnectionPoints[varName] = self.__getSubsetModuleData[
                varName].geoOutConnectionPoint()
            self.__dataInConnectionPoints[
                varName] = self.__getSubsetModuleData[
                    varName].geoInConnectionPoint()

            self.__needExecuteData[varName] = True
Example #3
0
class ImportGetSubsetModule(ParentClass):
    def __init__(self, dimension, partcase):
        ParentClass.__init__(self, dimension, partcase)

        self.__needExecuteGeo = False
        self.__needExecuteData = {}
        self.__geoConnectionPoint = None
        self.__geoInConnectionPoint = None
        self.__dataConnectionPoints = {}
        self.__dataInConnectionPoints = {}

        self.__getSubsetModuleData = {}  # the GetSubset modules for variables
        self.__getSubsetModuleGeo = None

        self.__selectionString = None  # should take a correct default?
        self.__reductionFactor = 1  # for compatibility to former ImportReduceSetManager

    def geoConnectionPoint(self):
        self.__initGeo()

        if self.__geoConnectionPoint != None:
            return self.__geoConnectionPoint
        else:
            return ParentClass.geoConnectionPoint(self)

    def dataConnectionPoint(self, varName):
        self.__initData(varName)

        if varName in self.__dataConnectionPoints:
            return self.__dataConnectionPoints[varName]
        else:
            return ParentClass.dataConnectionPoint(self, varName)

    def executeGeo(self):
        self.__initGeo()

        # reconnect geometry
        if self.__geoInConnectionPoint != None:
            theNet().disconnectAllFromModulePort(
                self.__geoInConnectionPoint.module,
                self.__geoInConnectionPoint.port)
            connect(ParentClass.geoConnectionPoint(self),
                    self.__geoInConnectionPoint)

        # wenn voriges Modul tatsaechlich executed wurde, dann nicht mehr selbst executen
        if ParentClass.executeGeo(self) == True:
            self.__needExecuteGeo = False
            return True

        if not self.__needExecuteGeo:
            return False
        self.__needExecuteGeo = False

        if self.__geoInConnectionPoint != None:
            saveExecute(self.__geoInConnectionPoint.module)
        return True

    def executeData(self, varName):
        self.__initData(varName)

        # reconnect data
        if varName in self.__dataConnectionPoints.keys():
            theNet().disconnectAllFromModulePort(
                self.__dataInConnectionPoints[varName].module,
                self.__dataInConnectionPoints[varName].port)
            theNet().connect(
                ParentClass.dataConnectionPoint(self, varName).module,
                ParentClass.dataConnectionPoint(self, varName).port,
                self.__dataInConnectionPoints[varName].module,
                self.__dataInConnectionPoints[varName].port)

        # wenn voriges Modul tatsaechlich executed wurde, dann nicht mehr selbst executen
        if ParentClass.executeData(self, varName) == True:
            self.__needExecuteData[varName] = False
            return True

        if not self.__needExecuteData[varName]:
            return False
        self.__needExecuteData[varName] = False

        if varName in self.__dataInConnectionPoints.keys():
            saveExecute(self.__dataInConnectionPoints[varName].module)
        return True

    def __initGeo(self):
        if (self.__selectionString == None or self.__selectionString
                == "") and (self.__getSubsetModuleGeo == None):
            return

        if self.__geoInConnectionPoint == None:
            if self.__getSubsetModuleGeo == None:
                self.__getSubsetModuleGeo = GetSubsetModule()

            self.__getSubsetModuleGeo.setSelectionString(
                self.__selectionString)

            self.__geoConnectionPoint = self.__getSubsetModuleGeo.geoOutConnectionPoint(
            )
            self.__geoInConnectionPoint = self.__getSubsetModuleGeo.geoInConnectionPoint(
            )

            self.__needExecuteGeo = True

    def __initData(self, varName):
        if not varName in self.__needExecuteData.keys():
            self.__needExecuteData[varName] = False

        if (self.__selectionString == None or self.__selectionString
                == "") and (varName not in self.__getSubsetModuleData.keys()):
            return

        if not varName in self.__getSubsetModuleData.keys():

            self.__getSubsetModuleData[varName] = GetSubsetModule()
            self.__getSubsetModuleData[varName].setSelectionString(
                self.__selectionString)

            self.__dataConnectionPoints[varName] = self.__getSubsetModuleData[
                varName].geoOutConnectionPoint()
            self.__dataInConnectionPoints[
                varName] = self.__getSubsetModuleData[
                    varName].geoInConnectionPoint()

            self.__needExecuteData[varName] = True

    def delete(self):
        if hasattr(self, "_ImportGetSubsetModule__getSubsetModuleGeo"
                   ) and self.__getSubsetModuleGeo != None:
            self.__getSubsetModuleGeo.remove()
        if hasattr(self, "_ImportGetSubsetModule__getSubsetModuleData"):
            for module in self.__getSubsetModuleData.values():
                module.remove()
        ParentClass.delete(self)

    #############################
    # filter specific functions #
    #############################

    # for compatibility to former ImportReduceSetManager

    def setReductionFactor(self, rf, execute=False):
        if rf == 1 and self.__getSubsetModuleGeo == None:
            return

        if rf < 0:
            self.__reductionFactor = (self.getNumTimeSteps() + 1) / 2
        else:
            self.__reductionFactor = rf

        selectionString = ""
        for i in range(self.getNumTimeSteps()):
            if i % self.__reductionFactor == 0:
                selectionString = selectionString + str(i) + " "
        return self.setSelectionString(selectionString, execute)

    def getNumReductionModules(self):
        return len(self.__getSubsetModuleData)

    def getReductionFactor(self):
        return self.__reductionFactor

    def setSelectionString(self, selection, execute=False):
        if self.__selectionString != selection:
            self.__selectionString = selection
            self.__needExecuteGeo = True
            for key in self.__needExecuteData.keys():
                self.__needExecuteData[key] = True

        if self.__getSubsetModuleGeo != None:
            self.__getSubsetModuleGeo.setSelectionString(
                self.__selectionString)
        for gS in self.__getSubsetModuleData.values():
            gS.setSelectionString(self.__selectionString)

        if execute:
            self.__getSubsetModuleGeo.execute()
            for gS in self.__getSubsetModuleData.values():
                gS.execute()
            self.__needExecuteGeo = False
            for key in self.__needExecuteData.keys():
                self.__needExecuteData[key] = False
            return True
        return False

    def getNumGetSubsetModules(self):
        return len(self.__getSubsetModules)

    def getSelectionString(self):
        return self.__selectionString