Ignore:
Timestamp:
Jul 16, 2025, 3:25:48 PM (6 days ago)
Author:
jbclement
Message:

PEM:

  • Making the computation of CO2 mass balance more robust, especially regarding 'CO2cond_ps'.
  • Small correction about the dust tendency management for the layering algorithm.
  • Small improvement of the visualization in "visu_evol_layering.py".
  • File "log_launchPEM.txt" renamed into "launchPEM.log".

JBC

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.COMMON/libf/evolution/deftank/visu_evol_layering.py

    r3850 r3851  
    10301030    """
    10311031    h2o = gridded_data['h2o_ice']
     1032    co2 = gridded_data['co2_ice']
    10321033    dust = gridded_data['dust']
    10331034    ngrid, ntime, nslope, nz = h2o.shape
     
    10771078        for isl in range(nslope):
    10781079            ti = top_index[ig, :, isl].copy().astype(int)
     1080            frac_all = np.zeros((nz, ntime, 3), dtype=float)  # store fH2O, fCO2, fDust
    10791081            for t in range(1, ntime):
    10801082                if ti[t] <= 0:
     
    10871089                if zmax <= 0:
    10881090                    continue
     1091                cH2O = np.clip(h2o[ig, t, isl, :zmax], 0, None)
     1092                cCO2 = np.clip(co2[ig, t, isl, :zmax], 0, None)
     1093                cDust = np.clip(dust[ig, t, isl, :zmax], 0, None)
     1094                total = cH2O + cCO2 + cDust
     1095                total[total == 0] = 1.0
     1096                fH2O = cH2O / total
     1097                fCO2 = cCO2 / total
     1098                fDust = cDust / total
     1099                frac_all[:zmax, t, :] = np.stack([fH2O, fCO2, fDust], axis=1)
    10891100
    10901101                h2o_profile = np.clip(h2o[ig, t, isl, :zmax], 0, None)
     
    11051116            ratio_array = 10**log_ratio_array
    11061117            ratio_display = ratio_array[elevation_mask, :]
     1118            display_frac = frac_all[elevation_mask, :, :]
    11071119
    11081120            # Plot
     
    11171129            )
    11181130            x_edges = np.concatenate([date_time, [date_time[-1] + (date_time[-1]-date_time[-2])]])
    1119             attach_format_coord(ax, ratio_display, x_edges, np.concatenate([elev, [elev[-1] + (elev[-1]-elev[-2])]]), is_pcolormesh=True)
     1131            y_edges = np.concatenate([elev, [elev[-1] + (elev[-1]-elev[-2])]])
     1132            def format_coord_all(x, y):
     1133                # check bounds
     1134                if x < x_edges[0] or x > x_edges[-1] or y < y_edges[0] or y > y_edges[-1]:
     1135                    return ''
     1136                # locate cell
     1137                i = np.searchsorted(x_edges, x) - 1
     1138                j = np.searchsorted(y_edges, y) - 1
     1139                i = np.clip(i, 0, display_frac.shape[1]-1)
     1140                j = np.clip(j, 0, display_frac.shape[0]-1)
     1141                # get fractions
     1142                fH2O  = display_frac[j, i, 0]
     1143                fDust = display_frac[j, i, 2]
     1144                obl   = np.interp(x, date_time, obliquity)
     1145                return f"Time={x:.2f}, Elev={y:.2f}, H2O={fH2O:.2f}, Dust={fDust:.2f}, Obl={obl:.2f}°"
     1146
     1147            ax.format_coord = format_coord_all
    11201148            ax.set_title(f"Dust-to-Ice ratio over time (Grid point {ig+1}, Slope {isl+1})", fontweight='bold')
    11211149            ax.set_xlabel('Time (Mars years)')
     
    11381166                    linewidth=1.5
    11391167                )
     1168            ax2.format_coord = format_coord_all
    11401169            ax2.set_ylabel('Obliquity (°)')
    11411170            ax2.tick_params(axis='y')
Note: See TracChangeset for help on using the changeset viewer.