示例#1
0
    #     r.plot_conductivities()
    #     shoot_segs = rs.getShootSegments()
    #     print("Shoot segments", [str(s) for s in shoot_segs])
    #     print("Shoot type", rs.subTypes[0])
    """ numerical solution of transpiration -1 cm3/day"""
    krs_, l_, jc_ = [], [], []
    for t in np.linspace(10, simtime, simtime - 10 + 1):

        # l_.append(rs.getSummed("length")) # does not work, since rs is precomputed
        ana = pb.SegmentAnalyser(rs)
        ana.filter("creationTime", -1, t + 1.e-4)
        l_.append(
            ana.getSummed("length")
        )  # does not work, all rs is precomputedana.getParameter("length")

        suf = r.get_suf(t)
        krs, jc = r.get_krs(t)  # in xylem flux.h
        krs_.append(krs)
        jc_.append(jc)
        if t > 10 and t % 10 == 0:  # for the suf plot
            suf_[-1].append(suf)

    time = np.linspace(10, simtime, simtime - 10 + 1)
    ax1.plot(time, krs_, cols[ii], label=labels[ii], alpha=0.7)
    ax2.plot(time, jc_, cols[ii], label=labels[ii])

# """ Krs plot """
ax3.set_xlabel("simulation time")
ax1.set_ylabel("root system conductance $krs$ $[cm^2 d^{-1}]$")
ax2.set_ylabel("Transpiration at eswp -500 cm $[cm^3/day]$")
ax1.legend()
示例#2
0
    v_[j] = np.sum(v)
    v1_[j] = np.sum(v[t == 1])
    v2_[j] = np.sum(v[t == 2])
    v3_[j] = np.sum(v[t == 3])
    v4_[j] = np.sum(v[t == 4])
    segment_[j] = np.sum(segment)
    """ set up xylem parameters """
    r = XylemFluxPython(rs)
    r.setKrTables(
        [kr0[:, 1], kr1[:, 1], kr2[:, 1], kr3[:, 1], kr4[:, 1], kr5[:, 1]],
        [kr0[:, 0], kr1[:, 0], kr2[:, 0], kr3[:, 0], kr4[:, 0], kr5[:, 0]])
    r.setKxTables(
        [kz0[:, 1], kz1[:, 1], kz2[:, 1], kz3[:, 1], kz4[:, 1], kz5[:, 1]],
        [kz0[:, 0], kz1[:, 0], kz2[:, 0], kz3[:, 0], kz4[:, 0], kz5[:, 0]])

    suf = r.get_suf(j)
    print("Sum of SUF", np.sum(suf), "from", np.min(suf), "to", np.max(suf),
          "summed positive", np.sum(suf[suf >= 0]))

    krs, jc = r.get_krs(j)
    print("Krs: ", krs)
    print("time: ", j)

    krs_.append(krs)

    if j > 10 and j % 30 == 0:
        suf_.append(suf)
    jc_.append(jc)

print("Total number of segments: ", segment_[-1])
""" Krs and length plot """
示例#3
0
simtime = 20  # [day] for task b
""" root system """
rs = pb.MappedRootSystem()

path = "../../../CPlantBox//modelparameter/rootsystem/"
name = "Glycine_max"
rs.setSeed(1)
rs.readParameters(path + name + ".xml")
rs.getRootSystemParameter().seedPos.z = -0.1
rs.initialize()
rs.simulate(simtime, False)

print()
print("Shoot segments: ", [str(s) for s in rs.getShootSegments()])
print()
""" set up xylem parameters """
r = XylemFluxPython(rs)
r.setKr([kr])  # or use setKrTables, see XylemFlux.h
r.setKx([kz])
r.test()
""" numerical solution of transpiration -1 cm3/day"""
suf = r.get_suf(0.)
print("Sum of SUF", np.sum(suf), "from", np.min(suf), "to", np.max(suf),
      "summed positive", np.sum(suf[suf >= 0]))
krs = r.get_krs(0.)
print("Krs: ", krs)
""" Additional vtk plot """
ana = pb.SegmentAnalyser(r.rs)
ana.addData("SUF", suf)  # cut off for vizualisation
vp.plot_roots(ana, "SUF", "Soil uptake fraction (cm3 day)")  # "fluxes"