Example #1
0
class Phytomer(object):
    def __init__(self, phytomerNumber, rank, state, treeInstance, day, month,
                 year, TT, initiationday, initiationmonth, initiationyear,
                 initiationTT):
        #self.name = "Phytomer_" + repr(phytomerNumber)
        self.name = phytomerNumber

        self.rank = rank
        self.state = state
        self.tree = treeInstance
        self.appearanceDay = day
        self.appearanceMonth = month
        self.appearanceYear = year
        self.appearanceTT = TT
        self.initiationDay = initiationday
        self.initiationMonth = initiationmonth
        self.initiationYear = initiationyear
        self.initiationTT = initiationTT
        self.deathday = 0
        self.deathmonth = 0
        self.deathyear = 0
        self.deathTT = 0
        self.leaf = Leaf(self)
        self.bunch = Bunch(self)
        self.internode = Internode(self)
        self.demand = 0
        self.step_apparition = self.tree.simulation.step

    def getName(self):
        return self.name

    def getLeaf(self):
        return self.leaf

    def getBunch(self):
        return self.bunch

    def getRank(self):
        return self.rank

    def getAppearanceDay(self):
        return self.appearanceDay

    def getAppearanceMonth(self):
        return self.appearanceMonth

    def getAppearanceYear(self):
        return self.appearanceYear

    def getInternode(self):
        return self.internode

    def getTree(self):
        return self.tree

    def growth_demand(self, TEff):
        #organs = self.ActiveOrgans()
        #for o in organs :
        #    o.growth_demand(TEff)

        self.leaf.growth_demand(TEff)
        self.internode.growth_demand(TEff)
        if self.bunch.statut != 'RECOLTE':
            self.bunch.growth_demand(TEff)

    # print self.tree.plus_vieille_date
    #print self.leaf.demand, self.demand

    def growth(self):
        #organs = self.ActiveOrgans()
        #for o in organs :
        #    o.growth()
        self.leaf.growth()
        self.internode.growth()
        if self.bunch.statut != 'RECOLTE':
            self.bunch.growth()

    def ActiveOrgans(self):
        if self.state == 'DEAD':
            organs_active = [self.internode]
        if self.state == 'INACTIVE':
            organs_active = [self.leaf, self.bunch]
        if self.state == 'ACTIVE':
            organs_active = [self.leaf, self.bunch, self.internode]
        return (organs_active)

    def compute_facteur_age(self):

        if (GlobalVariables.INCREASE_TAILLE_REGIMES *
            (self.tree.simulation.step + self.step_apparition -
             self.tree.date_plus_jeune_feuille) +
                GlobalVariables.FACTEUR_AGE_INI) > 1:
            self.bunch.facteur_age_regimes = 1
        else:
            self.bunch.facteur_age_regimes = (
                GlobalVariables.INCREASE_TAILLE_REGIMES *
                (self.tree.simulation.step + self.step_apparition -
                 self.tree.date_plus_jeune_feuille) +
                GlobalVariables.FACTEUR_AGE_INI)

        self.bunch.pot_fruits_number = self.bunch.facteur_age_regimes * GlobalVariables.MEAN_FRUIT_NUMBER_ADULTE