/*
 * lib_power_losses.java
 */

import com.comsol.model.*;
import com.comsol.model.util.*;

/** Model exported on May 15 2026, 10:27 by COMSOL 6.4.0.421. */
public class lib_power_losses {

  public static Model run() {
    Model model = ModelUtil.create("Model");

//    From the File menu, choose Application Libraries.
//    In the Application Libraries window, select Battery Design Module > Lithium-Ion Batteries, Performance > lib_base_model_1d in the tree.
//    Click Open.

    model.component().create("comp1", true);

    model.component("comp1").geom().create("geom1", 1);

    model.component("comp1").mesh().create("mesh1");

    model.component("comp1").physics().create("liion", "LithiumIonBatteryMPH", "geom1");

    model.study().create("std1");
    model.study("std1").create("cdi", "CurrentDistributionInitialization");
    model.study("std1").feature("cdi").set("solnum", "auto");
    model.study("std1").feature("cdi").set("notsolnum", "auto");
    model.study("std1").feature("cdi").set("outputmap", new String[]{});
    model.study("std1").feature("cdi").set("ngenAUX", "1");
    model.study("std1").feature("cdi").set("goalngenAUX", "1");
    model.study("std1").feature("cdi").set("ngenAUX", "1");
    model.study("std1").feature("cdi").set("goalngenAUX", "1");
    model.study("std1").create("time", "Transient");
    model.study("std1").feature("time").set("initialtime", "0");
    model.study("std1").feature("time").set("solnum", "auto");
    model.study("std1").feature("time").set("notsolnum", "auto");
    model.study("std1").feature("time").set("outputmap", new String[]{});

//    To import content from file, use:
//    model.param().loadFile("FILENAME");
    model.param().set("epss_neg", "0.6", "Active electrode volume fraction, negative");
    model.param().set("epss_pos", "0.6", "Active electrode volume fraction, positive");
    model.param().set("epss_binder_neg", "0.1", "Binder volume fraction, negative");
    model.param().set("epss_binder_pos", "0.1", "Binder volume fraction, positive");
    model.param().set("epsl_neg", "1-epss_neg-epss_binder_neg", "Electrolyte volume fraction, negative");
    model.param().set("epsl_sep", "0.4", "Separator volume fraction");
    model.param().set("epsl_pos", "1-epss_pos-epss_binder_pos", "Electrolyte volume fraction, positive");
    model.param().set("sigmas_neg", "1[S/m]", "Effective electrode conductivity, negative");
    model.param().set("sigmas_pos", "1[S/m]", "Effective electrode conductivity, positive");
    model.param().set("rp_neg", "6[um]", "Electrode particle radius, negative");
    model.param().set("rp_pos", "5[um]", "Electrode particle radius, positive");
    model.param().set("cs_max_neg", "31507[mol/m^3]", "Maximum concentration, negative");
    model.param().set("cs_max_pos", "49000[mol/m^3]", "Maximum concentration, positive");
    model.param().set("i0_ref_neg", "10[A/m^2]", "Exchange current density at 50% lithiation, negative");
    model.param().set("i0_ref_pos", "10[A/m^2]", "Exchange current density at 50% lithiation, positive");
    model.param().set("L_sep", "20[um]", "Separator thickness");
    model.param().set("L_pos", "45[um]", "Positive electrode thickness");
    model.param()
         .set("L_neg", "(1-0.1)*epss_pos*cs_max_pos*L_pos/(0.8*epss_neg*cs_max_neg)", "Negative electrode thickness");
    model.param().set("L_ccs", "10[um]", "Thickness of current collectors");
    model.param().set("V_cell", "90[%]*(10.5[mm])^2*pi*70[mm]", "Active cell volume");
    model.param().set("A_cell", "V_cell/(L_neg+L_sep+L_pos+L_ccs/2)", "Cell area");
    model.param().set("soc_init", "0", "Initial SOC");
    model.param().set("T", "25[degC]", "Temperature");

    model.component("comp1").material().create("mat1", "Common");
    model.component("comp1").material("mat1").propertyGroup("def").func().create("an1", "Analytic");
    model.component("comp1").material("mat1").propertyGroup()
         .create("ElectrolyteConductivity", "ElectrolyteConductivity", "Electrolyte conductivity");
    model.component("comp1").material("mat1").propertyGroup("ElectrolyteConductivity").func()
         .create("an1", "Analytic");
    model.component("comp1").material("mat1").propertyGroup()
         .create("SpeciesProperties", "SpeciesProperties", "Species properties");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func().create("an1", "Analytic");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func()
         .create("int1", "Interpolation");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func()
         .create("int2", "Interpolation");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func()
         .create("int3", "Interpolation");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func().create("an2", "Analytic");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func()
         .create("int4", "Interpolation");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func()
         .create("int5", "Interpolation");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func()
         .create("int6", "Interpolation");
    model.component("comp1").material("mat1").propertyGroup()
         .create("ElectrolyteSaltConcentration", "ElectrolyteSaltConcentration", "Electrolyte salt concentration");
    model.component("comp1").material("mat1").label("LiPF6 in 3:7 EC:EMC (Liquid, Li-ion Battery)");
    model.component("comp1").material("mat1").propertyGroup("def").func("an1").set("funcname", "Dl");
    model.component("comp1").material("mat1").propertyGroup("def").func("an1")
         .set("expr", "1.01e3*exp(1.01*c)*exp(-1.56e3/T)*exp(-4.87e2/T*c)*1e-6");
    model.component("comp1").material("mat1").propertyGroup("def").func("an1").set("args", new String[]{"c", "T"});
    model.component("comp1").material("mat1").propertyGroup("def").func("an1").set("fununit", "cm^2/s");
    model.component("comp1").material("mat1").propertyGroup("def").func("an1")
         .set("argunit", new String[]{"mol/L", "K"});
    model.component("comp1").material("mat1").propertyGroup("def").func("an1")
         .set("plotaxis", new String[]{"on", "on"});
    model.component("comp1").material("mat1").propertyGroup("def").func("an1")
         .set("plotfixedvalue", new String[]{"0", "0"});
    model.component("comp1").material("mat1").propertyGroup("def").func("an1")
         .set("plotargs", new String[][]{{"c", "0", "3000"}, {"T", "263.15[K]", "263.15[K]"}});
    model.component("comp1").material("mat1").propertyGroup("def")
         .set("diffusion", new String[]{"Dl(min(max(c,eps),3[M]),min(max(T,-10[degC]),50[degC]))", "0", "0", "0", "Dl(min(max(c,eps),3[M]),min(max(T,-10[degC]),50[degC]))", "0", "0", "0", "Dl(min(max(c,eps),3[M]),min(max(T,-10[degC]),50[degC]))"});
    model.component("comp1").material("mat1").propertyGroup("def")
         .setPropertyInfo("diffusion", "Johannes Landesfeind and Hubert A. Gasteiger, Temperature and Concentration Dependence of the Ionic Transport Properties of Lithium-Ion Battery Electrolytes, Journal of The Electrochemical Society, 166 (14) A3079-A3097 (2019)");
    model.component("comp1").material("mat1").propertyGroup("def").addInput("concentration");
    model.component("comp1").material("mat1").propertyGroup("def").addInput("temperature");
    model.component("comp1").material("mat1").propertyGroup("ElectrolyteConductivity").func("an1")
         .set("funcname", "sigmal");
    model.component("comp1").material("mat1").propertyGroup("ElectrolyteConductivity").func("an1")
         .set("expr", "5.21e-1*(1+(T-2.28e2))*c*(1-1.06*sqrt(c)+3.53e-1*(1-3.59e-3*exp(1000/T))*c)/(1+c^4*1.48e-3*(exp(1000/T)))");
    model.component("comp1").material("mat1").propertyGroup("ElectrolyteConductivity").func("an1")
         .set("args", new String[]{"c", "T"});
    model.component("comp1").material("mat1").propertyGroup("ElectrolyteConductivity").func("an1")
         .set("fununit", "mS/cm");
    model.component("comp1").material("mat1").propertyGroup("ElectrolyteConductivity").func("an1")
         .set("argunit", new String[]{"mol/L", "K"});
    model.component("comp1").material("mat1").propertyGroup("ElectrolyteConductivity").func("an1")
         .set("plotaxis", new String[]{"on", "on"});
    model.component("comp1").material("mat1").propertyGroup("ElectrolyteConductivity").func("an1")
         .set("plotfixedvalue", new String[]{"0", "0"});
    model.component("comp1").material("mat1").propertyGroup("ElectrolyteConductivity").func("an1")
         .set("plotargs", new String[][]{{"c", "0", "5000"}, {"T", "-10[degC]", "50[degC]"}});
    model.component("comp1").material("mat1").propertyGroup("ElectrolyteConductivity")
         .set("sigmal", new String[]{"sigmal(max(c,eps),min(max(T,-10[degC]),50[degC]))", "0", "0", "0", "sigmal(max(c,eps),min(max(T,-10[degC]),50[degC]))", "0", "0", "0", "sigmal(max(c,eps),min(max(T,-10[degC]),50[degC]))"});
    model.component("comp1").material("mat1").propertyGroup("ElectrolyteConductivity")
         .setPropertyInfo("sigmal", "Johannes Landesfeind and Hubert A. Gasteiger, Temperature and Concentration Dependence of the Ionic Transport Properties of Lithium-Ion Battery Electrolytes, Journal of The Electrochemical Society, 166 (14) A3079-A3097 (2019)");
    model.component("comp1").material("mat1").propertyGroup("ElectrolyteConductivity").addInput("concentration");
    model.component("comp1").material("mat1").propertyGroup("ElectrolyteConductivity").addInput("temperature");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("an1").set("funcname", "TDF");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("an1")
         .set("expr", "p1_TDF(T)*c^2+p2_TDF(T)*c+p3_TDF(T)");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("an1")
         .set("args", new String[]{"c", "T"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("an1").set("fununit", "1");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("an1")
         .set("argunit", new String[]{"mol/L", "K"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("an1")
         .set("plotaxis", new String[]{"on", "on"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("an1")
         .set("plotfixedvalue", new String[]{"0", "0"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("an1")
         .set("plotargs", new String[][]{{"c", "0", "3000"}, {"T", "-10[degC]", "50[degC]"}});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int1")
         .set("funcname", "p1_TDF");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int1")
         .set("table", new String[][]{{"263.15", "2.45e-1"}, 
         {"273.15", "7.23e-1"}, 
         {"283.15", "7.36e-1"}, 
         {"293.15", "6.65e-1"}, 
         {"303.15", "3.7e-1"}, 
         {"313.15", "1.85e-2"}, 
         {"323.15", "-3.92e-2"}});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int1")
         .set("fununit", new String[]{"1"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int1")
         .set("argunit", new String[]{"K"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int2")
         .set("funcname", "p2_TDF");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int2")
         .set("table", new String[][]{{"263.15", "4.49e-1"}, 
         {"273.15", "9.8e-2"}, 
         {"283.15", "-1.55e-1"}, 
         {"293.15", "-2.57e-1"}, 
         {"303.15", "7.6e-1"}, 
         {"313.15", "1.75"}, 
         {"323.15", "1.76"}});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int2")
         .set("fununit", new String[]{"1"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int2")
         .set("argunit", new String[]{"K"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int3")
         .set("funcname", "p3_TDF");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int3")
         .set("table", new String[][]{{"263.15", "3.41e-1"}, 
         {"273.15", "5e-1"}, 
         {"283.15", "8.63e-1"}, 
         {"293.15", "1.03"}, 
         {"303.15", "7.17e-1"}, 
         {"313.15", "4.8e-1"}, 
         {"323.15", "6.75e-1"}});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int3")
         .set("fununit", new String[]{"1"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int3")
         .set("argunit", new String[]{"K"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("an2")
         .set("funcname", "tplus");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("an2")
         .set("expr", "p1_tplus(T)*c^2+p2_tplus(T)*c+p3_tplus(T)");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("an2")
         .set("args", new String[]{"c", "T"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("an2").set("fununit", "1");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("an2")
         .set("argunit", new String[]{"mol/L", "K"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("an2")
         .set("plotaxis", new String[]{"on", "on"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("an2")
         .set("plotfixedvalue", new String[]{"0", "0"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("an2")
         .set("plotargs", new String[][]{{"c", "0", "3000"}, {"T", "-10[degC]", "50[degC]"}});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int4")
         .set("funcname", "p1_tplus");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int4")
         .set("table", new String[][]{{"263.15", "4.1e-2"}, 
         {"273.15", "1.04e-1"}, 
         {"283.15", "1.09e-1"}, 
         {"293.15", "1.4e-1"}, 
         {"303.15", "2.97e-2"}, 
         {"313.15", "-1.39e-2"}, 
         {"323.15", "-5.87e-3"}});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int4")
         .set("fununit", new String[]{"1"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int4")
         .set("argunit", new String[]{"K"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int5")
         .set("funcname", "p2_tplus");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int5")
         .set("table", new String[][]{{"263.15", "-3.63e-1"}, 
         {"273.15", "-3.38e-1"}, 
         {"283.15", "-4.12e-1"}, 
         {"293.15", "-5.74e-1"}, 
         {"303.15", "-2.1e-1"}, 
         {"313.15", "-9.01e-2"}, 
         {"323.15", "-1.3e-1"}});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int5")
         .set("fununit", new String[]{"1"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int5")
         .set("argunit", new String[]{"K"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int6")
         .set("funcname", "p3_tplus");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int6")
         .set("table", new String[][]{{"263.15", "-9.17e-2"}, 
         {"273.15", "2.13e-1"}, 
         {"283.15", "3.98e-1"}, 
         {"293.15", "5.57e-1"}, 
         {"303.15", "4.92e-1"}, 
         {"313.15", "5.26e-1"}, 
         {"323.15", "6.12e-1"}});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int6")
         .set("fununit", new String[]{"1"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").func("int6")
         .set("argunit", new String[]{"K"});
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties")
         .set("transpNum", "tplus(min(max(c,eps),3[M]),min(max(T,-10[degC]),50[degC]))");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties")
         .setPropertyInfo("transpNum", "Johannes Landesfeind and Hubert A. Gasteiger, Temperature and Concentration Dependence of the Ionic Transport Properties of Lithium-Ion Battery Electrolytes, Journal of The Electrochemical Society, 166 (14) A3079-A3097 (2019)");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties")
         .set("fcl", "TDF(min(max(c,eps),3[M]),min(max(T,-10[degC]),50[degC]))-1");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties")
         .setPropertyInfo("fcl", "Johannes Landesfeind and Hubert A. Gasteiger, Temperature and Concentration Dependence of the Ionic Transport Properties of Lithium-Ion Battery Electrolytes, Journal of The Electrochemical Society, 166 (14) A3079-A3097 (2019)");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").addInput("concentration");
    model.component("comp1").material("mat1").propertyGroup("SpeciesProperties").addInput("temperature");
    model.component("comp1").material("mat1").propertyGroup("ElectrolyteSaltConcentration").identifier("cElsalt");
    model.component("comp1").material("mat1").propertyGroup("ElectrolyteSaltConcentration")
         .set("cElsalt", "1200[mol/m^3]");

    model.component("comp1").geom("geom1").run();

    model.component("comp1").material().create("mat2", "Common");
    model.component("comp1").material("mat2").propertyGroup("def").func().create("int1", "Interpolation");
    model.component("comp1").material("mat2").propertyGroup("def").func().create("int2", "Interpolation");
    model.component("comp1").material("mat2").propertyGroup("def").func().create("int3", "Interpolation");
    model.component("comp1").material("mat2").propertyGroup("def").func().create("int4", "Interpolation");
    model.component("comp1").material("mat2").propertyGroup()
         .create("ElectrodePotential", "ElectrodePotential", "Equilibrium potential");
    model.component("comp1").material("mat2").propertyGroup()
         .create("OperationalSOC", "OperationalSOC", "Operational electrode state of charge");
    model.component("comp1").material("mat2").propertyGroup().create("ic", "ic", "Intercalation strain");
    model.component("comp1").material("mat2").propertyGroup("ic").func().create("int1", "Interpolation");
    model.component("comp1").material("mat2").propertyGroup()
         .create("EquilibriumConcentration", "EquilibriumConcentration", "Equilibrium concentration");
    model.component("comp1").material("mat2").propertyGroup()
         .create("EquilibriumPotentialWithDOCInput", "EquilibriumPotentialWithDOCInput", "Equilibrium potential (using degree of conversion as model input)");
    model.component("comp1").material("mat2").propertyGroup()
         .create("EquilibriumDegreeOfConversion", "EquilibriumDegreeOfConversion", "Equilibrium degree of conversion");
    model.component("comp1").material("mat2").label("Graphite, LixC6 MCMB (Negative, Li-ion Battery)");
    model.component("comp1").material("mat2").propertyGroup("def").func("int1").set("funcname", "E_int");
    model.component("comp1").material("mat2").propertyGroup("def").func("int1")
         .set("table", new String[][]{{"0", "32.47"}, {"0.333", "28.56"}, {"0.5", "58.06"}, {"1", "108.67"}});
    model.component("comp1").material("mat2").propertyGroup("def").func("int1").set("fununit", new String[]{"GPa"});
    model.component("comp1").material("mat2").propertyGroup("def").func("int1").set("argunit", new String[]{"1"});
    model.component("comp1").material("mat2").propertyGroup("def").func("int2").set("funcname", "nu_int");
    model.component("comp1").material("mat2").propertyGroup("def").func("int2")
         .set("table", new String[][]{{"0", "0.32"}, {"0.333", "0.39"}, {"0.5", "0.34"}, {"1", "0.24"}});
    model.component("comp1").material("mat2").propertyGroup("def").func("int2").set("fununit", new String[]{""});
    model.component("comp1").material("mat2").propertyGroup("def").func("int3").set("funcname", "Eeq");
    model.component("comp1").material("mat2").propertyGroup("def").func("int3")
         .set("table", new String[][]{{"0", "2.781186612"}, 
         {"0.01", "1.520893224"}, 
         {"0.02", "0.893922607"}, 
         {"0.03", "0.581284406"}, 
         {"0.04", "0.42452844"}, 
         {"0.05", "0.344895805"}, 
         {"0.06", "0.303146342"}, 
         {"0.07", "0.279578072"}, 
         {"0.08", "0.264093089"}, 
         {"0.09", "0.251347845"}, 
         {"0.1", "0.238588379"}, 
         {"0.11", "0.224803164"}, 
         {"0.12", "0.210294358"}, 
         {"0.13", "0.196408586"}, 
         {"0.14", "0.184624188"}, 
         {"0.15", "0.175188157"}, 
         {"0.16", "0.167373311"}, 
         {"0.17", "0.160452107"}, 
         {"0.18", "0.154025412"}, 
         {"0.19", "0.147948522"}, 
         {"0.2", "0.142214997"}, 
         {"0.21", "0.13688271"}, 
         {"0.22", "0.132033114"}, 
         {"0.23", "0.127747573"}, 
         {"0.24", "0.124091616"}, 
         {"0.25", "0.121103387"}, 
         {"0.26", "0.11878567"}, 
         {"0.27", "0.117102317"}, 
         {"0.28", "0.115980205"}, 
         {"0.29", "0.115317054"}, 
         {"0.3", "0.114993965"}, 
         {"0.31", "0.114890105"}, 
         {"0.32", "0.114886278"}, 
         {"0.33", "0.114884619"}, 
         {"0.34", "0.114873068"}, 
         {"0.35", "0.114824904"}, 
         {"0.36", "0.114644725"}, 
         {"0.37", "0.114372614"}, 
         {"0.38", "0.114017954"}, 
         {"0.39", "0.11359371"}, 
         {"0.4", "0.11311133"}, 
         {"0.41", "0.112575849"}, 
         {"0.42", "0.111980245"}, 
         {"0.43", "0.111297682"}, 
         {"0.44", "0.110470149"}, 
         {"0.45", "0.109393081"}, 
         {"0.46", "0.107900592"}, 
         {"0.47", "0.10576964"}, 
         {"0.48", "0.102783317"}, 
         {"0.49", "0.09889031"}, 
         {"0.5", "0.094391564"}, 
         {"0.51", "0.089921069"}, 
         {"0.52", "0.086112415"}, 
         {"0.53", "0.083265315"}, 
         {"0.54", "0.081326247"}, 
         {"0.55", "0.080074892"}, 
         {"0.56", "0.07928329"}, 
         {"0.57", "0.078778765"}, 
         {"0.58", "0.078447703"}, 
         {"0.59", "0.078220432"}, 
         {"0.6", "0.078055641"}, 
         {"0.61", "0.077929111"}, 
         {"0.62", "0.077826563"}, 
         {"0.63", "0.077739397"}, 
         {"0.64", "0.077662227"}, 
         {"0.65", "0.077591472"}, 
         {"0.66", "0.077524557"}, 
         {"0.67", "0.077459463"}, 
         {"0.68", "0.077394455"}, 
         {"0.69", "0.077327934"}, 
         {"0.7", "0.077258337"}, 
         {"0.71", "0.077184077"}, 
         {"0.72", "0.077103499"}, 
         {"0.73", "0.077014851"}, 
         {"0.74", "0.076916258"}, 
         {"0.75", "0.07680571"}, 
         {"0.76", "0.07668104"}, 
         {"0.77", "0.07653992"}, 
         {"0.78", "0.076379839"}, 
         {"0.79", "0.076198086"}, 
         {"0.8", "0.075991699"}, 
         {"0.81", "0.075757371"}, 
         {"0.82", "0.075491288"}, 
         {"0.83", "0.075188813"}, 
         {"0.84", "0.07484398"}, 
         {"0.85", "0.074448647"}, 
         {"0.86", "0.07399118"}, 
         {"0.87", "0.073454466"}, 
         {"0.88", "0.072812991"}, 
         {"0.89", "0.072028722"}, 
         {"0.9", "0.071045433"}, 
         {"0.91", "0.069780996"}, 
         {"0.92", "0.068116222"}, 
         {"0.93", "0.065874599"}, 
         {"0.94", "0.062770873"}, 
         {"0.95", "0.058253898"}, 
         {"0.96", "0.051075794"}, 
         {"0.97", "0.038790069"}, 
         {"0.98", "0.020172191"}});
    model.component("comp1").material("mat2").propertyGroup("def").func("int3").set("extrap", "linear");
    model.component("comp1").material("mat2").propertyGroup("def").func("int3").set("fununit", new String[]{"V"});
    model.component("comp1").material("mat2").propertyGroup("def").func("int3").set("argunit", new String[]{""});
    model.component("comp1").material("mat2").propertyGroup("def").func("int3").set("defineinv", true);
    model.component("comp1").material("mat2").propertyGroup("def").func("int3").set("funcinvname", "Eeq_inv");
    model.component("comp1").material("mat2").propertyGroup("def").func("int4").set("funcname", "dEeqdT");
    model.component("comp1").material("mat2").propertyGroup("def").func("int4")
         .set("table", new String[][]{{"0", "3.0e-4"}, 
         {"0.17", "0"}, 
         {"0.24", "-6e-5"}, 
         {"0.28", "-1.6e-4"}, 
         {"0.5", "-1.6e-4"}, 
         {"0.54", "-9e-5"}, 
         {"0.71", "-9e-5"}, 
         {"0.85", "-1.0e-4"}, 
         {"1.0", "-1.2e-4"}});
    model.component("comp1").material("mat2").propertyGroup("def").func("int4").set("fununit", new String[]{"V/K"});
    model.component("comp1").material("mat2").propertyGroup("def").func("int4").set("argunit", new String[]{""});
    model.component("comp1").material("mat2").propertyGroup("def").set("youngsmodulus", "");
    model.component("comp1").material("mat2").propertyGroup("def").set("poissonsratio", "");
    model.component("comp1").material("mat2").propertyGroup("def").set("youngsmodulus", "E_int(c/csmax)");
    model.component("comp1").material("mat2").propertyGroup("def")
         .setPropertyInfo("youngsmodulus", "Yue Qi et al 2010 J. Electrochem. Soc. 157 A558");
    model.component("comp1").material("mat2").propertyGroup("def").set("poissonsratio", "nu_int(c/csmax)");
    model.component("comp1").material("mat2").propertyGroup("def")
         .setPropertyInfo("poissonsratio", "Yue Qi et al 2010 J. Electrochem. Soc. 157 A558");
    model.component("comp1").material("mat2").propertyGroup("def")
         .set("electricconductivity", new String[]{"100[S/m]", "0", "0", "0", "100[S/m]", "0", "0", "0", "100[S/m]"});
    model.component("comp1").material("mat2").propertyGroup("def")
         .setPropertyInfo("electricconductivity", "V. Srinivasan, and J. Newman, \u201cDesign and Optimization of a Natural Graphite/Iron Phosphate Lithium Ion Cell,\u201d J. Electrochem. Soc., vol. 151, p. 1530, 2004.");
    model.component("comp1").material("mat2").propertyGroup("def")
         .set("diffusion", new String[]{"1.4523e-13*exp(68025.7/8.314*(1/(T_ref/1[K])-1/(T2/1[K])))[m^2/s]", "0", "0", "0", "1.4523e-13*exp(68025.7/8.314*(1/(T_ref/1[K])-1/(T2/1[K])))[m^2/s]", "0", "0", "0", "1.4523e-13*exp(68025.7/8.314*(1/(T_ref/1[K])-1/(T2/1[K])))[m^2/s]"});
    model.component("comp1").material("mat2").propertyGroup("def")
         .setPropertyInfo("diffusion", "K. Kumaresan, G. Sikha, and R. E. White, \u201cThermal Model for a Li-Ion Cell,\u201d J. Electrochem. Soc., vol. 155, p. A164, 2008.");
    model.component("comp1").material("mat2").propertyGroup("def")
         .set("thermalconductivity", new String[]{"1[W/(m*K)]", "0", "0", "0", "1[W/(m*K)]", "0", "0", "0", "1[W/(m*K)]"});
    model.component("comp1").material("mat2").propertyGroup("def")
         .setPropertyInfo("thermalconductivity", "S. Chen, C. Wan, and Y. Wang, J. Power Sources, 140, 111 (2005).");
    model.component("comp1").material("mat2").propertyGroup("def").set("heatcapacity", "750[J/(kg*K)]");
    model.component("comp1").material("mat2").propertyGroup("def")
         .setPropertyInfo("heatcapacity", "SI Chemical Data, John Wiley & Sons, 1994");
    model.component("comp1").material("mat2").propertyGroup("def").set("density", "2300[kg/m^3]");
    model.component("comp1").material("mat2").propertyGroup("def")
         .setPropertyInfo("density", "SI Chemical Data, John Wiley & Sons, 1994");
    model.component("comp1").material("mat2").propertyGroup("def").set("csmax", "31507[mol/m^3]");
    model.component("comp1").material("mat2").propertyGroup("def").descr("csmax", "");
    model.component("comp1").material("mat2").propertyGroup("def").set("T_ref", "318[K]");
    model.component("comp1").material("mat2").propertyGroup("def").descr("T_ref", "");
    model.component("comp1").material("mat2").propertyGroup("def").set("T2", "min(393.15,max(T,223.15))");
    model.component("comp1").material("mat2").propertyGroup("def").descr("T2", "");
    model.component("comp1").material("mat2").propertyGroup("def").addInput("temperature");
    model.component("comp1").material("mat2").propertyGroup("def").addInput("concentration");
    model.component("comp1").material("mat2").propertyGroup("ElectrodePotential").identifier("eeq");
    model.component("comp1").material("mat2").propertyGroup("ElectrodePotential")
         .set("Eeq", "def.Eeq(doc)+def.dEeqdT(doc)*(T-298[K])");
    model.component("comp1").material("mat2").propertyGroup("ElectrodePotential")
         .setPropertyInfo("Eeq", "D. P Karthikeyan, G. Sikha, and R. E. White, \u201cThermodynamic model development for lithium intercalation electrodes,\u201d J. Power Sources, vol. 185, p. 1398, 2008.");
    model.component("comp1").material("mat2").propertyGroup("ElectrodePotential").set("dEeqdT", "def.dEeqdT(doc)");
    model.component("comp1").material("mat2").propertyGroup("ElectrodePotential")
         .setPropertyInfo("dEeqdT", "K. E. Thomas, and J. Newman, \u201cHeats of mixing and of entropy in porous insertion electrodes,\u201d J. Power Sources., vol. 119-121, p. 844, 2003.");
    model.component("comp1").material("mat2").propertyGroup("ElectrodePotential").set("cEeqref", "def.csmax");
    model.component("comp1").material("mat2").propertyGroup("ElectrodePotential").set("doc", "c/cEeqref");
    model.component("comp1").material("mat2").propertyGroup("ElectrodePotential")
         .descr("doc", "Degree of conversion (state of lithiation)");
    model.component("comp1").material("mat2").propertyGroup("ElectrodePotential").addInput("concentration");
    model.component("comp1").material("mat2").propertyGroup("ElectrodePotential").addInput("temperature");
    model.component("comp1").material("mat2").propertyGroup("OperationalSOC").identifier("opsoc");
    model.component("comp1").material("mat2").propertyGroup("OperationalSOC").set("socmax", "def.Eeq_inv(E_min)");
    model.component("comp1").material("mat2").propertyGroup("OperationalSOC").set("socmin", "def.Eeq_inv(E_max)");
    model.component("comp1").material("mat2").propertyGroup("OperationalSOC").set("E_max", "1[V]");
    model.component("comp1").material("mat2").propertyGroup("OperationalSOC").set("E_min", "0.075[V]");
    model.component("comp1").material("mat2").propertyGroup("ic").func("int1").set("funcname", "dVOLdSOL");
    model.component("comp1").material("mat2").propertyGroup("ic").func("int1")
         .set("table", new String[][]{{"0", "0"}, 
         {"0.006802721088435382", "0.12500000000000178"}, 
         {"0.06316812439261421", "1.2736486486486491"}, 
         {"0.11175898931000966", "2.523648648648649"}, 
         {"0.17978620019436342", "3.5709459459459474"}, 
         {"0.2400388726919339", "4.449324324324325"}, 
         {"0.2905733722060252", "5.192567567567568"}, 
         {"0.3566569484936831", "5.66554054054054"}, 
         {"0.4188532555879494", "5.969594594594595"}, 
         {"0.48104956268221566", "6.10472972972973"}, 
         {"0.5432458697764819", "6.173648648648647"}, 
         {"0.58600583090379", "6.306081081081081"}, 
         {"0.6112730806608356", "7.726351351351352"}, 
         {"0.6443148688046647", "8.570945945945946"}, 
         {"0.694849368318756", "9.449324324324323"}, 
         {"0.7414965986394557", "10.29391891891892"}, 
         {"0.7764820213799805", "10.902027027027025"}, 
         {"0.8231292517006802", "11.543918918918918"}, 
         {"0.8542274052478133", "12.152027027027026"}, 
         {"0.8833819241982507", "12.827702702702702"}, 
         {"0.9183673469387755", "12.996621621621621"}, 
         {"0.9494655004859086", "13.16554054054054"}});
    model.component("comp1").material("mat2").propertyGroup("ic").func("int1").set("extrap", "linear");
    model.component("comp1").material("mat2").propertyGroup("ic").func("int1").set("fununit", new String[]{"%"});

    return model;
  }

  public static Model run2(Model model) {
    model.component("comp1").material("mat2").propertyGroup("ic").func("int1").set("argunit", new String[]{"1"});
    model.component("comp1").material("mat2").propertyGroup("ic").identifier("is");
    model.component("comp1").material("mat2").propertyGroup("ic").set("dvol", "dVOLdSOL(c/def.csmax)");
    model.component("comp1").material("mat2").propertyGroup("ic")
         .setPropertyInfo("dvol", "S. Schweidler, L. de Biasi, A. Schiele, P. Hartmann, T. Brezesinski and J. Janek, \"Volume Changes of Graphite Anodes Revisited: A Combined Operando X-Ray Diffraction and In Situ Pressure Analysis Study\", J. Phys. Chem. C, 2018, 122, 8829\u20138835");
    model.component("comp1").material("mat2").propertyGroup("ic").addInput("concentration");
    model.component("comp1").material("mat2").propertyGroup("EquilibriumConcentration")
         .set("csEq", "def.csmax*def.Eeq_inv(V)");
    model.component("comp1").material("mat2").propertyGroup("EquilibriumConcentration")
         .addInput("electricpotential");
    model.component("comp1").material("mat2").propertyGroup("EquilibriumPotentialWithDOCInput")
         .set("Eeq", "def.Eeq(doc)+def.dEeqdT(doc)*(T-298[K])");
    model.component("comp1").material("mat2").propertyGroup("EquilibriumPotentialWithDOCInput")
         .set("dEeqdT", "def.dEeqdT(doc)");
    model.component("comp1").material("mat2").propertyGroup("EquilibriumPotentialWithDOCInput")
         .addInput("degreeofconversion");
    model.component("comp1").material("mat2").propertyGroup("EquilibriumPotentialWithDOCInput")
         .addInput("temperature");
    model.component("comp1").material("mat2").propertyGroup("EquilibriumDegreeOfConversion")
         .set("docEq", "def.Eeq_inv(V)");
    model.component("comp1").material("mat2").propertyGroup("EquilibriumDegreeOfConversion")
         .addInput("electricpotential");
    model.component("comp1").material().create("mat3", "Common");
    model.component("comp1").material("mat3").propertyGroup("def").func().create("int1", "Interpolation");
    model.component("comp1").material("mat3").propertyGroup()
         .create("ElectrodePotential", "ElectrodePotential", "Equilibrium potential");
    model.component("comp1").material("mat3").propertyGroup()
         .create("OperationalSOC", "OperationalSOC", "Operational electrode state of charge");
    model.component("comp1").material("mat3").propertyGroup().create("ic", "ic", "Intercalation strain");
    model.component("comp1").material("mat3").propertyGroup("ic").func().create("int1", "Interpolation");
    model.component("comp1").material("mat3").propertyGroup()
         .create("EquilibriumConcentration", "EquilibriumConcentration", "Equilibrium concentration");
    model.component("comp1").material("mat3").propertyGroup()
         .create("EquilibriumPotentialWithDOCInput", "EquilibriumPotentialWithDOCInput", "Equilibrium potential (using degree of conversion as model input)");
    model.component("comp1").material("mat3").propertyGroup()
         .create("EquilibriumDegreeOfConversion", "EquilibriumDegreeOfConversion", "Equilibrium degree of conversion");
    model.component("comp1").material("mat3").propertyGroup().create("pg1", "def", "Electric conductivity");
    model.component("comp1").material("mat3").propertyGroup("pg1").func().create("int1", "Interpolation");
    model.component("comp1").material("mat3").label("NMC 111, LiNi0.33Mn0.33Co0.33O2 (Positive, Li-ion Battery)");
    model.component("comp1").material("mat3").propertyGroup("def").func("int1").set("funcname", "Eeq");
    model.component("comp1").material("mat3").propertyGroup("def").func("int1")
         .set("table", new String[][]{{"0", "4.44"}, 
         {"0.032", "4.34"}, 
         {"0.102", "4.23"}, 
         {"0.187", "4.13"}, 
         {"0.289", "4.025"}, 
         {"0.38", "3.945"}, 
         {"0.543", "3.835"}, 
         {"0.775", "3.71"}, 
         {"0.872", "3.62"}, 
         {"0.925", "3.51"}, 
         {"0.943", "3.42"}, 
         {"0.957", "3.30"}, 
         {"0.966", "3.165"}, 
         {"0.970", "3.02"}, 
         {"0.972", "2.90"}, 
         {"0.975", "2.688"}});
    model.component("comp1").material("mat3").propertyGroup("def").func("int1").set("extrap", "linear");
    model.component("comp1").material("mat3").propertyGroup("def").func("int1").set("fununit", new String[]{"V"});
    model.component("comp1").material("mat3").propertyGroup("def").func("int1").set("argunit", new String[]{""});
    model.component("comp1").material("mat3").propertyGroup("def").func("int1").set("defineinv", true);
    model.component("comp1").material("mat3").propertyGroup("def").func("int1").set("funcinvname", "Eeq_inv");
    model.component("comp1").material("mat3").propertyGroup("def").set("poissonsratio", "");
    model.component("comp1").material("mat3").propertyGroup("def").set("youngsmodulus", "");
    model.component("comp1").material("mat3").propertyGroup("def").set("thermalconductivity", "");
    model.component("comp1").material("mat3").propertyGroup("def").set("thermalexpansioncoefficient", "");
    model.component("comp1").material("mat3").propertyGroup("def").set("poissonsratio", "0.25");
    model.component("comp1").material("mat3").propertyGroup("def")
         .setPropertyInfo("poissonsratio", "Mechanical and physical properties of LiNi0.33Mn0.33Co0.33O2 (NMC),\nE Cheng, K. Hong, N. Taylor, H. Choe,\nJ. Wolfenstinec, J. Sakamotoa,\nJournal of the European Ceramic Society 37 (2017) 3213\u20133217");
    model.component("comp1").material("mat3").propertyGroup("def").set("youngsmodulus", "199[GPa]");
    model.component("comp1").material("mat3").propertyGroup("def")
         .setPropertyInfo("youngsmodulus", "Mechanical and physical properties of LiNi0.33Mn0.33Co0.33O2 (NMC),\nE Cheng, K. Hong, N. Taylor, H. Choe,\nJ. Wolfenstinec, J. Sakamotoa,\nJournal of the European Ceramic Society 37 (2017) 3213\u20133217");
    model.component("comp1").material("mat3").propertyGroup("def")
         .set("thermalconductivity", new String[]{"3.6[W/(m*K)]", "0", "0", "0", "3.6[W/(m*K)]", "0", "0", "0", "3.6[W/(m*K)]"});
    model.component("comp1").material("mat3").propertyGroup("def")
         .setPropertyInfo("thermalconductivity", "Mechanical and physical properties of LiNi0.33Mn0.33Co0.33O2 (NMC),\nE Chenga, K. Hong, N. Taylor, H. Choe,\nJ. Wolfenstinec, J. Sakamotoa,\nJournal of the European Ceramic Society 37 (2017) 3213\u20133217");
    model.component("comp1").material("mat3").propertyGroup("def")
         .set("thermalexpansioncoefficient", new String[]{"1.2e-5[1/K]", "0", "0", "0", "1.2e-5[1/K]", "0", "0", "0", "1.2e-5[1/K]"});
    model.component("comp1").material("mat3").propertyGroup("def")
         .setPropertyInfo("thermalexpansioncoefficient", "Mechanical and physical properties of LiNi0.33Mn0.33Co0.33O2 (NMC),\nE Chenga, K. Hong, N. Taylor, H. Choe,\nJ. Wolfenstinec, J. Sakamotoa,\nJournal of the European Ceramic Society 37 (2017) 3213\u20133217");
    model.component("comp1").material("mat3").propertyGroup("def")
         .set("diffusion", new String[]{"1e-14[m^2/s]", "0", "0", "0", "1e-14[m^2/s]", "0", "0", "0", "1e-14[m^2/s]"});
    model.component("comp1").material("mat3").propertyGroup("def")
         .setPropertyInfo("diffusion", "Jing Ying Ko et al, J. Electrochem. Soc., 166, A2939");
    model.component("comp1").material("mat3").propertyGroup("def").set("csmax", "49000[mol/m^3]");
    model.component("comp1").material("mat3").propertyGroup("def").descr("csmax", "");
    model.component("comp1").material("mat3").propertyGroup("ElectrodePotential").identifier("eeq");
    model.component("comp1").material("mat3").propertyGroup("ElectrodePotential")
         .set("Eeq", "def.Eeq(doc)+dEeqdT*(T-298[K])");
    model.component("comp1").material("mat3").propertyGroup("ElectrodePotential")
         .setPropertyInfo("Eeq", "W. Zheng, M. Shui, J. Shu, S. Gao, D. Xu, L. Chen, L. Feng and Y. Ren, \" GITT studies on oxide cathode LiNi1/3Co1/3Mn1/3O2 synthesized by citric acid assisted high-energy ball milling\", Bull. Mater. Sci., vol. 36, p. A495, 2013");
    model.component("comp1").material("mat3").propertyGroup("ElectrodePotential")
         .set("dEeqdT", "-10[J/mol/K]/F_const");
    model.component("comp1").material("mat3").propertyGroup("ElectrodePotential")
         .setPropertyInfo("dEeqdT", "V Viswanathan, D Choi, D Wang, W Xu, S Towne, R Williford, JG Zhang, J Liu and Z Yang \"Effect of entropy change on lithium intercalation in cathodes and anodes on Li-ion battery thermal management\", Journal of Power Sources 195 (2010) 3720-3729");
    model.component("comp1").material("mat3").propertyGroup("ElectrodePotential").set("cEeqref", "def.csmax");
    model.component("comp1").material("mat3").propertyGroup("ElectrodePotential")
         .setPropertyInfo("cEeqref", "W. Zheng, M. Shui, J. Shu, S. Gao, D. Xu, L. Chen, L. Feng and Y. Ren, \" GITT studies on oxide cathode LiNi1/3Co1/3Mn1/3O2 synthesized by citric acid assisted high-energy ball milling\", Bull. Mater. Sci., vol. 36, p. A495, 2013");
    model.component("comp1").material("mat3").propertyGroup("ElectrodePotential").set("doc", "c/cEeqref");
    model.component("comp1").material("mat3").propertyGroup("ElectrodePotential")
         .descr("doc", "Degree of conversion (state of lithiation)");
    model.component("comp1").material("mat3").propertyGroup("ElectrodePotential").addInput("concentration");
    model.component("comp1").material("mat3").propertyGroup("ElectrodePotential").addInput("temperature");
    model.component("comp1").material("mat3").propertyGroup("OperationalSOC").identifier("opsoc");
    model.component("comp1").material("mat3").propertyGroup("OperationalSOC").set("socmax", "def.Eeq_inv(E_min)");
    model.component("comp1").material("mat3").propertyGroup("OperationalSOC").set("socmin", "def.Eeq_inv(E_max)");
    model.component("comp1").material("mat3").propertyGroup("OperationalSOC").set("E_max", "4.4[V]");
    model.component("comp1").material("mat3").propertyGroup("OperationalSOC").set("E_min", "3.3[V]");
    model.component("comp1").material("mat3").propertyGroup("ic").func("int1").set("funcname", "dVOLdSOL");
    model.component("comp1").material("mat3").propertyGroup("ic").func("int1")
         .set("table", new String[][]{{"1", "0"}, 
         {"0.9260263416001121", "-0.010256410256411108"}, 
         {"0.8670351688384477", "-0.1948717948717955"}, 
         {"0.8113086731119519", "-0.27692307692307727"}, 
         {"0.7506669468964551", "-0.37948717948718036"}, 
         {"0.6949460557657279", "-0.502564102564103"}, 
         {"0.628563822334314", "-0.5846153846153856"}, 
         {"0.55562421185372", "-0.6666666666666674"}, 
         {"0.501531455793751", "-0.7076923076923083"}, 
         {"0.4441600112091916", "-0.7487179487179496"}, 
         {"0.3851716407454113", "-0.953846153846154"}, 
         {"0.3278338237354632", "-1.241025641025642"}, 
         {"0.2737943113352951", "-1.671794871794872"}, 
         {"0.24269440941572107", "-2.0205128205128213"}});
    model.component("comp1").material("mat3").propertyGroup("ic").func("int1").set("extrap", "linear");
    model.component("comp1").material("mat3").propertyGroup("ic").func("int1").set("fununit", new String[]{"%"});
    model.component("comp1").material("mat3").propertyGroup("ic").func("int1").set("argunit", new String[]{"1"});
    model.component("comp1").material("mat3").propertyGroup("ic").identifier("is");
    model.component("comp1").material("mat3").propertyGroup("ic").set("dvol", "dVOLdSOL(c/def.csmax)");
    model.component("comp1").material("mat3").propertyGroup("ic")
         .setPropertyInfo("dvol", "R. Koerver and others, \u201cChemo-mechanical expansion of lithium electrode materials \u2014 on the route to mechanically optimized all-solid-state batteries,\u201d Energy Environ. Sci., vol. 11, pp. 2142\u20132158, 201");
    model.component("comp1").material("mat3").propertyGroup("ic").addInput("concentration");
    model.component("comp1").material("mat3").propertyGroup("EquilibriumConcentration")
         .set("csEq", "def.csmax*def.Eeq_inv(V)");
    model.component("comp1").material("mat3").propertyGroup("EquilibriumConcentration")
         .addInput("electricpotential");
    model.component("comp1").material("mat3").propertyGroup("EquilibriumPotentialWithDOCInput")
         .set("Eeq", "def.Eeq(doc)+dEeqdT*(T-298[K])");
    model.component("comp1").material("mat3").propertyGroup("EquilibriumPotentialWithDOCInput")
         .set("dEeqdT", "-10[J/mol/K]/F_const");
    model.component("comp1").material("mat3").propertyGroup("EquilibriumPotentialWithDOCInput")
         .addInput("degreeofconversion");
    model.component("comp1").material("mat3").propertyGroup("EquilibriumPotentialWithDOCInput")
         .addInput("temperature");
    model.component("comp1").material("mat3").propertyGroup("EquilibriumDegreeOfConversion")
         .set("docEq", "def.Eeq_inv(V)");
    model.component("comp1").material("mat3").propertyGroup("EquilibriumDegreeOfConversion")
         .addInput("electricpotential");
    model.component("comp1").material("mat3").propertyGroup("pg1").func("int1").set("source", "file");
    model.component("comp1").material("mat3").propertyGroup("pg1").func("int1").set("importedname", "NMC_333.txt");
    model.component("comp1").material("mat3").propertyGroup("pg1").func("int1").set("importeddim", "2D");
    model.component("comp1").material("mat3").propertyGroup("pg1").func("int1")
         .set("funcnametable", new String[][]{{"log_sigmas", "1"}});
    model.component("comp1").material("mat3").propertyGroup("pg1").func("int1").set("filecolumns", 3);
    model.component("comp1").material("mat3").propertyGroup("pg1").func("int1")
         .set("columnKeys", new String[]{"col1", "col2", "col3"});
    model.component("comp1").material("mat3").propertyGroup("pg1").func("int1")
         .set("columnType", new String[]{"col1", "arg", "col2", "arg", "col3", "value"});
    model.component("comp1").material("mat3").propertyGroup("pg1").func("int1")
         .set("funcnames", new String[]{"col1", "int1", "col2", "int1", "col3", "log_sigmas"});
    model.component("comp1").material("mat3").propertyGroup("pg1").func("int1").set("fununit", new String[]{""});
    model.component("comp1").material("mat3").propertyGroup("pg1").func("int1")
         .set("argunit", new String[]{"1", "1/K"});
    model.component("comp1").material("mat3").propertyGroup("pg1").func("int1").set("sourcetype", "model");
    model.component("comp1").material("mat3").propertyGroup("pg1")
         .set("electricconductivity", new String[]{"10^log_sigmas(x,1000/T)[S/cm]", "0", "0", "0", "10^log_sigmas(x,1000/T)[S/cm]", "0", "0", "0", "10^log_sigmas(x,1000/T)[S/cm]"});
    model.component("comp1").material("mat3").propertyGroup("pg1")
         .setPropertyInfo("electricconductivity", "Ruhul Amin and Yet-Ming Chiang 2016 J. Electrochem. Soc. 163 A1512");
    model.component("comp1").material("mat3").propertyGroup("pg1").set("x", "min(max(1-c/def.csmax,0),1)");
    model.component("comp1").material("mat3").propertyGroup("pg1").descr("x", "Degree of delithiation");
    model.component("comp1").material("mat3").propertyGroup("pg1").addInput("temperature");
    model.component("comp1").material("mat3").propertyGroup("pg1").addInput("concentration");

    model.component("comp1").geom("geom1").create("i1", "Interval");
    model.component("comp1").geom("geom1").feature("i1").set("specify", "len");
    model.component("comp1").geom("geom1").feature("i1").setIndex("len", "L_neg", 0);
    model.component("comp1").geom("geom1").feature("i1").setIndex("len", "L_sep", 1);
    model.component("comp1").geom("geom1").feature("i1").setIndex("len", "L_pos", 2);
    model.component("comp1").geom("geom1").run("i1");
    model.component("comp1").geom("geom1").run();

    model.component("comp1").material("mat1").selection().set(2);

    model.component("comp1").selection().create("sel1", "Explicit");
    model.component("comp1").selection("sel1").geom(1);
    model.component("comp1").selection("sel1").label("Separator");
    model.component("comp1").selection("sel1").set(2);

    model.component("comp1").material("mat1").selection().named("sel1");
    model.component("comp1").material("mat2").selection().set(1);

    model.component("comp1").selection().create("sel2", "Explicit");
    model.component("comp1").selection("sel2").geom(1);
    model.component("comp1").selection("sel2").label("Negative Electrode");
    model.component("comp1").selection("sel2").set(1);

    model.component("comp1").material("mat2").selection().named("sel2");
    model.component("comp1").material("mat3").selection().set(3);

    model.component("comp1").selection().create("sel3", "Explicit");
    model.component("comp1").selection("sel3").geom(1);
    model.component("comp1").selection("sel3").label("Positive Electrode");
    model.component("comp1").selection("sel3").set(3);

    model.component("comp1").material("mat3").selection().named("sel3");

    model.component("comp1").physics("liion").prop("Ac").set("Ac", "A_cell");
    model.component("comp1").physics("liion").prop("CellSettings").set("CellSOCandInitialChargeInventory", true);
    model.component("comp1").physics("liion").feature("socicd1").set("SOC_init", "soc_init");
    model.component("comp1").physics("liion").feature("socicd1").feature("neges1").selection().named("sel2");
    model.component("comp1").physics("liion").feature("socicd1").feature("poses1").selection().named("sel3");
    model.component("comp1").physics("liion").feature("sep1").set("epsl", "epsl_sep");
    model.component("comp1").physics("liion").create("pce1", "PorousElectrode", 1);
    model.component("comp1").physics("liion").feature("pce1").label("Porous Electrode - Negative");
    model.component("comp1").physics("liion").feature("pce1").selection().named("sel2");
    model.component("comp1").physics("liion").feature("pce1").set("ElectrolyteMaterial", "mat1");
    model.component("comp1").physics("liion").feature("pce1")
         .set("sigma", new String[]{"sigmas_neg", "0", "0", "0", "sigmas_neg", "0", "0", "0", "sigmas_neg"});
    model.component("comp1").physics("liion").feature("pce1").set("epss", "epss_neg");
    model.component("comp1").physics("liion").feature("pce1").set("epsl", "epsl_neg");
    model.component("comp1").physics("liion").feature("pce1").set("ElectricCorrModel", "NoCorr");
    model.component("comp1").physics("liion").feature("pce1").feature("pin1").set("rp", "rp_neg");
    model.component("comp1").physics("liion").feature("pce1").feature("per1").set("i0_ref", "i0_ref_neg");
    model.component("comp1").physics("liion").feature().duplicate("pce2", "pce1");
    model.component("comp1").physics("liion").feature("pce2").label("Porous Electrode - Positive");
    model.component("comp1").physics("liion").feature("pce2").selection().named("sel3");
    model.component("comp1").physics("liion").feature("pce2")
         .set("sigma", new String[]{"sigmas_pos", "0", "0", "0", "sigmas_pos", "0", "0", "0", "sigmas_pos"});
    model.component("comp1").physics("liion").feature("pce2").set("epss", "epss_pos");
    model.component("comp1").physics("liion").feature("pce2").set("epsl", "epsl_pos");
    model.component("comp1").physics("liion").feature("pce2").feature("pin1").set("rp", "rp_pos");
    model.component("comp1").physics("liion").feature("pce2").feature("per1").set("i0_ref", "i0_ref_pos");
    model.component("comp1").physics("liion").create("egnd1", "ElectricGround", 0);
    model.component("comp1").physics("liion").feature("egnd1").selection().set(1);

    model.component("comp1").selection().create("sel4", "Explicit");
    model.component("comp1").selection("sel4").geom(0);
    model.component("comp1").selection("sel4").label("Negative CC");
    model.component("comp1").selection("sel4").set(1);

    model.component("comp1").physics("liion").feature("egnd1").selection().named("sel4");
    model.component("comp1").physics("liion").create("lc1", "LoadCycle", 0);
    model.component("comp1").physics("liion").feature("lc1").selection().set(4);
    model.component("comp1").physics("liion").feature("lc1").set("LoadType", "Galvanostatic");
    model.component("comp1").physics("liion").feature("lc1").set("VoltageProbe", true);
    model.component("comp1").physics("liion").feature("lc1").create("crate1", "CRate", -1);
    model.component("comp1").physics("liion").feature("lc1").feature("crate1").set("setVal", 1);

    model.common("cminpt").set("modified", new String[][]{{"temperature", "T"}});

    model.component("comp1").variable().create("var1");

//    To import content from file, use:
//    model.component("comp1").variable("var1").loadFile("FILENAME");
    model.component("comp1").variable("var1")
         .set("sol_neg", "liion.soc_average_pce1", "Degree of lithiation, negative");
    model.component("comp1").variable("var1")
         .set("sol_pos", "liion.soc_average_pce2", "Degree of lithiation, positive");
    model.component("comp1").variable("var1").set("soc_cell", "liion.SOC_cell", "Battery cell state of charge");
    model.component("comp1").variable("var1")
         .set("E_ocp_neg", "mat2.def.Eeq(sol_neg)", "Open-circuit potential in negative electrode");
    model.component("comp1").variable("var1")
         .set("E_ocp_pos", "mat3.def.Eeq(sol_pos)", "Open-circuit potential in positive electrode");
    model.component("comp1").variable("var1").set("E_ocv_cell", "E_ocp_pos-E_ocp_neg", "Open-circuit cell voltage");
    model.component("comp1").variable("var1").set("E_cell", "liion.lc1.E_app", "Cell voltage");
    model.component("comp1").variable("var1")
         .set("E_pol_tot", "E_cell-E_ocv_cell", "Total battery cell polarization");
    model.component("comp1").variable("var1")
         .set("I_1C", "liion.I_1C_cell/A_cell", "1 h charge/discharge current density");

    model.component("comp1").probe("liion_lc1_volt").set("descractive", true);
    model.component("comp1").probe("liion_lc1_volt").set("descr", "Cell voltage");

    model.result().table().create("tbl1", "Table");

    model.component("comp1").probe("liion_lc1_volt").set("table", "tbl1");

    model.result().table("tbl1").label("Cell Voltage Probe Data");

    model.study("std1").feature("time").set("tunit", "h");
    model.study("std1").feature("time").set("tlist", "range(0,0.1,0.9)");
    model.study("std1").createAutoSequences("all");

    model.component("comp1").probe("liion_lc1_volt").genResult("none");

    model.sol("sol1").runAll();

    model.result().create("pg2", "PlotGroup1D");
    model.result("pg2").set("data", "dset1");
    model.result("pg2").label("Boundary Electrode Potential with Respect to Ground (liion)");
    model.result("pg2").set("titletype", "none");
    model.result("pg2").set("legendpos", "middleright");
    model.result("pg2").create("glob1", "Global");
    model.result("pg2").feature("glob1").set("unit", new String[]{""});
    model.result("pg2").feature("glob1").set("expr", new String[]{"liion.lc1.E_app"});
    model.result("pg2").feature("glob1").set("descr", new String[]{"Applied voltage"});
    model.result("pg2").feature("glob1").set("xdatasolnumtype", "level1");
    model.result("pg2").feature("glob1").set("legend", true);
    model.result("pg2").feature("glob1").set("autosolution", false);
    model.result("pg2").feature("glob1").set("autodescr", true);
    model.result("pg2").set("legendpos", "middleright");
    model.result("pg2").create("glob2", "Global");
    model.result("pg2").feature("glob2").set("unit", new String[]{""});
    model.result("pg2").feature("glob2").set("expr", new String[]{"liion.lc1.I_app"});
    model.result("pg2").feature("glob2").set("descr", new String[]{"Applied current"});
    model.result("pg2").feature("glob2").set("xdatasolnumtype", "level1");
    model.result("pg2").feature("glob2").set("legend", true);
    model.result("pg2").feature("glob2").set("autosolution", false);
    model.result("pg2").feature("glob2").set("autodescr", true);
    model.result("pg2").set("twoyaxes", true);
    model.result("pg2").setIndex("plotonsecyaxis", true, 1, 1);
    model.result().create("pg3", "PlotGroup1D");
    model.result("pg3").set("data", "dset1");
    model.result("pg3").set("ylabel", "SOC (1)");
    model.result("pg3").set("titletype", "none");
    model.result("pg3").set("legendpos", "middleleft");
    model.result("pg3").label("Cell and Average Electrode Cell State of Charge (liion)");
    model.result("pg3").create("glob1", "Global");
    model.result("pg3").feature("glob1").set("unit", new String[]{""});
    model.result("pg3").feature("glob1").set("expr", new String[]{"liion.SOC_cell"});
    model.result("pg3").feature("glob1").set("descr", new String[]{"Cell state of charge"});
    model.result("pg3").feature("glob1").set("xdatasolnumtype", "level1");
    model.result("pg3").feature("glob1").set("legend", true);
    model.result("pg3").feature("glob1").set("autosolution", false);
    model.result("pg3").feature("glob1").set("autodescr", true);
    model.result("pg3").create("glob2", "Global");
    model.result("pg3").feature("glob2").set("unit", new String[]{"", ""});
    model.result("pg3").feature("glob2")
         .set("expr", new String[]{"liion.soc_average_pce1", "liion.soc_average_pce2"});
    model.result("pg3").feature("glob2")
         .set("descr", new String[]{"Average SOC, Porous Electrode - Negative", "Average SOC, Porous Electrode - Positive"});
    model.result("pg3").feature("glob2").set("xdatasolnumtype", "level1");
    model.result("pg3").feature("glob2").set("legend", true);
    model.result("pg3").feature("glob2").set("autosolution", false);
    model.result("pg3").feature("glob2").set("autodescr", true);
    model.result("pg3").feature("glob2").set("linestyle", "dashed");
    model.result().create("pg4", "PlotGroup1D");
    model.result("pg4").set("data", "dset1");
    model.result("pg4").label("Electrode Potential with Respect to Adjacent Reference (liion)");
    model.result("pg4").create("lngr1", "LineGraph");
    model.result("pg4").feature("lngr1").set("xdata", "expr");
    model.result("pg4").feature("lngr1").set("xdataexpr", "x");
    model.result("pg4").feature("lngr1").selection().geom("geom1", 1);
    model.result("pg4").feature("lngr1").selection().set(1, 2, 3);
    model.result("pg4").feature("lngr1").set("expr", new String[]{"liion.Evsref"});
    model.result("pg4").feature("lngr1").set("resolution", "norefine");
    model.result("pg4").feature("lngr1").create("col1", "Color");
    model.result("pg4").feature("lngr1").feature("col1").set("expr", "t");
    model.result("pg4").feature("lngr1").feature("col1").set("colorlegend", true);
    model.result("pg4").feature("lngr1").feature("col1").set("colortable", "Viridis");
    model.result("pg4").feature("lngr1").feature("col1").set("legendtitle", "Time");
    model.result("pg4").feature("lngr1").feature("col1").set("unit", "min");
    model.result("pg4").set("showlegendstitle", true);
    model.result("pg4").set("showlegendsunit", true);
    model.result("pg4").set("titletype", "manual");
    model.result("pg4").set("title", "Solid lines: Negative electrode, Dashed lines: Positive electrode");
    model.result("pg4").feature("lngr1").create("filt1", "LineGraphFilter");
    model.result("pg4").feature("lngr1").feature("filt1").set("expr", "isdefined(root.comp1.liion.isNegative)");
    model.result("pg4").create("lngr2", "LineGraph");
    model.result("pg4").feature("lngr2").set("xdata", "expr");
    model.result("pg4").feature("lngr2").set("xdataexpr", "x");
    model.result("pg4").feature("lngr2").selection().geom("geom1", 1);
    model.result("pg4").feature("lngr2").selection().set(1, 2, 3);
    model.result("pg4").feature("lngr2").set("expr", new String[]{"liion.Evsref"});
    model.result("pg4").feature("lngr2").create("filt1", "LineGraphFilter");
    model.result("pg4").feature("lngr2").feature("filt1").set("expr", "isdefined(root.comp1.liion.isPositive)");
    model.result("pg4").feature("lngr2").create("col1", "Color");
    model.result("pg4").feature("lngr2").feature("col1").set("expr", "t");
    model.result("pg4").feature("lngr2").feature("col1").set("colorlegend", false);
    model.result("pg4").feature("lngr2").feature("col1").set("colortable", "Viridis");
    model.result("pg4").feature("lngr2").set("linestyle", "dashed");
    model.result("pg4").feature("lngr2").set("resolution", "norefine");
    model.result("pg4").set("ylabelactive", true);
    model.result("pg4").set("ylabel", "Negative electrode potential (V)");
    model.result("pg4").set("twoyaxes", true);
    model.result("pg4").setIndex("plotonsecyaxis", true, 1, 1);
    model.result("pg4").set("yseclabelactive", true);
    model.result("pg4").set("yseclabel", "Positive electrode potential (V)");
    model.result().create("pg5", "PlotGroup1D");
    model.result("pg5").set("data", "dset1");
    model.result("pg5").label("Electrolyte Salt Concentration (liion)");
    model.result("pg5").set("titletype", "none");
    model.result("pg5").create("lngr1", "LineGraph");
    model.result("pg5").feature("lngr1").set("xdata", "expr");
    model.result("pg5").feature("lngr1").set("xdataexpr", "x");
    model.result("pg5").feature("lngr1").selection().geom("geom1", 1);
    model.result("pg5").feature("lngr1").selection().set(1, 2, 3);
    model.result("pg5").feature("lngr1").set("expr", new String[]{"cl"});
    model.result("pg5").feature("lngr1").create("col1", "Color");
    model.result("pg5").feature("lngr1").feature("col1").set("expr", "t");
    model.result("pg5").feature("lngr1").feature("col1").set("colorlegend", true);
    model.result("pg5").feature("lngr1").feature("col1").set("colortable", "Viridis");
    model.result("pg5").feature("lngr1").feature("col1").set("legendtitle", "Time");
    model.result("pg5").feature("lngr1").feature("col1").set("unit", "min");
    model.result("pg5").set("showlegendstitle", true);
    model.result("pg5").set("showlegendsunit", true);
    model.result().create("pg6", "PlotGroup1D");
    model.result("pg6").set("data", "dset1");
    model.result("pg6").label("Volumetric Current Density (liion)");
    model.result("pg6").set("titletype", "none");
    model.result("pg6").create("lngr1", "LineGraph");
    model.result("pg6").feature("lngr1").set("xdata", "expr");
    model.result("pg6").feature("lngr1").set("xdataexpr", "x");
    model.result("pg6").feature("lngr1").selection().geom("geom1", 1);
    model.result("pg6").feature("lngr1").selection().set(1, 2, 3);
    model.result("pg6").feature("lngr1").set("expr", new String[]{"liion.ivtot"});
    model.result("pg6").feature("lngr1").set("resolution", "norefine");
    model.result("pg6").feature("lngr1").create("col1", "Color");
    model.result("pg6").feature("lngr1").feature("col1").set("expr", "t");
    model.result("pg6").feature("lngr1").feature("col1").set("colorlegend", true);
    model.result("pg6").feature("lngr1").feature("col1").set("colortable", "Viridis");
    model.result("pg6").feature("lngr1").feature("col1").set("legendtitle", "Time");
    model.result("pg6").feature("lngr1").feature("col1").set("unit", "min");
    model.result("pg6").set("showlegendstitle", true);
    model.result("pg6").set("showlegendsunit", true);
    model.result("pg6").set("titletype", "manual");
    model.result("pg6").set("title", "Solid lines: Negative electrode, Dashed lines: Positive electrode");
    model.result("pg6").feature("lngr1").create("filt1", "LineGraphFilter");
    model.result("pg6").feature("lngr1").feature("filt1").set("expr", "isdefined(root.comp1.liion.isNegative)");
    model.result("pg6").create("lngr2", "LineGraph");
    model.result("pg6").feature("lngr2").set("xdata", "expr");
    model.result("pg6").feature("lngr2").set("xdataexpr", "x");
    model.result("pg6").feature("lngr2").selection().geom("geom1", 1);
    model.result("pg6").feature("lngr2").selection().set(1, 2, 3);
    model.result("pg6").feature("lngr2").set("expr", new String[]{"liion.ivtot"});
    model.result("pg6").feature("lngr2").create("filt1", "LineGraphFilter");

    return model;
  }

  public static Model run3(Model model) {
    model.result("pg6").feature("lngr2").feature("filt1").set("expr", "isdefined(root.comp1.liion.isPositive)");
    model.result("pg6").feature("lngr2").create("col1", "Color");
    model.result("pg6").feature("lngr2").feature("col1").set("expr", "t");
    model.result("pg6").feature("lngr2").feature("col1").set("colorlegend", false);
    model.result("pg6").feature("lngr2").feature("col1").set("colortable", "Viridis");
    model.result("pg6").feature("lngr2").set("linestyle", "dashed");
    model.result("pg6").feature("lngr2").set("resolution", "norefine");
    model.result("pg6").set("ylabelactive", true);
    model.result("pg6").set("ylabel", "Negative electrode volumetric current density (A/m<sup>3</sup>)");
    model.result("pg6").set("twoyaxes", true);
    model.result("pg6").setIndex("plotonsecyaxis", true, 1, 1);
    model.result("pg6").set("yseclabelactive", true);
    model.result("pg6").set("yseclabel", "Positive electrode volumetric current density (A/m<sup>3</sup>)");
    model.result().create("pg7", "PlotGroup1D");
    model.result("pg7").set("data", "dset1");
    model.result("pg7").label("Particle Surface State of Charge (liion)");
    model.result("pg7").create("lngr1", "LineGraph");
    model.result("pg7").feature("lngr1").set("xdata", "expr");
    model.result("pg7").feature("lngr1").set("xdataexpr", "x");
    model.result("pg7").feature("lngr1").selection().geom("geom1", 1);
    model.result("pg7").feature("lngr1").selection().set(1, 2, 3);
    model.result("pg7").feature("lngr1").set("expr", new String[]{"liion.socloc_surface"});
    model.result("pg7").feature("lngr1").set("resolution", "norefine");
    model.result("pg7").feature("lngr1").create("col1", "Color");
    model.result("pg7").feature("lngr1").feature("col1").set("expr", "t");
    model.result("pg7").feature("lngr1").feature("col1").set("colorlegend", true);
    model.result("pg7").feature("lngr1").feature("col1").set("colortable", "Viridis");
    model.result("pg7").feature("lngr1").feature("col1").set("legendtitle", "Time");
    model.result("pg7").feature("lngr1").feature("col1").set("unit", "min");
    model.result("pg7").set("showlegendstitle", true);
    model.result("pg7").set("showlegendsunit", true);
    model.result("pg7").set("titletype", "manual");
    model.result("pg7").set("title", "Solid lines: Negative electrode, Dashed lines: Positive electrode");
    model.result("pg7").feature("lngr1").create("filt1", "LineGraphFilter");
    model.result("pg7").feature("lngr1").feature("filt1").set("expr", "isdefined(root.comp1.liion.isNegative)");
    model.result("pg7").create("lngr2", "LineGraph");
    model.result("pg7").feature("lngr2").set("xdata", "expr");
    model.result("pg7").feature("lngr2").set("xdataexpr", "x");
    model.result("pg7").feature("lngr2").selection().geom("geom1", 1);
    model.result("pg7").feature("lngr2").selection().set(1, 2, 3);
    model.result("pg7").feature("lngr2").set("expr", new String[]{"liion.socloc_surface"});
    model.result("pg7").feature("lngr2").create("filt1", "LineGraphFilter");
    model.result("pg7").feature("lngr2").feature("filt1").set("expr", "isdefined(root.comp1.liion.isPositive)");
    model.result("pg7").feature("lngr2").create("col1", "Color");
    model.result("pg7").feature("lngr2").feature("col1").set("expr", "t");
    model.result("pg7").feature("lngr2").feature("col1").set("colorlegend", false);
    model.result("pg7").feature("lngr2").feature("col1").set("colortable", "Viridis");
    model.result("pg7").feature("lngr2").set("linestyle", "dashed");
    model.result("pg7").feature("lngr2").set("resolution", "norefine");
    model.result("pg7").set("ylabelactive", true);
    model.result("pg7").set("ylabel", "Particle surface state of charge (1)");
    model.result("pg2").run();

    model.sol().remove("sol1");
    model.sol().remove("sol2");

    model.result("pg1").set("window", "window1");
    model.result("pg1").run();
    model.result().remove("pg1");

    model.title("Lithium-Ion Battery Base Model in 1D");

    model
         .description("This is a template base model containing the physics, geometry and mesh of a lithium-ion battery, defined in 1D.\n\nThe model makes use of four lithiation parameters which are used to define the relative balancing of the negative and positive electrodes, as well as global cell state of charge (SOC) variable. In addition, a cell cross-sectional capacity parameter is used to define the electrode thicknesses.\n\nThe base model is used by various tutorials in the Battery Design Module Application library.");

    model.label("lib_base_model_1d.mph");

//    In this tutorial we will perform an HPPC (hybrid pulse power characterization) test on the battery model you just loaded. The combined discharge–rest–charge load profile will be applied at 50% state of charge.
//    In the Model Builder window, under Global Definitions, click Parameters 1.
//    In the Settings window for Parameters, locate the Parameters section.
//    In the table, enter the following settings:

    model.param().set("soc_init", "50[%]");

//    Add a second group of parameters from a text file.
//    In the Home toolbar, click Parameters and choose Add > Parameters.

    model.param().create("par2");

//    In the Settings window for Parameters, type Parameters - Pulse in the Label text field.

    model.param("par2").label("Parameters - Pulse");

//    Locate the Parameters section.
//    Click Load from File.
//    Browse to the model's Application Library folder and double-click the file lib_power_losses_parameters.txt.
//    To import content from file, use:
//    model.param("par2").loadFile("FILENAME");
    model.param("par2").set("t_pulse", "10[s]", "Pulse time");
    model.param("par2").set("t_rest", "20[s]", "Rest time between pulses");
    model.param("par2").set("I_pulse", "10[A]", "Cell current during pulse");

//    In the Model Builder window, expand the Component 1 (comp1) > Lithium-Ion Battery (liion) node, then click Load Cycle 1.
//    In the Settings window for Load Cycle, locate the Continuation Conditions section.
//    Select the Use elapsed time only checkbox.

    model.component("comp1").physics("liion").feature("lc1").set("useTimeConditionsOnly", true);

//    In the Model Builder window, expand the Load Cycle 1 node.
//    Right-click C Rate 1 and choose Delete.

    model.component("comp1").physics("liion").feature("lc1").feature().remove("crate1");

//    In the Physics toolbar, click Attributes and choose Current.

    model.component("comp1").physics("liion").feature("lc1").create("curr1", "Current", -1);

//    In the Settings window for Current, locate the Current section.
//    In the \[I_\textrm{set}\] text field, type -I_pulse.

    model.component("comp1").physics("liion").feature("lc1").feature("curr1").set("setVal", "-I_pulse");

//    Locate the Continuation Conditions section.
//    Select the Elapsed time checkbox.

    model.component("comp1").physics("liion").feature("lc1").feature("curr1").set("TimeCondition", true);

//    In the \[t_\textrm{max}\] text field, type t_pulse.

    model.component("comp1").physics("liion").feature("lc1").feature("curr1").set("tmax", "t_pulse");

//    In the Model Builder window, expand the Component 1 (comp1) > Definitions node, then click Component 1 (comp1) > Lithium-Ion Battery (liion) > Load Cycle 1.
//    In the Physics toolbar, click Attributes and choose Rest.

    model.component("comp1").physics("liion").feature("lc1").create("rest1", "Rest", -1);

//    In the Settings window for Rest, locate the Continuation Conditions section.
//    In the \[t_\textrm{max}\] text field, type t_rest.

    model.component("comp1").physics("liion").feature("lc1").feature("rest1").set("tmax", "t_rest");

//    In the Model Builder window, click Load Cycle 1.
//    In the Physics toolbar, click Attributes and choose Current.

    model.component("comp1").physics("liion").feature("lc1").create("curr2", "Current", -1);

//    In the Settings window for Current, locate the Current section.
//    In the \[I_\textrm{set}\] text field, type I_pulse.

    model.component("comp1").physics("liion").feature("lc1").feature("curr2").set("setVal", "I_pulse");

//    Proceed as follows to enable computation of the intercalation power losses in the electrode particles:
//    In the Model Builder window, expand the Component 1 (comp1) > Lithium-Ion Battery (liion) > Porous Electrode - Negative node, then click Particle Intercalation 1.
//    In the Settings window for Particle Intercalation, locate the Material section.
//    From the Particle material list, select Graphite, LixC6 MCMB (Negative, Li-ion Battery) (mat2).

    model.component("comp1").physics("liion").feature("pce1").feature("pin1").set("ParticleMaterial", "mat2");

//    Click to expand the Heat of Mixing and Power Losses section.
//    Select the Define particle-resolved heat of mixing and power losses checkbox.

    model.component("comp1").physics("liion").feature("pce1").feature("pin1").set("HeatMix", true);

//    In the Model Builder window, expand the Porous Electrode - Positive node, then click Particle Intercalation 1.
//    In the Settings window for Particle Intercalation, locate the Material section.
//    From the Particle material list, select NMC 111, LiNi0.33Mn0.33Co0.33O2 (Positive, Li-ion Battery) (mat3).

    model.component("comp1").physics("liion").feature("pce2").feature("pin1").set("ParticleMaterial", "mat3");

//    Locate the Heat of Mixing and Power Losses section.
//    Select the Define particle-resolved heat of mixing and power losses checkbox.

    model.component("comp1").physics("liion").feature("pce2").feature("pin1").set("HeatMix", true);

//    Specify the initial and final time of the simulation in the times list.
//    In the Model Builder window, expand the Study 1 node, then click Step 2: Time Dependent.
//    In the Settings window for Time Dependent, locate the Study Settings section.
//    From the Time unit list, select s.

    model.study("std1").feature("time").set("tunit", "s");

//    In the Output times text field, type 0 2*t_pulse+t_rest.

    model.study("std1").feature("time").set("tlist", "0 2*t_pulse+t_rest");

//    Add a parametric sweep varying the positive electrode thickness parameter. This will perform the HPPC simulation both for a power optimized and an energy-optimized battery. When varying the <c>L_pos</c> parameter, the negative electrode thickness is automatically updated based on the correlation defined in the <l>Parameters 1</l> node.
//    In the Study toolbar, click Parametric Sweep.

    model.study("std1").create("param", "Parametric");

//    In the Settings window for Parametric Sweep, locate the Study Settings section.
//    Click Add.

    model.study("std1").feature("param").setIndex("pname", "A_cell", 0);
    model.study("std1").feature("param").setIndex("plistarr", "", 0);
    model.study("std1").feature("param").setIndex("punit", "m^2", 0);
    model.study("std1").feature("param").setIndex("pname", "A_cell", 0);
    model.study("std1").feature("param").setIndex("plistarr", "", 0);
    model.study("std1").feature("param").setIndex("punit", "m^2", 0);

//    In the table, enter the following settings:

    model.study("std1").feature("param").setIndex("pname", "L_pos", 0);
    model.study("std1").feature("param").setIndex("plistarr", "25 60", 0);
    model.study("std1").feature("param").setIndex("punit", "um", 0);

//    Enable to store all steps taken by the time-dependent solver. This will produce smooth plots when visualizing the results.
//    In the Study toolbar, click Show Default Solver.

    model.study("std1").showAutoSequences("all");

//    In the Model Builder window, expand the Solution 1 (sol1) node, then click Time-Dependent Solver 1.
//    In the Settings window for Time-Dependent Solver, locate the General section.
//    From the Times to store list, select Steps taken by solver.

    model.sol("sol1").feature("t1").set("tout", "tsteps");

//    In the Study toolbar, click Compute.

    model.study("std1").createAutoSequences("all");

    model.sol().create("sol3");
    model.sol("sol3").study("std1");
    model.sol("sol3").label("Parametric Solutions 1");

    model.batch("p1").feature("so1").set("psol", "sol3");

    model.component("comp1").probe("liion_lc1_volt").genResult("none");

    model.batch("p1").run("compute");

    model.result().create("pg2", "PlotGroup1D");
    model.result("pg2").set("data", "dset3");
    model.result("pg2").label("Boundary Electrode Potential with Respect to Ground (liion)");
    model.result("pg2").set("titletype", "none");
    model.result("pg2").set("legendpos", "middleright");
    model.result("pg2").create("glob1", "Global");
    model.result("pg2").feature("glob1").set("unit", new String[]{""});
    model.result("pg2").feature("glob1").set("expr", new String[]{"liion.lc1.E_app"});
    model.result("pg2").feature("glob1").set("descr", new String[]{"Applied voltage"});
    model.result("pg2").feature("glob1").set("xdatasolnumtype", "level1");
    model.result("pg2").feature("glob1").set("legend", true);
    model.result("pg2").feature("glob1").set("autosolution", false);
    model.result("pg2").feature("glob1").set("autodescr", true);
    model.result("pg2").set("legendpos", "middleright");
    model.result("pg2").create("glob2", "Global");
    model.result("pg2").feature("glob2").set("unit", new String[]{""});
    model.result("pg2").feature("glob2").set("expr", new String[]{"liion.lc1.I_app"});
    model.result("pg2").feature("glob2").set("descr", new String[]{"Applied current"});
    model.result("pg2").feature("glob2").set("xdatasolnumtype", "level1");
    model.result("pg2").feature("glob2").set("legend", true);
    model.result("pg2").feature("glob2").set("autosolution", false);
    model.result("pg2").feature("glob2").set("autodescr", true);
    model.result("pg2").set("twoyaxes", true);
    model.result("pg2").setIndex("plotonsecyaxis", true, 1, 1);
    model.result().create("pg3", "PlotGroup1D");
    model.result("pg3").set("data", "dset3");
    model.result("pg3").set("ylabel", "SOC (1)");
    model.result("pg3").set("titletype", "none");
    model.result("pg3").set("legendpos", "middleleft");
    model.result("pg3").label("Cell and Average Electrode Cell State of Charge (liion)");
    model.result("pg3").create("glob1", "Global");
    model.result("pg3").feature("glob1").set("unit", new String[]{""});
    model.result("pg3").feature("glob1").set("expr", new String[]{"liion.SOC_cell"});
    model.result("pg3").feature("glob1").set("descr", new String[]{"Cell state of charge"});
    model.result("pg3").feature("glob1").set("xdatasolnumtype", "level1");
    model.result("pg3").feature("glob1").set("legend", true);
    model.result("pg3").feature("glob1").set("autosolution", false);
    model.result("pg3").feature("glob1").set("autodescr", true);
    model.result("pg3").create("glob2", "Global");
    model.result("pg3").feature("glob2").set("unit", new String[]{"", ""});
    model.result("pg3").feature("glob2")
         .set("expr", new String[]{"liion.soc_average_pce1", "liion.soc_average_pce2"});
    model.result("pg3").feature("glob2")
         .set("descr", new String[]{"Average SOC, Porous Electrode - Negative", "Average SOC, Porous Electrode - Positive"});
    model.result("pg3").feature("glob2").set("xdatasolnumtype", "level1");
    model.result("pg3").feature("glob2").set("legend", true);
    model.result("pg3").feature("glob2").set("autosolution", false);
    model.result("pg3").feature("glob2").set("autodescr", true);
    model.result("pg3").feature("glob2").set("linestyle", "dashed");
    model.result().create("pg4", "PlotGroup1D");
    model.result("pg4").set("data", "dset3");
    model.result("pg4").label("Electrode Potential with Respect to Adjacent Reference (liion)");
    model.result("pg4").create("lngr1", "LineGraph");
    model.result("pg4").feature("lngr1").set("xdata", "expr");
    model.result("pg4").feature("lngr1").set("xdataexpr", "x");
    model.result("pg4").feature("lngr1").selection().geom("geom1", 1);
    model.result("pg4").feature("lngr1").selection().set(1, 2, 3);
    model.result("pg4").feature("lngr1").set("expr", new String[]{"liion.Evsref"});
    model.result("pg4").feature("lngr1").set("resolution", "norefine");
    model.result("pg4").feature("lngr1").create("col1", "Color");
    model.result("pg4").feature("lngr1").feature("col1").set("expr", "t");
    model.result("pg4").feature("lngr1").feature("col1").set("colorlegend", true);
    model.result("pg4").feature("lngr1").feature("col1").set("colortable", "Viridis");
    model.result("pg4").feature("lngr1").feature("col1").set("legendtitle", "Time");
    model.result("pg4").feature("lngr1").feature("col1").set("unit", "min");
    model.result("pg4").set("showlegendstitle", true);
    model.result("pg4").set("showlegendsunit", true);
    model.result("pg4").set("titletype", "manual");
    model.result("pg4").set("title", "Solid lines: Negative electrode, Dashed lines: Positive electrode");
    model.result("pg4").feature("lngr1").create("filt1", "LineGraphFilter");
    model.result("pg4").feature("lngr1").feature("filt1").set("expr", "isdefined(root.comp1.liion.isNegative)");
    model.result("pg4").create("lngr2", "LineGraph");
    model.result("pg4").feature("lngr2").set("xdata", "expr");
    model.result("pg4").feature("lngr2").set("xdataexpr", "x");
    model.result("pg4").feature("lngr2").selection().geom("geom1", 1);
    model.result("pg4").feature("lngr2").selection().set(1, 2, 3);
    model.result("pg4").feature("lngr2").set("expr", new String[]{"liion.Evsref"});
    model.result("pg4").feature("lngr2").create("filt1", "LineGraphFilter");
    model.result("pg4").feature("lngr2").feature("filt1").set("expr", "isdefined(root.comp1.liion.isPositive)");
    model.result("pg4").feature("lngr2").create("col1", "Color");
    model.result("pg4").feature("lngr2").feature("col1").set("expr", "t");
    model.result("pg4").feature("lngr2").feature("col1").set("colorlegend", false);
    model.result("pg4").feature("lngr2").feature("col1").set("colortable", "Viridis");
    model.result("pg4").feature("lngr2").set("linestyle", "dashed");
    model.result("pg4").feature("lngr2").set("resolution", "norefine");
    model.result("pg4").set("ylabelactive", true);
    model.result("pg4").set("ylabel", "Negative electrode potential (V)");
    model.result("pg4").set("twoyaxes", true);
    model.result("pg4").setIndex("plotonsecyaxis", true, 1, 1);
    model.result("pg4").set("yseclabelactive", true);
    model.result("pg4").set("yseclabel", "Positive electrode potential (V)");
    model.result().create("pg5", "PlotGroup1D");
    model.result("pg5").set("data", "dset3");
    model.result("pg5").label("Electrolyte Salt Concentration (liion)");
    model.result("pg5").set("titletype", "none");
    model.result("pg5").create("lngr1", "LineGraph");
    model.result("pg5").feature("lngr1").set("xdata", "expr");
    model.result("pg5").feature("lngr1").set("xdataexpr", "x");
    model.result("pg5").feature("lngr1").selection().geom("geom1", 1);
    model.result("pg5").feature("lngr1").selection().set(1, 2, 3);
    model.result("pg5").feature("lngr1").set("expr", new String[]{"cl"});
    model.result("pg5").feature("lngr1").create("col1", "Color");
    model.result("pg5").feature("lngr1").feature("col1").set("expr", "t");
    model.result("pg5").feature("lngr1").feature("col1").set("colorlegend", true);
    model.result("pg5").feature("lngr1").feature("col1").set("colortable", "Viridis");
    model.result("pg5").feature("lngr1").feature("col1").set("legendtitle", "Time");
    model.result("pg5").feature("lngr1").feature("col1").set("unit", "min");
    model.result("pg5").set("showlegendstitle", true);
    model.result("pg5").set("showlegendsunit", true);
    model.result().create("pg6", "PlotGroup1D");
    model.result("pg6").set("data", "dset3");
    model.result("pg6").label("Volumetric Current Density (liion)");
    model.result("pg6").set("titletype", "none");
    model.result("pg6").create("lngr1", "LineGraph");
    model.result("pg6").feature("lngr1").set("xdata", "expr");
    model.result("pg6").feature("lngr1").set("xdataexpr", "x");
    model.result("pg6").feature("lngr1").selection().geom("geom1", 1);
    model.result("pg6").feature("lngr1").selection().set(1, 2, 3);
    model.result("pg6").feature("lngr1").set("expr", new String[]{"liion.ivtot"});
    model.result("pg6").feature("lngr1").set("resolution", "norefine");
    model.result("pg6").feature("lngr1").create("col1", "Color");
    model.result("pg6").feature("lngr1").feature("col1").set("expr", "t");
    model.result("pg6").feature("lngr1").feature("col1").set("colorlegend", true);
    model.result("pg6").feature("lngr1").feature("col1").set("colortable", "Viridis");
    model.result("pg6").feature("lngr1").feature("col1").set("legendtitle", "Time");
    model.result("pg6").feature("lngr1").feature("col1").set("unit", "min");
    model.result("pg6").set("showlegendstitle", true);
    model.result("pg6").set("showlegendsunit", true);
    model.result("pg6").set("titletype", "manual");
    model.result("pg6").set("title", "Solid lines: Negative electrode, Dashed lines: Positive electrode");
    model.result("pg6").feature("lngr1").create("filt1", "LineGraphFilter");
    model.result("pg6").feature("lngr1").feature("filt1").set("expr", "isdefined(root.comp1.liion.isNegative)");
    model.result("pg6").create("lngr2", "LineGraph");
    model.result("pg6").feature("lngr2").set("xdata", "expr");
    model.result("pg6").feature("lngr2").set("xdataexpr", "x");
    model.result("pg6").feature("lngr2").selection().geom("geom1", 1);
    model.result("pg6").feature("lngr2").selection().set(1, 2, 3);
    model.result("pg6").feature("lngr2").set("expr", new String[]{"liion.ivtot"});
    model.result("pg6").feature("lngr2").create("filt1", "LineGraphFilter");
    model.result("pg6").feature("lngr2").feature("filt1").set("expr", "isdefined(root.comp1.liion.isPositive)");
    model.result("pg6").feature("lngr2").create("col1", "Color");
    model.result("pg6").feature("lngr2").feature("col1").set("expr", "t");
    model.result("pg6").feature("lngr2").feature("col1").set("colorlegend", false);
    model.result("pg6").feature("lngr2").feature("col1").set("colortable", "Viridis");
    model.result("pg6").feature("lngr2").set("linestyle", "dashed");
    model.result("pg6").feature("lngr2").set("resolution", "norefine");
    model.result("pg6").set("ylabelactive", true);
    model.result("pg6").set("ylabel", "Negative electrode volumetric current density (A/m<sup>3</sup>)");
    model.result("pg6").set("twoyaxes", true);
    model.result("pg6").setIndex("plotonsecyaxis", true, 1, 1);
    model.result("pg6").set("yseclabelactive", true);
    model.result("pg6").set("yseclabel", "Positive electrode volumetric current density (A/m<sup>3</sup>)");
    model.result().create("pg7", "PlotGroup1D");
    model.result("pg7").set("data", "dset3");
    model.result("pg7").label("Particle Surface State of Charge (liion)");
    model.result("pg7").create("lngr1", "LineGraph");
    model.result("pg7").feature("lngr1").set("xdata", "expr");
    model.result("pg7").feature("lngr1").set("xdataexpr", "x");
    model.result("pg7").feature("lngr1").selection().geom("geom1", 1);
    model.result("pg7").feature("lngr1").selection().set(1, 2, 3);
    model.result("pg7").feature("lngr1").set("expr", new String[]{"liion.socloc_surface"});
    model.result("pg7").feature("lngr1").set("resolution", "norefine");
    model.result("pg7").feature("lngr1").create("col1", "Color");
    model.result("pg7").feature("lngr1").feature("col1").set("expr", "t");
    model.result("pg7").feature("lngr1").feature("col1").set("colorlegend", true);
    model.result("pg7").feature("lngr1").feature("col1").set("colortable", "Viridis");
    model.result("pg7").feature("lngr1").feature("col1").set("legendtitle", "Time");
    model.result("pg7").feature("lngr1").feature("col1").set("unit", "min");
    model.result("pg7").set("showlegendstitle", true);
    model.result("pg7").set("showlegendsunit", true);
    model.result("pg7").set("titletype", "manual");
    model.result("pg7").set("title", "Solid lines: Negative electrode, Dashed lines: Positive electrode");
    model.result("pg7").feature("lngr1").create("filt1", "LineGraphFilter");
    model.result("pg7").feature("lngr1").feature("filt1").set("expr", "isdefined(root.comp1.liion.isNegative)");
    model.result("pg7").create("lngr2", "LineGraph");
    model.result("pg7").feature("lngr2").set("xdata", "expr");
    model.result("pg7").feature("lngr2").set("xdataexpr", "x");
    model.result("pg7").feature("lngr2").selection().geom("geom1", 1);
    model.result("pg7").feature("lngr2").selection().set(1, 2, 3);
    model.result("pg7").feature("lngr2").set("expr", new String[]{"liion.socloc_surface"});
    model.result("pg7").feature("lngr2").create("filt1", "LineGraphFilter");
    model.result("pg7").feature("lngr2").feature("filt1").set("expr", "isdefined(root.comp1.liion.isPositive)");
    model.result("pg7").feature("lngr2").create("col1", "Color");
    model.result("pg7").feature("lngr2").feature("col1").set("expr", "t");
    model.result("pg7").feature("lngr2").feature("col1").set("colorlegend", false);
    model.result("pg7").feature("lngr2").feature("col1").set("colortable", "Viridis");
    model.result("pg7").feature("lngr2").set("linestyle", "dashed");
    model.result("pg7").feature("lngr2").set("resolution", "norefine");
    model.result("pg7").set("ylabelactive", true);
    model.result("pg7").set("ylabel", "Particle surface state of charge (1)");
    model.result("pg2").run();

//    In the Results toolbar, click 1D Plot Group.

    model.result().create("pg8", "PlotGroup1D");
    model.result("pg8").run();

//    In the Settings window for 1D Plot Group, type Voltage and C Rate in the Label text field.

    model.result("pg8").label("Voltage and C Rate");

//    Locate the Data section.
//    From the Dataset list, select Study 1/Parametric Solutions 1 (sol3).

    model.result("pg8").set("data", "dset3");

//    Click to expand the Title section.
//    From the Title type list, select Label.

    model.result("pg8").set("titletype", "label");

//    Right-click Voltage and C Rate and choose Global.

    model.result("pg8").create("glob1", "Global");
    model.result("pg8").feature("glob1").set("markerpos", "datapoints");
    model.result("pg8").feature("glob1").set("linewidth", "preference");

//    In the Settings window for Global, click Replace Expression in the upper-right corner of the y-Axis Data section.
//    From the menu, choose Component 1 (comp1) > Lithium-Ion Battery > Load Cycle 1 > liion.lc1.E_app - Applied voltage - V.

    model.result("pg8").feature("glob1").set("expr", new String[]{"liion.lc1.E_app"});
    model.result("pg8").feature("glob1").set("descr", new String[]{"Applied voltage"});
    model.result("pg8").feature("glob1").set("unit", new String[]{"V"});

//    Click to expand the Legends section.
//    Find the Include subsection.
//    Clear the Description checkbox.

    model.result("pg8").feature("glob1").set("autodescr", false);

//    Find the Prefix and suffix subsection.
//    In the Prefix text field, type Voltage, .

    model.result("pg8").feature("glob1").set("legendprefix", "Voltage, ");

//    Click to expand the Legends section.
//    From the Legends list, select Manual.

    model.result("pg8").feature("glob1").set("legendmethod", "manual");

//    In the table, enter the following settings:

    model.result("pg8").feature("glob1").setIndex("legends", "L<sub>pos</sub>=25 \\mu m", 0);
    model.result("pg8").feature("glob1").setIndex("legends", "L<sub>pos</sub>=60 \\mu m", 1);
    model.result("pg8").run();

//    In the Model Builder window, right-click Voltage and C Rate and choose Global.

    model.result("pg8").create("glob2", "Global");
    model.result("pg8").feature("glob2").set("markerpos", "datapoints");
    model.result("pg8").feature("glob2").set("linewidth", "preference");

//    In the Settings window for Global, click Replace Expression in the upper-right corner of the y-Axis Data section.
//    From the menu, choose Component 1 (comp1) > Lithium-Ion Battery > Load Cycle 1 > liion.lc1.C_app - C rate - 1.

    model.result("pg8").feature("glob2").set("expr", new String[]{"liion.lc1.C_app"});
    model.result("pg8").feature("glob2").set("descr", new String[]{"C rate"});
    model.result("pg8").feature("glob2").set("unit", new String[]{"1"});

//    Click to expand the Coloring and Style section.
//    From the Color list, select Cycle (reset).

    model.result("pg8").feature("glob2").set("linecolor", "cyclereset");

//    Find the Line style subsection.
//    From the Line list, select Dashed.

    model.result("pg8").feature("glob2").set("linestyle", "dashed");

//    Locate the Legends section.
//    Find the Include subsection.
//    Clear the Description checkbox.

    model.result("pg8").feature("glob2").set("autodescr", false);

//    Find the Prefix and suffix subsection.
//    In the Prefix text field, type C rate, .

    model.result("pg8").feature("glob2").set("legendprefix", "C rate, ");

//    From the Legends list, select Manual.

    model.result("pg8").feature("glob2").set("legendmethod", "manual");

//    In the table, enter the following settings:

    model.result("pg8").feature("glob2").setIndex("legends", "L<sub>pos</sub>=25 \\mu m", 0);
    model.result("pg8").feature("glob2").setIndex("legends", "L<sub>pos</sub>=60 \\mu m", 1);
    model.result("pg8").run();

//    In the Model Builder window, click Voltage and C Rate.
//    In the Settings window for 1D Plot Group, locate the Plot Settings section.
//    Select the Two y-axes checkbox.

    model.result("pg8").set("twoyaxes", true);

//    In the table, enter the following settings:

    model.result("pg8").setIndex("plotonsecyaxis", true, 1, 1);

//    Locate the Legend section.
//    From the Position list, select Upper left.

    model.result("pg8").set("legendpos", "upperleft");

//    In the Voltage and C Rate toolbar, click Plot.

    model.result("pg8").run();

//    In the Home toolbar, click Add Plot Group and choose 1D Plot Group.

    model.result().create("pg9", "PlotGroup1D");
    model.result("pg9").run();

//    Create a plot of the local power losses as follows:
//    In the Settings window for 1D Plot Group, type Local Power Losses in the Label text field.

    model.result("pg9").label("Local Power Losses");

//    Locate the Data section.
//    From the Dataset list, select Study 1/Parametric Solutions 1 (sol3).

    model.result("pg9").set("data", "dset3");

//    From the Parameter selection (L_pos) list, select From list.

    model.result("pg9").setIndex("looplevelinput", "manual", 1);

//    In the Parameter values (L_pos (um)) list, select 25.

    model.result("pg9").setIndex("looplevel", new int[]{1}, 1);

//    select 25 in the Parameter values (L_pos (um)) list.
//    From the Time selection list, select Interpolated.

    model.result("pg9").setIndex("looplevelinput", "interp", 0);

//    In the Times (s) text field, type 1.

    model.result("pg9").setIndex("interp", 1, 0);

//    Click to expand the Title section.
//    From the Title type list, select Manual.

    model.result("pg9").set("titletype", "manual");

//    In the Title text area, type Local Power Losses, L<sub>pos</sub> = eval(L_pos*1e6) \mu m, t=eval(t) s.

    return model;
  }

  public static Model run4(Model model) {

    model.result("pg9").set("title", "Local Power Losses, L<sub>pos</sub> = eval(L_pos*1e6) \\mu m, t=eval(t) s");

//    Right-click Local Power Losses and choose Line Graph.

    model.result("pg9").create("lngr1", "LineGraph");
    model.result("pg9").feature("lngr1").set("markerpos", "datapoints");
    model.result("pg9").feature("lngr1").set("linewidth", "preference");
    model.result("pg9").feature("lngr1").set("evaluationsettings", "parent");

//    In the Settings window for Line Graph, locate the Selection section.
//    From the Selection list, select All domains.

    model.result("pg9").feature("lngr1").selection().all();

//    Click Replace Expression in the upper-right corner of the y-Axis Data section.
//    From the menu, choose Component 1 (comp1) > Lithium-Ion Battery > Power losses > liion.p_loss_l - Electrolyte transport power loss - W/m³.

    model.result("pg9").feature("lngr1").set("expr", "liion.p_loss_l");
    model.result("pg9").feature("lngr1").set("descr", "Electrolyte transport power loss");

//    Locate the y-Axis Data section.
//    From the Unit list, select kW/m^3.

    model.result("pg9").feature("lngr1").set("unit", "kW/m^3");

//    Select the Description checkbox.

    model.result("pg9").feature("lngr1").set("descractive", true);

//    In the associated text field, type Electrolyte.

    model.result("pg9").feature("lngr1").set("descr", "Electrolyte");

//    Locate the x-Axis Data section.
//    From the Parameter list, select Expression.

    model.result("pg9").feature("lngr1").set("xdata", "expr");

//    In the Expression text field, type x.

    model.result("pg9").feature("lngr1").set("xdataexpr", "x");

//    From the Unit list, select µm.

    model.result("pg9").feature("lngr1").set("xdataunit", "\u00b5m");

//    Click to expand the Legends section.
//    Select the Show legends checkbox.

    model.result("pg9").feature("lngr1").set("legend", true);

//    Find the Include subsection.
//    Clear the Solution checkbox.

    model.result("pg9").feature("lngr1").set("autosolution", false);

//    Select the Description checkbox.

    model.result("pg9").feature("lngr1").set("autodescr", true);

//    In the Local Power Losses toolbar, click Plot.

    model.result("pg9").run();

//    Right-click Line Graph 1 and choose Duplicate.

    model.result("pg9").feature().duplicate("lngr2", "lngr1");
    model.result("pg9").run();

//    In the Settings window for Line Graph, click Replace Expression in the upper-right corner of the y-Axis Data section.
//    From the menu, choose Component 1 (comp1) > Lithium-Ion Battery > Power losses > liion.p_loss_act - Kinetic activation power loss - W/m³.

    model.result("pg9").feature("lngr2").set("expr", "liion.p_loss_act");

//    Locate the y-Axis Data section.
//    In the Description text field, type Kinetic.

    model.result("pg9").feature("lngr2").set("descr", "Kinetic");

//    In the Local Power Losses toolbar, click Plot.

    model.result("pg9").run();

//    Right-click Line Graph 2 and choose Duplicate.

    model.result("pg9").feature().duplicate("lngr3", "lngr2");
    model.result("pg9").run();

//    In the Settings window for Line Graph, click Replace Expression in the upper-right corner of the y-Axis Data section.
//    From the menu, choose Component 1 (comp1) > Lithium-Ion Battery > Power losses > liion.p_loss_inter - Particle intercalation transport power loss - W/m³.

    model.result("pg9").feature("lngr3").set("expr", "liion.p_loss_inter");

//    Locate the y-Axis Data section.
//    In the Description text field, type Particle.

    model.result("pg9").feature("lngr3").set("descr", "Particle");

//    In the Local Power Losses toolbar, click Plot.

    model.result("pg9").run();

//    Right-click Line Graph 3 and choose Duplicate.

    model.result("pg9").feature().duplicate("lngr4", "lngr3");
    model.result("pg9").run();

//    In the Settings window for Line Graph, click Replace Expression in the upper-right corner of the y-Axis Data section.
//    From the menu, choose Component 1 (comp1) > Lithium-Ion Battery > Power losses > liion.p_loss_s - Electron conduction power loss - W/m³.

    model.result("pg9").feature("lngr4").set("expr", "liion.p_loss_s");

//    Locate the y-Axis Data section.
//    In the Description text field, type Electronic.

    model.result("pg9").feature("lngr4").set("descr", "Electronic");

//    In the Local Power Losses toolbar, click Plot.

    model.result("pg9").run();
    model.result("pg9").run();

//    In the Model Builder window, click Local Power Losses.
//    In the Settings window for 1D Plot Group, locate the Plot Settings section.
//    Select the y-axis label checkbox.

    model.result("pg9").set("ylabelactive", true);

//    In the associated text field, type Power loss (kW/m<sup>3</sup>).

    model.result("pg9").set("ylabel", "Power loss (kW/m<sup>3</sup>)");

//    Locate the Legend section.
//    From the Position list, select Upper left.

    model.result("pg9").set("legendpos", "upperleft");

//    In the Local Power Losses toolbar, click Plot.

    model.result("pg9").run();

//    Locate the Data section.
//    In the Parameter values (L_pos (um)) list, select 60.

    model.result("pg9").setIndex("looplevel", new int[]{2}, 1);

//    select 60 in the Parameter values (L_pos (um)) list.
//    In the Local Power Losses toolbar, click Plot.

    model.result("pg9").run();

//    In the Times (s) text field, type 9.

    model.result("pg9").setIndex("interp", 9, 0);

//    In the Local Power Losses toolbar, click Plot.

    model.result("pg9").run();

//    In the Parameter values (L_pos (um)) list, select 25.

    model.result("pg9").setIndex("looplevel", new int[]{1}, 1);

//    select 25 in the Parameter values (L_pos (um)) list.
//    In the Local Power Losses toolbar, click Plot.

    model.result("pg9").run();

//    There are also corresponding predefined variables available that are integrated for all domains. To plot these cell-integrated variables, proceed as follows:
//    In the Results toolbar, click 1D Plot Group.

    model.result().create("pg10", "PlotGroup1D");
    model.result("pg10").run();

//    In the Settings window for 1D Plot Group, type Cell-Integrated Power Losses in the Label text field.

    model.result("pg10").label("Cell-Integrated Power Losses");

//    Locate the Data section.
//    From the Dataset list, select Study 1/Parametric Solutions 1 (sol3).

    model.result("pg10").set("data", "dset3");

//    From the Parameter selection (L_pos) list, select From list.

    model.result("pg10").setIndex("looplevelinput", "manual", 1);

//    In the Parameter values (L_pos (um)) list, select 25.

    model.result("pg10").setIndex("looplevel", new int[]{1}, 1);

//    select 25 in the Parameter values (L_pos (um)) list.
//    Locate the Title section.
//    From the Title type list, select Manual.

    model.result("pg10").set("titletype", "manual");

//    In the Title text area, type Cell-Integrated Power Losses, L<sub>pos</sub> = eval(L_pos*1e6) \mu m.

    model.result("pg10").set("title", "Cell-Integrated Power Losses, L<sub>pos</sub> = eval(L_pos*1e6) \\mu m");

//    Right-click Cell-Integrated Power Losses and choose Global.

    model.result("pg10").create("glob1", "Global");
    model.result("pg10").feature("glob1").set("markerpos", "datapoints");
    model.result("pg10").feature("glob1").set("linewidth", "preference");

//    In the Settings window for Global, click Replace Expression in the upper-right corner of the y-Axis Data section.
//    From the menu, choose Component 1 (comp1) > Lithium-Ion Battery > Power losses > Cell integrated > liion.P_loss_l - Electrolyte transport power loss - W.

    model.result("pg10").feature("glob1").set("expr", new String[]{"liion.P_loss_l"});
    model.result("pg10").feature("glob1").set("descr", new String[]{"Electrolyte transport power loss"});
    model.result("pg10").feature("glob1").set("unit", new String[]{"W"});

//    Locate the y-Axis Data section.
//    In the table, enter the following settings:

    model.result("pg10").feature("glob1").setIndex("descr", "Electrolyte", 0);

//    Click to expand the Legends section.
//    Find the Include subsection.
//    Clear the Solution checkbox.

    model.result("pg10").feature("glob1").set("autosolution", false);

//    Right-click Global 1 and choose Duplicate.

    model.result("pg10").feature().duplicate("glob2", "glob1");
    model.result("pg10").run();

//    In the Settings window for Global, click Replace Expression in the upper-right corner of the y-Axis Data section.
//    From the menu, choose Component 1 (comp1) > Lithium-Ion Battery > Power losses > Cell integrated > liion.P_loss_act - Kinetic activation power loss - W.

    model.result("pg10").feature("glob2").set("expr", new String[]{"liion.P_loss_act"});
    model.result("pg10").feature("glob2").set("descr", new String[]{"Kinetic activation power loss"});
    model.result("pg10").feature("glob2").set("unit", new String[]{"W"});

//    Locate the y-Axis Data section.
//    In the table, enter the following settings:

    model.result("pg10").feature("glob2").setIndex("descr", "Kinetic", 0);

//    In the Cell-Integrated Power Losses toolbar, click Plot.

    model.result("pg10").run();

//    Right-click Global 2 and choose Duplicate.

    model.result("pg10").feature().duplicate("glob3", "glob2");
    model.result("pg10").run();

//    In the Settings window for Global, click Replace Expression in the upper-right corner of the y-Axis Data section.
//    From the menu, choose Component 1 (comp1) > Lithium-Ion Battery > Power losses > Cell integrated > liion.P_loss_inter - Particle intercalation transport power loss - W.

    model.result("pg10").feature("glob3").set("expr", new String[]{"liion.P_loss_inter"});
    model.result("pg10").feature("glob3").set("descr", new String[]{"Particle intercalation transport power loss"});
    model.result("pg10").feature("glob3").set("unit", new String[]{"W"});

//    Locate the y-Axis Data section.
//    In the table, enter the following settings:

    model.result("pg10").feature("glob3").setIndex("descr", "Particle", 0);

//    In the Cell-Integrated Power Losses toolbar, click Plot.

    model.result("pg10").run();

//    Right-click Global 3 and choose Duplicate.

    model.result("pg10").feature().duplicate("glob4", "glob3");
    model.result("pg10").run();

//    In the Settings window for Global, click Replace Expression in the upper-right corner of the y-Axis Data section.
//    From the menu, choose Component 1 (comp1) > Lithium-Ion Battery > Power losses > Cell integrated > liion.P_loss_s - Electron conduction power loss - W.

    model.result("pg10").feature("glob4").set("expr", new String[]{"liion.P_loss_s"});
    model.result("pg10").feature("glob4").set("descr", new String[]{"Electron conduction power loss"});
    model.result("pg10").feature("glob4").set("unit", new String[]{"W"});

//    In the Cell-Integrated Power Losses toolbar, click Plot.

    model.result("pg10").run();

//    Locate the y-Axis Data section.
//    In the table, enter the following settings:

    model.result("pg10").feature("glob4").setIndex("descr", "Electronic", 0);
    model.result("pg10").run();

//    In the Model Builder window, click Cell-Integrated Power Losses.
//    In the Settings window for 1D Plot Group, locate the Plot Settings section.
//    Select the y-axis label checkbox.

    model.result("pg10").set("ylabelactive", true);

//    In the associated text field, type Power loss (W).

    model.result("pg10").set("ylabel", "Power loss (W)");

//    Locate the Legend section.
//    From the Position list, select Upper middle.

    model.result("pg10").set("legendpos", "uppermiddle");

//    In the Cell-Integrated Power Losses toolbar, click Plot.

    model.result("pg10").run();

//    Locate the Data section.
//    In the Parameter values (L_pos (um)) list, select 60.

    model.result("pg10").setIndex("looplevel", new int[]{2}, 1);

//    select 60 in the Parameter values (L_pos (um)) list.
//    In the Results toolbar, click 1D Plot Group.

    model.result().create("pg11", "PlotGroup1D");
    model.result("pg11").run();

//    Furthermore, there are integrated variables for the total losses of each domain node that you plot as follows:
//    In the Settings window for 1D Plot Group, type Component Power Losses in the Label text field.

    model.result("pg11").label("Component Power Losses");

//    Locate the Data section.
//    From the Dataset list, select Study 1/Parametric Solutions 1 (sol3).

    model.result("pg11").set("data", "dset3");

//    From the Parameter selection (L_pos) list, select From list.

    model.result("pg11").setIndex("looplevelinput", "manual", 1);

//    In the Parameter values (L_pos (um)) list, select 25.

    model.result("pg11").setIndex("looplevel", new int[]{1}, 1);

//    select 25 in the Parameter values (L_pos (um)) list.
//    Locate the Title section.
//    From the Title type list, select Manual.

    model.result("pg11").set("titletype", "manual");

//    In the Title text area, type Component Power Losses, L<sub>pos</sub> = eval(L_pos*1e6) \mu m.

    model.result("pg11").set("title", "Component Power Losses, L<sub>pos</sub> = eval(L_pos*1e6) \\mu m");

//    Right-click Component Power Losses and choose Global.

    model.result("pg11").create("glob1", "Global");
    model.result("pg11").feature("glob1").set("markerpos", "datapoints");
    model.result("pg11").feature("glob1").set("linewidth", "preference");

//    In the Settings window for Global, click Replace Expression in the upper-right corner of the y-Axis Data section.
//    From the menu, choose Component 1 (comp1) > Lithium-Ion Battery > Power losses > Feature-node integrated > liion.pce1.P_loss - Total power loss - W.

    model.result("pg11").feature("glob1").set("expr", new String[]{"liion.pce1.P_loss"});
    model.result("pg11").feature("glob1").set("descr", new String[]{"Total power loss"});
    model.result("pg11").feature("glob1").set("unit", new String[]{"W"});

//    Click to expand the Legends section.
//    Select the Show legends checkbox.
//    From the Legends list, select Manual.

    model.result("pg11").feature("glob1").set("legendmethod", "manual");

//    In the table, enter the following settings:

    model.result("pg11").feature("glob1").setIndex("legends", "Negative", 0);
    model.result("pg11").run();

//    In the Model Builder window, right-click Component Power Losses and choose Global.

    model.result("pg11").create("glob2", "Global");
    model.result("pg11").feature("glob2").set("markerpos", "datapoints");
    model.result("pg11").feature("glob2").set("linewidth", "preference");

//    In the Settings window for Global, click Replace Expression in the upper-right corner of the y-Axis Data section.
//    From the menu, choose Component 1 (comp1) > Lithium-Ion Battery > Power losses > Feature-node integrated > liion.sep1.P_loss - Total power loss - W.

    model.result("pg11").feature("glob2").set("expr", new String[]{"liion.sep1.P_loss"});
    model.result("pg11").feature("glob2").set("descr", new String[]{"Total power loss"});
    model.result("pg11").feature("glob2").set("unit", new String[]{"W"});

//    Locate the Legends section.
//    Select the Show legends checkbox.
//    From the Legends list, select Manual.

    model.result("pg11").feature("glob2").set("legendmethod", "manual");

//    In the table, enter the following settings:

    model.result("pg11").feature("glob2").setIndex("legends", "Separator", 0);

//    In the Component Power Losses toolbar, click Plot.

    model.result("pg11").run();
    model.result("pg11").run();

//    Right-click Component Power Losses and choose Global.

    model.result("pg11").create("glob3", "Global");
    model.result("pg11").feature("glob3").set("markerpos", "datapoints");
    model.result("pg11").feature("glob3").set("linewidth", "preference");

//    In the Settings window for Global, click Replace Expression in the upper-right corner of the y-Axis Data section.
//    From the menu, choose Component 1 (comp1) > Lithium-Ion Battery > Power losses > Feature-node integrated > liion.pce2.P_loss - Total power loss - W.

    model.result("pg11").feature("glob3").set("expr", new String[]{"liion.pce2.P_loss"});
    model.result("pg11").feature("glob3").set("descr", new String[]{"Total power loss"});
    model.result("pg11").feature("glob3").set("unit", new String[]{"W"});

//    Locate the Legends section.
//    From the Legends list, select Manual.

    model.result("pg11").feature("glob3").set("legendmethod", "manual");

//    In the table, enter the following settings:

    model.result("pg11").feature("glob3").setIndex("legends", "Positive", 0);

//    Select the Show legends checkbox.

    model.result("pg11").run();

//    In the Model Builder window, click Component Power Losses.
//    In the Settings window for 1D Plot Group, locate the Plot Settings section.
//    Select the y-axis label checkbox.

    model.result("pg11").set("ylabelactive", true);

//    In the associated text field, type Power loss (W).

    model.result("pg11").set("ylabel", "Power loss (W)");

//    Locate the Legend section.
//    From the Position list, select Upper middle.

    model.result("pg11").set("legendpos", "uppermiddle");

//    In the Component Power Losses toolbar, click Plot.

    model.result("pg11").run();

//    Locate the Data section.
//    In the Parameter values (L_pos (um)) list, select 60.

    model.result("pg11").setIndex("looplevel", new int[]{2}, 1);

//    select 60 in the Parameter values (L_pos (um)) list.
//    In the Results toolbar, click 1D Plot Group.

    model.result().create("pg12", "PlotGroup1D");
    model.result("pg12").run();

//    Finally, plot the total of all power losses.
//    In the Settings window for 1D Plot Group, type Total Power Loss in the Label text field.

    model.result("pg12").label("Total Power Loss");

//    Locate the Data section.
//    From the Dataset list, select Study 1/Parametric Solutions 1 (sol3).

    model.result("pg12").set("data", "dset3");

//    Locate the Title section.
//    From the Title type list, select Label.

    model.result("pg12").set("titletype", "label");

//    Right-click Total Power Loss and choose Global.

    model.result("pg12").create("glob1", "Global");
    model.result("pg12").feature("glob1").set("markerpos", "datapoints");
    model.result("pg12").feature("glob1").set("linewidth", "preference");

//    In the Settings window for Global, click Replace Expression in the upper-right corner of the y-Axis Data section.
//    From the menu, choose Component 1 (comp1) > Lithium-Ion Battery > Power losses > Cell integrated > liion.P_loss - Total power loss - W.

    model.result("pg12").feature("glob1").set("expr", new String[]{"liion.P_loss"});
    model.result("pg12").feature("glob1").set("descr", new String[]{"Total power loss"});
    model.result("pg12").feature("glob1").set("unit", new String[]{"W"});

//    Locate the Legends section.
//    Find the Include subsection.
//    Clear the Description checkbox.

    model.result("pg12").feature("glob1").set("autodescr", false);

//    From the Legends list, select Manual.

    model.result("pg12").feature("glob1").set("legendmethod", "manual");

//    In the table, enter the following settings:

    model.result("pg12").feature("glob1").setIndex("legends", "L<sub>pos</sub>=25 \\mu m", 0);
    model.result("pg12").feature("glob1").setIndex("legends", "L<sub>pos</sub>=60 \\mu m", 1);
    model.result("pg12").run();

//    In the Model Builder window, click Total Power Loss.
//    In the Settings window for 1D Plot Group, locate the Legend section.
//    From the Position list, select Upper middle.

    model.result("pg12").set("legendpos", "uppermiddle");

//    In the Total Power Loss toolbar, click Plot.

    model.result("pg12").run();
    model.result("pg2").run();
    model.result("pg2").setIndex("looplevelinput", "first", 1);
    model.result("pg3").run();
    model.result("pg3").setIndex("looplevelinput", "first", 1);
    model.result("pg4").run();
    model.result("pg4").setIndex("looplevelinput", "first", 1);
    model.result("pg5").run();
    model.result("pg5").setIndex("looplevelinput", "first", 1);
    model.result("pg6").run();
    model.result("pg6").setIndex("looplevelinput", "first", 1);
    model.result("pg7").run();
    model.result("pg7").setIndex("looplevelinput", "first", 1);

    model.title("Power Losses in a Lithium-Ion Battery");

    model
         .description("This example computes the power losses in a lithium-ion battery when exposed to high current pulses in a hybrid pulse power characterization (HPPC) test.\n\nPower loss contributions stemming from different phenomena are analyzed, as well as the total power losses pertaining to the different components of the battery. The results for a power-optimized vs an energy-optimized cell are also compared.");

    return model;
  }

  public static void main(String[] args) {
    Model model = run();
    model = run2(model);
    model = run3(model);
    run4(model);
  }

}
