File size: 3,077 Bytes
e8721da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ec9d9e0
e8721da
 
 
 
 
ec9d9e0
e8721da
 
 
 
 
ec9d9e0
 
e8721da
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import json


def calcul_metriques_sol(clay, silt, sand, soc):
    """
    Calcule le point de flétrissement (WP), l'humidité actuelle du sol (SM) et la capacité au champ (FC).

    :param clay: Pourcentage d'argil dans le sol (%)
    :param silt: Pourcentage de silt dans le sol (%)
    :param sand: Pourcentage de sand dans le sol (%)
    :param soc: Carbone organique du sol (%)
    :return: WP, SM et FC (%)
    """
    # Calcul de la capacité au champ (FC)
    FC = 0.2576 * silt + 0.2484 * clay + 0.3664 * soc + 20.83

    # Calcul du point de flétrissement (WP)
    WP = 0.026 * clay + 0.5 * soc + 3.0

    # Calcul de l'humidité actuelle du sol (SM) comme 50% de la plage entre FC et WP
    SM = WP + 0.5 * (FC - WP)

    # Retourne les résultats sous forme de dictionnaire
    return round(SM, 2), round(FC, 2), round(WP, 2)


def calculate_ETx(Kc, ETo):
    """
    Calculate the maximum evapotranspiration (ETx) using the crop coefficient (Kc) and reference evapotranspiration (ETo).

    Parameters:
    Kc (float): Crop coefficient
    ETo (float): Reference evapotranspiration (mm)

    Returns:
    float: Maximum evapotranspiration (ETx) in mm
    """
    ETx = Kc * ETo
    return ETx

def calculate_ETa(ETx, soil_moisture, field_capacity, wilting_point):
    """
    Calculate the actual evapotranspiration (ETa) using the maximum evapotranspiration (ETx), soil moisture, field capacity, and wilting point.

    Parameters:
    ETx (float): Maximum evapotranspiration (mm)
    soil_moisture (float): Current soil moisture content (%)
    field_capacity (float): Field capacity of the soil (%)
    wilting_point (float): Wilting point of the soil (%)

    Returns:
    float: Actual evapotranspiration (ETa) in mm
    """
    if soil_moisture > field_capacity:
        ETa = ETx
    elif soil_moisture < wilting_point:
        ETa = 0
    else:
        ETa = ETx * ((soil_moisture - wilting_point) / (field_capacity - wilting_point))
    
    return ETa


def calculate_yield_projection(Yx, ETx, ETa, Ky):
    """
    Calculate the agricultural yield projection using the FAO water production function.

    Parameters:
    Yx (float): Maximum yield (quintal/ha)
    ETx (float): Maximum evapotranspiration (mm)
    ETa (float): Actual evapotranspiration (mm)
    Ky (float): Yield response factor

    Returns:
    float: Projected yield (quintal/ha)
    """
    Ya = Yx * (1 - Ky * (1 - ETa / ETx))
    return round(Ya, 2)




if __name__ =="__main__":
    # Exemple d'utilisation
    Yx = 10000  # Rendement maximum en quintal/ha
    Kc = 1.2  # Coefficient de culture
    Ky = 1.25  # Facteur de réponse du rendement pour le maïs
    soil_moisture, field_capacity, wilting_point = calcul_metriques_sol(clay=20, silt=40, sand=40, soc=1.5)
    ETo = 5.0  # Evapotranspiration de référence en mm/jour
    ETx = calculate_ETx(Kc, ETo)
    ETa = calculate_ETa(ETx, soil_moisture, field_capacity, wilting_point)

    projected_yield = calculate_yield_projection(Yx, ETx, ETa, Ky)
    print(f"Le rendement projeté est de {projected_yield} quintal/ha")