def CalculateVernalizationProgress(IsVernalizable, Vernaprog, DeltaTT, MinTvern, IntTvern, VAI, VBEE, MinDL, MaxDL, DayLength, MaxTvern, LeafNumber, PNini, MinFinalNumber, AMXLFNO, currentdate, cumulTT, calendar): Vernaprog1 = Vernaprog MinFinalNumber1 = MinFinalNumber calendar1 = calendar.copy() if (IsVernalizable == 1 and Vernaprog1 < 1): TT = DeltaTT if (TT >= MinTvern and TT <= IntTvern): Vernaprog = Vernaprog1 + VAI * TT + VBEE else: Vernaprog = Vernaprog1 if (TT > IntTvern): maxVernaProg = VAI * IntTvern + VBEE DLverna = max(MinDL, min(MaxDL, DayLength)) Vernaprog += max( 0, maxVernaProg * (1 + ((IntTvern - TT) / (MaxTvern - IntTvern)) * ((DLverna - MinDL) / (MaxDL - MinDL)))) primordno = 2.0 * LeafNumber + PNini minLeafNumber = MinFinalNumber1 if (Vernaprog >= 1.0 or primordno >= AMXLFNO): MinFinalNumber = max(primordno, MinFinalNumber) calendar = Calendar.CalendarSet("EndVernalisation", currentdate, cumulTT, calendar1) Vernaprog = max(1, Vernaprog) else: potlfno = AMXLFNO - (AMXLFNO - minLeafNumber) * Vernaprog if (primordno >= potlfno): MinFinalNumber = max((potlfno + primordno) / 2.0, MinFinalNumber) calendar = Calendar.CalendarSet("EndVernalisation", currentdate, cumulTT, calendar1) Vernaprog = max(1, Vernaprog) else: MinFinalNumber = MinFinalNumber1 else: Vernaprog = Vernaprog1 MinFinalNumber = MinFinalNumber1 calendar = calendar1.copy() return Vernaprog, MinFinalNumber, calendar
def CalculateUpdateLeafFlag(LeafNumber, HasFlagLeafLiguleAppeared, FinalLeafNumber, calendar, currentdate, cumulTT, phase): if (phase >= 1 and phase < 4): calendar1 = calendar.copy() if (LeafNumber > 0): if (HasFlagLeafLiguleAppeared == 0 and (FinalLeafNumber > 0 and LeafNumber >= FinalLeafNumber)): HasFlagLeafLiguleAppeared = 1 if (Calendar.IsMomentRegistred( "ZC_39_FlagLeafLiguleJustVisible", calendar1) == 0): calendar = Calendar.CalendarSet( "ZC_39_FlagLeafLiguleJustVisible", currentdate, cumulTT, calendar) else: HasFlagLeafLiguleAppeared = 0 calendar = calendar1.copy() return calendar, HasFlagLeafLiguleAppeared
def CalculateRegisterZadok(FinalLeafNumber, LeafNumber, currentdate, cumulTT, slopeTSFLN, intTSFLN, calendar, phase, cumulTTFromZC_65, Der, currentZadokStage): calendar1 = calendar.copy() roundedFinalLeafNumber = int(FinalLeafNumber + 0.5) if (HasReachedHaun(4, LeafNumber) and (Calendar.IsMomentRegistred( "ZC_21_MainShootPlus1Tiller", calendar1) == 0)): calendar = Calendar.CalendarSet("ZC_21_MainShootPlus1Tiller", currentdate, cumulTT, calendar1) currentZadokStage = "ZC_21_MainShootPlus1Tiller" hasZadokStageChanged = 1 elif (HasReachedHaun(5, LeafNumber) and (Calendar.IsMomentRegistred( "ZC_22_MainShootPlus2Tiller", calendar1) == 0)): calendar = Calendar.CalendarSet("ZC_22_MainShootPlus2Tiller", currentdate, cumulTT, calendar1) currentZadokStage = "ZC_22_MainShootPlus2Tiller" hasZadokStageChanged = 1 elif (HasReachedHaun(6, LeafNumber) and (Calendar.IsMomentRegistred( "ZC_23_MainShootPlus3Tiller", calendar1) == 0)): calendar = Calendar.CalendarSet("ZC_23_MainShootPlus3Tiller", currentdate, cumulTT, calendar1) currentZadokStage = "ZC_23_MainShootPlus3Tiller" hasZadokStageChanged = 1 elif (FinalLeafNumber > 0 and HasReachedHaun( slopeTSFLN * FinalLeafNumber - intTSFLN, LeafNumber) and (Calendar.IsMomentRegistred("TerminalSpikelet", calendar1) == 0)): calendar = Calendar.CalendarSet("TerminalSpikelet", currentdate, cumulTT, calendar1) currentZadokStage = "TerminalSpikelet" hasZadokStageChanged = 1 elif (HasReachedFlagLeaf(4, roundedFinalLeafNumber, LeafNumber) and (Calendar.IsMomentRegistred("ZC_30_PseudoStemErection", calendar1) == 0)): calendar = Calendar.CalendarSet("ZC_30_PseudoStemErection", currentdate, cumulTT, calendar1) currentZadokStage = "ZC_30_PseudoStemErection" hasZadokStageChanged = 1 elif (HasReachedFlagLeaf(3, roundedFinalLeafNumber, LeafNumber) and (Calendar.IsMomentRegistred("ZC_31_1stNodeDetectable", calendar1) == 0)): calendar = Calendar.CalendarSet("ZC_31_1stNodeDetectable", currentdate, cumulTT, calendar1) currentZadokStage = "ZC_31_1stNodeDetectable" hasZadokStageChanged = 1 elif (HasReachedFlagLeaf(2, roundedFinalLeafNumber, LeafNumber) and (Calendar.IsMomentRegistred("ZC_32_2ndNodeDetectable", calendar1) == 0)): calendar = Calendar.CalendarSet("ZC_32_2ndNodeDetectable", currentdate, cumulTT, calendar1) currentZadokStage = "ZC_32_2ndNodeDetectable" hasZadokStageChanged = 1 elif (HasReachedFlagLeaf(1, roundedFinalLeafNumber, LeafNumber) and (Calendar.IsMomentRegistred("ZC_37_FlagLeafJustVisible", calendar1) == 0)): calendar = Calendar.CalendarSet("ZC_37_FlagLeafJustVisible", currentdate, cumulTT, calendar1) currentZadokStage = "ZC_37_FlagLeafJustVisible" hasZadokStageChanged = 1 elif ((Calendar.IsMomentRegistred("ZC_85_MidGrainFilling", calendar1) == 0) and phase == 4.5 and cumulTTFromZC_65 >= Der): calendar = Calendar.CalendarSet("ZC_85_MidGrainFilling", currentdate, cumulTT, calendar1) currentZadokStage = "ZC_85_MidGrainFilling" hasZadokStageChanged = 1 else: hasZadokStageChanged = 0 calendar = calendar1.copy() #print currentZadokStage return hasZadokStageChanged, currentZadokStage, calendar
def CalculateCalendar(phase, currentdate, cumulTT, calendar): if (Calendar.IsMomentRegistred(Phase.PreviousMoment(phase), calendar) == 0): calendar = Calendar.CalendarSet(Phase.PreviousMoment(phase), currentdate, cumulTT, calendar) return calendar