# -*- coding: utf-8 -*- """ f Created on Sun May 3 10:47:47 2020 @author: Quirijn """ import math """ ************************************ *** Abrir e ler o arquivo do cenário ************************************ """ RunFile = "C:\Python_Curso\CropSim.run" f = open(RunFile , 'r') file = f.read() # importa o arquivo inteiro numa string file list_str = file.splitlines() # separa o string file por linhas MeteoFile = list_str[5] CropFile = list_str[8] IniDia = int(list_str[11]) #print(MeteoFile, CropFile, IniDia) # para testar o input """ *************************************** *** Abrir e ler o arquivo meteorológico *************************************** """ f = open(MeteoFile , 'r') file = f.read() # importa o arquivo inteiro numa string file list_str = file.splitlines() # separa o string file por linhas Rad, Tmin, Tmax, Vap, Vento, Chuva, Tmed = [''],[''],[''],[''],[''],[''],[''] for i in range(4,369): a = list_str[i].split() Rad.append(float(a[3])) Tmin.append(float(a[4])) Tmax.append(float(a[5])) Vap.append(float(a[6])) Vento.append(float(a[7])) Chuva.append(float(a[8])) Tmed.append((Tmin[i-3]+Tmax[i-3])/2) #print(Rad[1], Vento[365]) #testar input #print(Tmed[1], Tmin[365],Tmed[365],Tmax[365]) """ *************************************** *** Abrir e ler o arquivo de cultura *************************************** """ f = open(CropFile , 'r') file = f.read() # importa o arquivo inteiro numa string file list_str = file.splitlines() # separa o string file por linhas ### Parte 1 - Tabela Kc KcDVS = [] Kc = [] for i in range(7,13): a = list_str[i].split() KcDVS.append(float(a[0])) Kc.append(float(a[1])) ### Soma térmica etc. TSum1 = float(list_str[16].split()[0]) TSum2 = float(list_str[17].split()[0]) Tb = float(list_str[18].split()[0]) MSi = float(list_str[22].split()[0]) IAFi = float(list_str[23].split()[0]) Vida = float(list_str[27].split()[0]) SLA = float(list_str[28].split()[0]) Kext = float(list_str[32].split()[0]) RUE = float(list_str[33].split()[0]) ### Parte 5 - Tabela AMAX e Famax AMAXDVS, AMAX = [],[] for i in range(37,43): a = list_str[i].split() AMAXDVS.append(float(a[0])) AMAX.append(float(a[1])) Tfamax, FAMAX = [],[] for i in range(46,53): a = list_str[i].split() Tfamax.append(float(a[0])) FAMAX.append(float(a[1])) ### Parte 6 e 7 ECf = float(list_str[56].split()[0]) ECr = float(list_str[57].split()[0]) ECc = float(list_str[58].split()[0]) ECs = float(list_str[59].split()[0]) Q10 = float(list_str[63].split()[0]) fRMf = float(list_str[64].split()[0]) fRMr = float(list_str[65].split()[0]) fRMc = float(list_str[66].split()[0]) fRMs = float(list_str[67].split()[0]) ### Parte 8 - Tabela Partição FDVS, Fr, Ff, Fc, Fs = [],[],[],[],[] for i in range(73,80): a = list_str[i].split() FDVS.append(float(a[0])) Fr.append(float(a[1])) Ff.append(float(a[2])) Fc.append(float(a[3])) Fs.append(float(a[4])) """ *************************************** *** *** *** CICLO PRINCIPAL *** *** *** *** *********************************** """ DVS = 0 Dia = IniDia - 1 TSum = 0 IAF = IAFi Massa_r = MSi * Fr[0] Massa_f = MSi * Ff[0] Massa_c = MSi * Fc[0] Massa_s = MSi * Fs[0] while DVS <= 2: Dia = Dia + 1 TSum = TSum + Tmed[Dia] - Tb # Determinar DVS if TSum <= TSum1: DVS = TSum / TSum1 else: DVS = 1 + (TSum-TSum1) / TSum2 # Interpolar os fatores de partição para o DVS específico for i in range(1,7): if DVS < FDVS[i]: Frdia = (Fr[i-1]*(FDVS[i]-DVS) + Fr[i]*(DVS-FDVS[i-1]))/(FDVS[i]-FDVS[i-1]) Ffdia = (Ff[i-1]*(FDVS[i]-DVS) + Ff[i]*(DVS-FDVS[i-1]))/(FDVS[i]-FDVS[i-1]) Fcdia = (Fc[i-1]*(FDVS[i]-DVS) + Fc[i]*(DVS-FDVS[i-1]))/(FDVS[i]-FDVS[i-1]) Fsdia = (Fs[i-1]*(FDVS[i]-DVS) + Fs[i]*(DVS-FDVS[i-1]))/(FDVS[i]-FDVS[i-1]) #print(Dia, DVS, round(Frdia,3),round(Ffdia,3),round(Fcdia,3),round(Fsdia,3)) break