/*
 * lib_diffusion_induced_stress.java
 */

import com.comsol.model.*;
import com.comsol.model.util.*;

/** Model exported on May 15 2026, 11:05 by COMSOL 6.4.0.421. */
public class lib_diffusion_induced_stress {

  public static Model run() {
    Model model = ModelUtil.create("Model");

//    Start this tutorial by opening a template file that contains a 1D battery model. Alternatively, you may build the template model yourself by following the instructions found in the template 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"}});

    return model;
  }

  public static Model run2(Model model) {
    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[]{"%"});
    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);

    return model;
  }

  public static Model run3(Model model) {
    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", "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 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", "100[%]");
    model.param().set("E", "10[GPa]");
    model.param().descr("E", "Young's modulus");

//    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, then click C Rate 1.
//    In the Settings window for C Rate, locate the C-Rate Multiple section.
//    In the \[C_\textrm{set}\] text field, type -4.

    model.component("comp1").physics("liion").feature("lc1").feature("crate1").set("setVal", -4);

//    Locate the Continuation Conditions section.
//    Select the Elapsed time checkbox.

    model.component("comp1").physics("liion").feature("lc1").feature("crate1").set("TimeCondition", true);

//    In the \[t_\textrm{max}\] text field, type 750[s].

    model.component("comp1").physics("liion").feature("lc1").feature("crate1").set("tmax", "750[s]");

//    In the Model Builder window, click 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.
//    Clear the Elapsed time checkbox.

    model.component("comp1").physics("liion").feature("lc1").feature("rest1").set("TimeCondition", false);

//    Define an interpolation function that defines the relative expansion of graphite material as a function of state of charge.
//    In the Home toolbar, click Functions and choose Global > Interpolation.

    model.func().create("int1", "Interpolation");

//    In the Settings window for Interpolation, type Relative volume change as function of soc in the Label text field.

    model.func("int1").label("Relative volume change as function of soc");

//    Locate the Definition section.
//    In the Function name text field, type fvol.

    model.func("int1").set("funcname", "fvol");

//    In the table, enter the following settings:

    model.func("int1").setIndex("table", 0, 0, 0);
    model.func("int1").setIndex("table", 0, 0, 1);
    model.func("int1").setIndex("table", 0.5, 1, 0);
    model.func("int1").setIndex("table", 0.05, 1, 1);
    model.func("int1").setIndex("table", 0.75, 2, 0);
    model.func("int1").setIndex("table", 0.05, 2, 1);
    model.func("int1").setIndex("table", 1, 3, 0);
    model.func("int1").setIndex("table", 0.1, 3, 1);

//    Locate the Interpolation and Extrapolation section.
//    From the Interpolation list, select Piecewise cubic.

    model.func("int1").set("interp", "piecewisecubic");

//    Locate the Units section.
//    In the Function table, enter the following settings:

    model.func("int1").setIndex("fununit", 1, 0);
    model.func("int1").setIndex("argunit", 1, 0);

//    In the Argument table, enter the following settings:
//    The physics has already been set up in the template model. Next, set up the inputs required for stress and strain calculations in the <l>Particle Intercalation</l> node of the porous electrode domain corresponding to the negative electrode (graphite material). Also, specify the reference exchange current density for the electrode kinetics in the <l>Porous Electrode Reaction</l> nodes of the negative and positive electrodes. Finally, specify the applied current (that corresponds to a discharge current of 4C for 750 s followed by a relaxation period for the next 350 s) in the <l>Electrode Current</l> node.
//    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, click to expand the Stress and Strain section.
//    Select the Calculate stress and strain checkbox.

    model.component("comp1").physics("liion").feature("pce1").feature("pin1").set("StressStrain", true);

//    The negative electrode material (graphite) has built-in properties for Young's modulus and Poisson's ratio, that are functions of the solid phase concentration. However, the stress-strain expressions in the <l>Particle Intercalation</l> node assumes that these elastic properties are independent of concentration. Hence, concentration-independent values are set for these elastic properties.
//    In the \[E\] text field, type E.

    model.component("comp1").physics("liion").feature("pce1").feature("pin1").set("E", "E");

//    In the \[\Delta V/V_0\] text field, type fvol(liion.cs_pce1/liion.csmax).

    model.component("comp1").physics("liion").feature("pce1").feature("pin1")
         .set("fvol", "fvol(liion.cs_pce1/liion.csmax)");

//    It is essential to have a finer resolution along the graphite particle dimension and this can be done by setting a linear distribution with 30 elements.
//    Click to expand the Particle Discretization section.
//    From the Distribution list, select Linear.

    model.component("comp1").physics("liion").feature("pce1").feature("pin1").set("Distribution", "Linear");

//    In the \[N_{\textrm{el}}\] text field, type 30.

    model.component("comp1").physics("liion").feature("pce1").feature("pin1").set("Nel", 30);

//    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 range(0,10,1100).

    model.study("std1").feature("time").set("tlist", "range(0,10,1100)");

//    In the Model Builder window, click Study 1.
//    In the Settings window for Study, locate the Study Settings section.
//    Clear the Generate default plots checkbox.

    model.study("std1").setGenPlots(false);

//    In the Study toolbar, click Compute.

    model.study("std1").createAutoSequences("all");

    model.component("comp1").probe("liion_lc1_volt").genResult("none");

    model.sol("sol1").runAll();

    model.result("pg1").set("window", "window1");
    model.result("pg1").run();

//    In the Model Builder window, under Results, click Probe Plot Group 1.
//    In the Settings window for 1D Plot Group, type Battery cell voltage in the Label text field.

    model.result("pg1").label("Battery cell voltage");

//    Click to expand the Title section.
//    From the Title type list, select Label.

    model.result("pg1").set("titletype", "label");

//    Locate the Plot Settings section.
//    Select the y-axis label checkbox.

    model.result("pg1").set("ylabelactive", true);

//    In the associated text field, type Battery cell voltage (V).

    model.result("pg1").set("ylabel", "Battery cell voltage (V)");

//    Locate the Legend section.
//    Clear the Show legends checkbox.

    model.result("pg1").set("showlegends", false);

//    In the Battery cell voltage toolbar, click Plot.

    model.result("pg1").set("window", "window1");
    model.result("pg1").run();

//    To plot along the graphite particle dimension, you need to create a Solution dataset that refers to the extra dimension that is set up by the Porous Electrode node corresponding to the negative electrode.
//    In the Model Builder window, expand the Results > Datasets node.
//    Right-click Results > Datasets > Study 1/Solution 1 (sol1) and choose Duplicate.

    model.result().dataset().duplicate("dset4", "dset1");

//    In the Settings window for Solution, locate the Solution section.
//    From the Component list, select Extra Dimension from Particle Intercalation 1 (liion_pce1_pin1_xdim).

    model.result().dataset("dset3").set("comp", "liion_pce1_pin1_xdim");

//    In the Results toolbar, click 1D Plot Group.

    model.result().create("pg2", "PlotGroup1D");
    model.result("pg2").run();

//    In the Settings window for 1D Plot Group, type Negative particle concentration in the Label text field.

    model.result("pg2").label("Negative particle concentration");

//    Right-click Negative particle concentration and choose Line Graph.

    model.result("pg2").create("lngr1", "LineGraph");
    model.result("pg2").feature("lngr1").set("markerpos", "datapoints");
    model.result("pg2").feature("lngr1").set("linewidth", "preference");
    model.result("pg2").feature("lngr1").set("evaluationsettings", "parent");

//    In the Settings window for Line Graph, locate the Data section.
//    From the Dataset list, select Probe Solution 3 (sol1).

    model.result("pg2").feature("lngr1").set("data", "dset3");

//    From the Time selection list, select Interpolated.

    model.result("pg2").feature("lngr1").setIndex("looplevelinput", "interp", 0);

//    In the Times (s) text field, type 0,100,300,500,700,750.

    model.result("pg2").feature("lngr1").setIndex("interp", "0,100,300,500,700,750", 0);

//    Locate the Selection section.
//    From the Selection list, select All domains.

    model.result("pg2").feature("lngr1").selection().all();

//    Locate the y-Axis Data section.
//    In the Expression text field, type comp1.atxd1(15e-6,liion.cs_pce1/liion.csmax).

    model.result("pg2").feature("lngr1").set("expr", "comp1.atxd1(15e-6,liion.cs_pce1/liion.csmax)");

//    Click to expand the Legends section.
//    Select the Show legends checkbox.

    model.result("pg2").feature("lngr1").set("legend", true);

//    Right-click Line Graph 1 and choose Duplicate.

    model.result("pg2").feature().duplicate("lngr2", "lngr1");
    model.result("pg2").run();

//    In the Settings window for Line Graph, locate the Data section.
//    In the Times (s) text field, type 760,775,900,1100.

    model.result("pg2").feature("lngr2").setIndex("interp", "760,775,900,1100", 0);

//    Click to expand the Coloring and Style section.
//    Find the Line style subsection.
//    From the Line list, select Dashed.

    model.result("pg2").feature("lngr2").set("linestyle", "dashed");

//    From the Color list, select Cycle (reset).

    model.result("pg2").feature("lngr2").set("linecolor", "cyclereset");
    model.result("pg2").run();

//    In the Model Builder window, click Negative particle concentration.
//    In the Settings window for 1D Plot Group, locate the Title section.
//    From the Title type list, select Label.

    model.result("pg2").set("titletype", "label");

//    Locate the Plot Settings section.
//    Select the x-axis label checkbox.

    model.result("pg2").set("xlabelactive", true);

//    In the associated text field, type Normalized particle dimension (1).

    model.result("pg2").set("xlabel", "Normalized particle dimension (1)");

//    Select the y-axis label checkbox.

    model.result("pg2").set("ylabelactive", true);

//    In the associated text field, type Normalized lithium concentration (1).

    model.result("pg2").set("ylabel", "Normalized lithium concentration (1)");

//    In the Negative particle concentration toolbar, click Plot.

    model.result("pg2").run();

//    Right-click Negative particle concentration and choose Duplicate.

    model.result().duplicate("pg3", "pg2");
    model.result("pg3").run();

//    In the Settings window for 1D Plot Group, type Diffusion-induced stress, radial component in the Label text field.

    model.result("pg3").label("Diffusion-induced stress, radial component");

//    Locate the Plot Settings section.
//    In the y-axis label text field, type Diffusion-induced stress, radial component (Pa).

    model.result("pg3").set("ylabel", "Diffusion-induced stress, radial component (Pa)");
    model.result("pg3").run();

//    In the Model Builder window, expand the Diffusion-induced stress, radial component node, then click Line Graph 1.
//    In the Settings window for Line Graph, locate the Data section.
//    In the Times (s) text field, type 100,300,500,700,750.

    model.result("pg3").feature("lngr1").setIndex("interp", "100,300,500,700,750", 0);

//    Locate the y-Axis Data section.
//    In the Expression text field, type comp1.atxd1(15e-6,liion.sr_pce1).

    model.result("pg3").feature("lngr1").set("expr", "comp1.atxd1(15e-6,liion.sr_pce1)");

//    Click to expand the Quality section.
//    From the Evaluation settings list, select Manual.

    model.result("pg3").feature("lngr1").set("evaluationsettings", "manual");

//    From the Resolution list, select No refinement.

    model.result("pg3").feature("lngr1").set("resolution", "norefine");
    model.result("pg3").run();

//    In the Model Builder window, click Line Graph 2.
//    In the Settings window for Line Graph, locate the y-Axis Data section.
//    In the Expression text field, type comp1.atxd1(15e-6,liion.sr_pce1).

    model.result("pg3").feature("lngr2").set("expr", "comp1.atxd1(15e-6,liion.sr_pce1)");

//    Locate the Quality section.
//    From the Evaluation settings list, select Manual.

    model.result("pg3").feature("lngr2").set("evaluationsettings", "manual");

//    From the Resolution list, select No refinement.

    model.result("pg3").feature("lngr2").set("resolution", "norefine");
    model.result("pg3").run();

//    In the Model Builder window, click Diffusion-induced stress, radial component.
//    In the Settings window for 1D Plot Group, locate the Legend section.
//    From the Position list, select Lower right.

    model.result("pg3").set("legendpos", "lowerright");

//    In the Diffusion-induced stress, radial component toolbar, click Plot.

    model.result("pg3").run();

//    Right-click Diffusion-induced stress, radial component and choose Duplicate.

    model.result().duplicate("pg4", "pg3");
    model.result("pg4").run();

//    In the Settings window for 1D Plot Group, type Diffusion-induced stress, tangential component in the Label text field.

    model.result("pg4").label("Diffusion-induced stress, tangential component");

//    Locate the Plot Settings section.
//    In the y-axis label text field, type Diffusion-induced stress, tangential component (Pa).

    model.result("pg4").set("ylabel", "Diffusion-induced stress, tangential component (Pa)");
    model.result("pg4").run();

//    In the Model Builder window, expand the Diffusion-induced stress, tangential component node, then click Line Graph 1.
//    In the Settings window for Line Graph, locate the y-Axis Data section.
//    In the Expression text field, type comp1.atxd1(15e-6,liion.stheta_pce1).

    model.result("pg4").feature("lngr1").set("expr", "comp1.atxd1(15e-6,liion.stheta_pce1)");
    model.result("pg4").run();

//    In the Model Builder window, click Line Graph 2.
//    In the Settings window for Line Graph, locate the y-Axis Data section.
//    In the Expression text field, type comp1.atxd1(15e-6,liion.stheta_pce1).

    model.result("pg4").feature("lngr2").set("expr", "comp1.atxd1(15e-6,liion.stheta_pce1)");
    model.result("pg4").run();

//    In the Model Builder window, click Diffusion-induced stress, tangential component.
//    In the Diffusion-induced stress, tangential component toolbar, click Plot.

    model.result("pg4").run();

//    Right-click Diffusion-induced stress, tangential component and choose Duplicate.

    model.result().duplicate("pg5", "pg4");
    model.result("pg5").run();

//    In the Settings window for 1D Plot Group, type von Mises Stress in the Label text field.

    model.result("pg5").label("von Mises Stress");

//    Locate the Plot Settings section.
//    In the y-axis label text field, type von Mises stress (Pa).

    model.result("pg5").set("ylabel", "von Mises stress (Pa)");

//    Locate the Legend section.
//    From the Position list, select Upper left.

    model.result("pg5").set("legendpos", "upperleft");
    model.result("pg5").run();

//    In the Model Builder window, expand the von Mises Stress node, then click Line Graph 1.
//    In the Settings window for Line Graph, locate the y-Axis Data section.
//    In the Expression text field, type comp1.atxd1(15e-6,liion.mises_pce1).

    model.result("pg5").feature("lngr1").set("expr", "comp1.atxd1(15e-6,liion.mises_pce1)");
    model.result("pg5").run();

//    In the Model Builder window, click Line Graph 2.
//    In the Settings window for Line Graph, locate the y-Axis Data section.
//    In the Expression text field, type comp1.atxd1(15e-6,liion.mises_pce1).

    model.result("pg5").feature("lngr2").set("expr", "comp1.atxd1(15e-6,liion.mises_pce1)");
    model.result("pg5").run();

//    In the Model Builder window, click von Mises Stress.
//    In the von Mises Stress toolbar, click Plot.

    model.result("pg5").run();

//    In the Results toolbar, click 1D Plot Group.

    model.result().create("pg6", "PlotGroup1D");
    model.result("pg6").run();

//    In the Settings window for 1D Plot Group, type Diffusion-induced surface strain, radial component in the Label text field.

    model.result("pg6").label("Diffusion-induced surface strain, radial component");

//    Right-click Diffusion-induced surface strain, radial component and choose Line Graph.

    model.result("pg6").create("lngr1", "LineGraph");
    model.result("pg6").feature("lngr1").set("markerpos", "datapoints");
    model.result("pg6").feature("lngr1").set("linewidth", "preference");
    model.result("pg6").feature("lngr1").set("evaluationsettings", "parent");

//    In the Settings window for Line Graph, locate the Data section.
//    From the Dataset list, select Study 1/Solution 1 (1) (sol1).

    model.result("pg6").feature("lngr1").set("data", "dset1");

//    From the Time selection list, select Interpolated.

    model.result("pg6").feature("lngr1").setIndex("looplevelinput", "interp", 0);

//    In the Times (s) text field, type 100,300,500,700,750.

    model.result("pg6").feature("lngr1").setIndex("interp", "100,300,500,700,750", 0);

//    Select Domain 1.

    model.result("pg6").feature("lngr1").selection().set(1);

//    Click Replace Expression in the upper-right corner of the y-Axis Data section.
//    From the menu, choose Component 1 (comp1) > Lithium-Ion Battery > Stress and strain > liion.er_surface_pce1 - Diffusion-induced surface strain, radial component - 1.

    model.result("pg6").feature("lngr1").set("expr", "liion.er_surface_pce1");
    model.result("pg6").feature("lngr1").set("descr", "Diffusion-induced surface strain, radial component");

//    Locate the Legends section.
//    Select the Show legends checkbox.

    model.result("pg6").feature("lngr1").set("legend", true);

//    Right-click Line Graph 1 and choose Duplicate.

    model.result("pg6").feature().duplicate("lngr2", "lngr1");
    model.result("pg6").run();

//    In the Settings window for Line Graph, locate the Data section.
//    In the Times (s) text field, type 760,775,900,1100.

    model.result("pg6").feature("lngr2").setIndex("interp", "760,775,900,1100", 0);

//    Locate the Coloring and Style section.
//    Find the Line style subsection.
//    From the Line list, select Dashed.

    model.result("pg6").feature("lngr2").set("linestyle", "dashed");

//    From the Color list, select Cycle (reset).

    model.result("pg6").feature("lngr2").set("linecolor", "cyclereset");
    model.result("pg6").run();

//    In the Model Builder window, click Diffusion-induced surface strain, radial component.
//    In the Settings window for 1D Plot Group, locate the Title section.
//    From the Title type list, select Label.

    model.result("pg6").set("titletype", "label");

//    Locate the Plot Settings section.
//    Select the x-axis label checkbox.

    model.result("pg6").set("xlabelactive", true);

//    In the associated text field, type Distance along negative electrode (m).

    model.result("pg6").set("xlabel", "Distance along negative electrode (m)");

//    Locate the Legend section.
//    From the Position list, select Lower middle.

    model.result("pg6").set("legendpos", "lowermiddle");

//    In the Diffusion-induced surface strain, radial component toolbar, click Plot.

    model.result("pg6").run();

//    Right-click Diffusion-induced surface strain, radial component and choose Duplicate.

    model.result().duplicate("pg7", "pg6");
    model.result("pg7").run();

//    In the Settings window for 1D Plot Group, type Diffusion-induced surface strain, tangential component in the Label text field.

    model.result("pg7").label("Diffusion-induced surface strain, tangential component");
    model.result("pg7").run();

//    In the Model Builder window, expand the Diffusion-induced surface strain, tangential component node, then click Line Graph 1.
//    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 > Stress and strain > liion.etheta_surface_pce1 - Diffusion-induced surface strain, tangential component - 1.

    model.result("pg7").feature("lngr1").set("expr", "liion.etheta_surface_pce1");
    model.result("pg7").feature("lngr1").set("descr", "Diffusion-induced surface strain, tangential component");
    model.result("pg7").run();

//    In the Model Builder window, click Line Graph 2.
//    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 > Stress and strain > liion.etheta_surface_pce1 - Diffusion-induced surface strain, tangential component - 1.

    model.result("pg7").feature("lngr2").set("expr", "liion.etheta_surface_pce1");
    model.result("pg7").feature("lngr2").set("descr", "Diffusion-induced surface strain, tangential component");
    model.result("pg7").run();

//    In the Model Builder window, click Diffusion-induced surface strain, tangential component.
//    In the Diffusion-induced surface strain, tangential component toolbar, click Plot.

    model.result("pg7").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 Total elastic strain energy density in the Label text field.

    model.result("pg8").label("Total elastic strain energy density");

//    Locate the Title section.
//    From the Title type list, select Label.

    model.result("pg8").set("titletype", "label");

//    Locate the Plot Settings section.
//    Select the x-axis label checkbox.

    model.result("pg8").set("xlabelactive", true);

//    In the associated text field, type Distance along negative electrode (m).

    model.result("pg8").set("xlabel", "Distance along negative electrode (m)");

//    Right-click Total elastic strain energy density and choose Line Graph.

    model.result("pg8").create("lngr1", "LineGraph");
    model.result("pg8").feature("lngr1").set("markerpos", "datapoints");
    model.result("pg8").feature("lngr1").set("linewidth", "preference");
    model.result("pg8").feature("lngr1").set("evaluationsettings", "parent");

//    In the Settings window for Line Graph, locate the Data section.
//    From the Dataset list, select Study 1/Solution 1 (1) (sol1).

    model.result("pg8").feature("lngr1").set("data", "dset1");

//    From the Time selection list, select Interpolated.

    model.result("pg8").feature("lngr1").setIndex("looplevelinput", "interp", 0);

//    In the Times (s) text field, type 100,300,500,700,750.

    model.result("pg8").feature("lngr1").setIndex("interp", "100,300,500,700,750", 0);

//    Select Domain 1.

    model.result("pg8").feature("lngr1").selection().set(1);

//    Click Replace Expression in the upper-right corner of the y-Axis Data section.
//    From the menu, choose Component 1 (comp1) > Lithium-Ion Battery > Stress and strain > liion.Ws_tot_pce1 - Total elastic strain energy density - J/m³.

    model.result("pg8").feature("lngr1").set("expr", "liion.Ws_tot_pce1");
    model.result("pg8").feature("lngr1").set("descr", "Total elastic strain energy density");

//    Locate the Legends section.
//    Select the Show legends checkbox.

    model.result("pg8").feature("lngr1").set("legend", true);
    model.result("pg8").run();

//    In the Model Builder window, click Total elastic strain energy density.
//    In the Total elastic strain energy density toolbar, click Plot.

    model.result("pg8").run();

//    In the Results toolbar, click 1D Plot Group.

    model.result().create("pg9", "PlotGroup1D");
    model.result("pg9").run();

//    In the Settings window for 1D Plot Group, type Surface von Mises stress and applied current in the Label text field.

    model.result("pg9").label("Surface von Mises stress and applied current");

//    Right-click Surface von Mises stress and applied current and choose Point Graph.

    model.result("pg9").create("ptgr1", "PointGraph");
    model.result("pg9").feature("ptgr1").set("markerpos", "datapoints");
    model.result("pg9").feature("ptgr1").set("linewidth", "preference");

//    Select Boundaries 1, 2.

    model.result("pg9").feature("ptgr1").selection().set(1, 2);

//    In the Settings window for Point 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 > Stress and strain > liion.mises_surface_pce1 - Surface von Mises stress - Pa.

    model.result("pg9").feature("ptgr1").set("expr", "liion.mises_surface_pce1");
    model.result("pg9").feature("ptgr1").set("descr", "Surface von Mises stress");

//    Click to expand the Legends section.
//    Select the Show legends checkbox.

    model.result("pg9").feature("ptgr1").set("legend", true);

//    From the Legends list, select Manual.

    model.result("pg9").feature("ptgr1").set("legendmethod", "manual");

//    In the table, enter the following settings:

    model.result("pg9").feature("ptgr1").setIndex("legends", "Current collector end", 0);
    model.result("pg9").feature("ptgr1").setIndex("legends", "Separator end", 1);
    model.result("pg9").run();

//    In the Model Builder window, right-click Surface von Mises stress and applied current and choose Global.

    model.result("pg9").create("glob1", "Global");
    model.result("pg9").feature("glob1").set("markerpos", "datapoints");
    model.result("pg9").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.I_app - Applied current - A.

    return model;
  }

  public static Model run4(Model model) {

    model.result("pg9").feature("glob1").set("expr", new String[]{"liion.lc1.I_app"});
    model.result("pg9").feature("glob1").set("descr", new String[]{"Applied current"});
    model.result("pg9").feature("glob1").set("unit", new String[]{"A"});
    model.result("pg9").run();

//    In the Model Builder window, click Surface von Mises stress and applied current.
//    In the Settings window for 1D Plot Group, locate the Plot Settings section.
//    Select the Two y-axes checkbox.

    model.result("pg9").set("twoyaxes", true);

//    In the table, enter the following settings:

    model.result("pg9").setIndex("plotonsecyaxis", true, 1, 1);

//    Locate the Title section.
//    From the Title type list, select Label.

    model.result("pg9").set("titletype", "label");

//    Locate the Legend section.
//    From the Position list, select Upper left.

    model.result("pg9").set("legendpos", "upperleft");

//    In the Surface von Mises stress and applied current toolbar, click Plot.

    model.result("pg9").run();

    model.title("Diffusion-Induced Stress in a Lithium-Ion Battery");

    model
         .description("This example uses the Lithium-Ion Battery interface for analyzing diffusion-induced stress in the negative host material electrode particles during discharge and relaxation of a lithium-ion battery. Diffusion-induced stress and strain occur as a result of compositional inhomogeneities during lithium intercalation in the host material particles. The geometry is in one dimension and the model is isothermal.");

    return model;
  }

  public static void main(String[] args) {
    Model model = run();
    model = run2(model);
    model = run3(model);
    run4(model);
  }

}
