import numpy as np def cc_required_time( cc_prev: float, CCo: float, CCx: float, CGC: float, CDC: float, Mode: str, ) -> float: """ Function to find time required to reach canopy_cover at end of previous day, given current CGC or CDC Reference Manual: canopy_cover devlopment (pg. 21-24) Arguments: cc_prev (float): Canopy Cover at previous timestep. CCo (float): Fractional canopy cover size at emergence CCx (float): Maximum canopy cover (fraction of soil cover) CGC (float): Canopy growth coefficient (fraction per gdd) CDC (float): Canopy decline coefficient (fraction per gdd/calendar day) Mode (str): Canopy growth/decline coefficient (fraction per gdd/calendar day) Returns: tReq (float): time required to reach canopy_cover at end of previous day """ ## Get CGC and/or time (gdd or CD) required to reach canopy_cover on previous day ## if Mode == "CGC": if cc_prev <= (CCx / 2): # print(cc_prev,CCo,(tSum-dt),tSum,dt) CGCx = np.log(cc_prev / CCo) # print(np.log(cc_prev/CCo),(tSum-dt),CGCx) else: # print(CCx,CCo,cc_prev) CGCx = np.log((0.25 * CCx * CCx / CCo) / (CCx - cc_prev)) tReq = CGCx / CGC elif Mode == "CDC": tReq = (np.log(1 + (1 - cc_prev / CCx) / 0.05)) / (CDC / CCx) return tReq