/*
 * led_bulb.java
 */

import com.comsol.model.*;
import com.comsol.model.util.*;

/** Model exported on May 14 2026, 09:33 by COMSOL 6.4.0.420. */
public class led_bulb {

  public static Model run() {
    Model model = ModelUtil.create("Model");

//    From the File menu, choose New.
//    In the New window, click Model Wizard.
//    In the Model Wizard window, click 3D.
//    In the Select Physics tree, select Heat Transfer > Conjugate Heat Transfer > Laminar Flow.
//    Click Add.
//    Click Study.
//    In the Select Study tree, select General Studies > Stationary.
//    Click Done.

    model.component().create("comp1", true);

    model.component("comp1").geom().create("geom1", 3);
    model.component("comp1").geom("geom1").geomRep("comsol");

    model.component("comp1").mesh().create("mesh1");
    model.component("comp1").mesh("mesh1").contribute("geom/detail", true);

    model.component("comp1").physics().create("ht", "HeatTransferInSolidsAndFluids", "geom1");
    model.component("comp1").physics("ht").prop("ShapeProperty").set("order_temperature", "1");
    model.component("comp1").physics().create("spf", "LaminarFlow", "geom1");
    model.component("comp1").physics("spf").prop("AdvancedSettingProperty").set("UsePseudoTime", "1");
    model.component("comp1").physics("spf").prop("PhysicalModelProperty")
         .set("Compressibility", "WeaklyCompressible");

    model.component("comp1").multiphysics().create("nitf1", "NonIsothermalFlow", 3);
    model.component("comp1").multiphysics("nitf1").set("Fluid_physics", "spf");
    model.component("comp1").multiphysics("nitf1").set("Heat_physics", "ht");

    model.study().create("std1");
    model.study("std1").create("stat", "Stationary");

//    First, enter the parameters that will be needed to run the simulation.
//    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("power", "5[W]/4");
    model.param().descr("power", "Nominal power of a quarter of a 5W LED bulb");
    model.param().set("eta", "0.3");
    model.param().descr("eta", "Efficiency");
    model.param().set("heat_losses", "(1-eta)*power");
    model.param().descr("heat_losses", "Part of the power dissipated through heat");

//    In the Geometry toolbar, click Import.

    model.component("comp1").geom("geom1").create("imp1", "Import");

//    In the Settings window for Import, locate the Source section.
//    Click Browse.
//    Browse to the model's Application Library folder and double-click the file led_bulb.mphbin.

    model.component("comp1").geom("geom1").feature("imp1").set("filename", "led_bulb.mphbin");

//    Click Import.

    model.component("comp1").geom("geom1").feature("imp1").importData();

//    Click the Click and Hide button in the Graphics toolbar.
//    In the Graphics window toolbar, click ^ next to Select Objects, then choose Select Boundaries.
//    On the object imp1, select Boundary 44.

    model.component("comp1").view("view1").hideObjects().create("hide1");
    model.component("comp1").view("view1").hideObjects("hide1").init(2);
    model.component("comp1").view("view1").hideObjects("hide1").add("imp1", 44);

//    On the object imp1, select Boundary 261.

    model.component("comp1").view("view1").hideObjects("hide1").add("imp1", 261);

//    On the object imp1, select Boundary 43.

    model.component("comp1").view("view1").hideObjects("hide1").add("imp1", 43);

//    On the object imp1, select Boundary 41.

    model.component("comp1").view("view1").hideObjects("hide1").add("imp1", 41);

//    On the object imp1, select Boundary 42.

    model.component("comp1").view("view1").hideObjects("hide1").add("imp1", 42);

//    To simplify further selections, create some sets from now.
//    In the Geometry toolbar, click Selections and choose Explicit Selection.

    model.component("comp1").geom("geom1").create("sel1", "ExplicitSelection");

//    In the Settings window for Explicit Selection, type LED in the Label text field.

    model.component("comp1").geom("geom1").feature("sel1").label("LED");

//    On the object imp1, select Domains 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41.

    model.component("comp1").geom("geom1").feature("sel1").selection("selection")
         .set("imp1", 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41);

//    In the Geometry toolbar, click Selections and choose Explicit Selection.

    model.component("comp1").geom("geom1").run("sel1");
    model.component("comp1").geom("geom1").create("sel2", "ExplicitSelection");

//    In the Settings window for Explicit Selection, type PCB in the Label text field.

    model.component("comp1").geom("geom1").feature("sel2").label("PCB");

//    Click the Click and Hide button in the Graphics toolbar.
//    On the object imp1, select Domain 1.

    model.component("comp1").view("view1").hideObjects().create("hide2");
    model.component("comp1").view("view1").hideObjects("hide2").init(3);
    model.component("comp1").view("view1").hideObjects("hide2").add("imp1", 1);

//    On the object imp1, select Domain 3.

    model.component("comp1").view("view1").hideObjects("hide2").add("imp1", 3);

//    Click the Click and Hide button in the Graphics toolbar.
//    On the object imp1, select Domains 4, 5, 7, 29.

    model.component("comp1").geom("geom1").feature("sel2").selection("selection").set("imp1", 4, 5, 7, 29);

//    In the Geometry toolbar, click Selections and choose Explicit Selection.

    model.component("comp1").geom("geom1").run("sel2");
    model.component("comp1").geom("geom1").create("sel3", "ExplicitSelection");

//    In the Settings window for Explicit Selection, type PCB Radiating Boundaries in the Label text field.

    model.component("comp1").geom("geom1").feature("sel3").label("PCB Radiating Boundaries");

//    Locate the Entities to Select section.
//    From the Geometric entity level list, select Boundary.

    model.component("comp1").geom("geom1").feature("sel3").selection("selection").init(2);

//    On the object imp1, select Boundaries 21, 49, 53, 82, 83, 84, 85, 86, 87, 98, 126, 127, 128, 129, 130, 131, 143, 169, 170, 171, 172, 173, 174, 188, 189, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260.

    model.component("comp1").geom("geom1").feature("sel3").selection("selection")
         .set("imp1", 21, 49, 53, 82, 83, 84, 85, 86, 87, 98, 126, 127, 128, 129, 130, 131, 143, 169, 170, 171, 172, 173, 174, 188, 189, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260);

//    In the Geometry toolbar, click Selections and choose Explicit Selection.

    model.component("comp1").geom("geom1").run("sel3");
    model.component("comp1").geom("geom1").create("sel4", "ExplicitSelection");

//    In the Settings window for Explicit Selection, type Outlet in the Label text field.

    model.component("comp1").geom("geom1").feature("sel4").label("Outlet");

//    Locate the Entities to Select section.
//    From the Geometric entity level list, select Boundary.

    model.component("comp1").geom("geom1").feature("sel4").selection("selection").init(2);

//    On the object imp1, select Boundary 13.

    model.component("comp1").geom("geom1").feature("sel4").selection("selection").set("imp1", 13);

//    In the Geometry toolbar, click Selections and choose Explicit Selection.

    model.component("comp1").geom("geom1").run("sel4");
    model.component("comp1").geom("geom1").create("sel5", "ExplicitSelection");

//    In the Settings window for Explicit Selection, type Inlet in the Label text field.

    model.component("comp1").geom("geom1").feature("sel5").label("Inlet");

//    Locate the Entities to Select section.
//    From the Geometric entity level list, select Boundary.

    model.component("comp1").geom("geom1").feature("sel5").selection("selection").init(2);

//    On the object imp1, select Boundaries 3, 44, 261.

    model.component("comp1").geom("geom1").feature("sel5").selection("selection").set("imp1", 3, 44, 261);

//    In the Geometry toolbar, click Build All.

    model.component("comp1").geom("geom1").run("fin");

//    Before adding the materials, define which part of the system is solid and which one is fluid, in order to clarify the physics context.
//    In the Model Builder window, under Component 1 (comp1) > Heat Transfer in Solids and Fluids (ht), click Fluid 1.
//    In the Settings window for Fluid, locate the Domain Selection section.
//    Click Paste Selection.
//    In the Paste Selection dialog, type imp1: 1 in the Selection text field.
//    Click OK.

    model.component("comp1").physics("ht").feature("fluid1").selection().set(1);

//    In the Model Builder window, under Component 1 (comp1), click Laminar Flow (spf).
//    In the Settings window for Laminar Flow, locate the Domain Selection section.
//    From the Selection list, select Manual.

    model.component("comp1").physics("spf").selection()
         .set(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41);

//    In the list, select 2, 3 (hidden), 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41.
//    Click Remove from Selection.

    model.component("comp1").physics("spf").selection().set(1);

//    Select Domain 1.
//    In the Home toolbar, click Add Material to open the Add Material window.
//    In the tree, select Built-in > Steel AISI 4340.
//    Click Add to Component in the window toolbar.

    model.component("comp1").material().create("mat1", "Common");
    model.component("comp1").material("mat1").propertyGroup()
         .create("Enu", "Enu", "Young's modulus and Poisson's ratio");
    model.component("comp1").material("mat1").label("Steel AISI 4340");
    model.component("comp1").material("mat1").set("family", "steel");
    model.component("comp1").material("mat1").propertyGroup("def")
         .set("relpermeability", new String[]{"1", "0", "0", "0", "1", "0", "0", "0", "1"});
    model.component("comp1").material("mat1").propertyGroup("def")
         .set("electricconductivity", new String[]{"4.032e6[S/m]", "0", "0", "0", "4.032e6[S/m]", "0", "0", "0", "4.032e6[S/m]"});
    model.component("comp1").material("mat1").propertyGroup("def")
         .set("thermalexpansioncoefficient", new String[]{"12.3e-6[1/K]", "0", "0", "0", "12.3e-6[1/K]", "0", "0", "0", "12.3e-6[1/K]"});
    model.component("comp1").material("mat1").propertyGroup("def").set("heatcapacity", "475[J/(kg*K)]");
    model.component("comp1").material("mat1").propertyGroup("def")
         .set("relpermittivity", new String[]{"1", "0", "0", "0", "1", "0", "0", "0", "1"});
    model.component("comp1").material("mat1").propertyGroup("def").set("density", "7850[kg/m^3]");
    model.component("comp1").material("mat1").propertyGroup("def")
         .set("thermalconductivity", new String[]{"44.5[W/(m*K)]", "0", "0", "0", "44.5[W/(m*K)]", "0", "0", "0", "44.5[W/(m*K)]"});
    model.component("comp1").material("mat1").propertyGroup("Enu").set("E", "205[GPa]");
    model.component("comp1").material("mat1").propertyGroup("Enu").set("nu", "0.28");

//    In the tree, select Built-in > Air.
//    Click Add to Component in the window toolbar.

    model.component("comp1").material().create("mat2", "Common");
    model.component("comp1").material("mat2").propertyGroup("def").func().create("eta", "Piecewise");
    model.component("comp1").material("mat2").propertyGroup("def").func().create("Cp", "Piecewise");
    model.component("comp1").material("mat2").propertyGroup("def").func().create("rho", "Analytic");
    model.component("comp1").material("mat2").propertyGroup("def").func().create("k", "Piecewise");
    model.component("comp1").material("mat2").propertyGroup("def").func().create("cs", "Analytic");
    model.component("comp1").material("mat2").propertyGroup("def").func().create("an1", "Analytic");
    model.component("comp1").material("mat2").propertyGroup("def").func().create("an2", "Analytic");
    model.component("comp1").material("mat2").propertyGroup()
         .create("RefractiveIndex", "RefractiveIndex", "Refractive index");
    model.component("comp1").material("mat2").propertyGroup()
         .create("NonlinearModel", "NonlinearModel", "Nonlinear model");
    model.component("comp1").material("mat2").propertyGroup().create("idealGas", "idealGas", "Ideal gas");
    model.component("comp1").material("mat2").propertyGroup("idealGas").func().create("Cp", "Piecewise");
    model.component("comp1").material("mat2").label("Air");
    model.component("comp1").material("mat2").set("family", "air");
    model.component("comp1").material("mat2").propertyGroup("def").func("eta").set("arg", "T");
    model.component("comp1").material("mat2").propertyGroup("def").func("eta")
         .set("pieces", new String[][]{{"200.0", "1600.0", "-8.38278E-7+8.35717342E-8*T^1-7.69429583E-11*T^2+4.6437266E-14*T^3-1.06585607E-17*T^4"}});
    model.component("comp1").material("mat2").propertyGroup("def").func("eta").set("argunit", "K");
    model.component("comp1").material("mat2").propertyGroup("def").func("eta").set("fununit", "Pa*s");
    model.component("comp1").material("mat2").propertyGroup("def").func("Cp").set("arg", "T");
    model.component("comp1").material("mat2").propertyGroup("def").func("Cp")
         .set("pieces", new String[][]{{"200.0", "1600.0", "1047.63657-0.372589265*T^1+9.45304214E-4*T^2-6.02409443E-7*T^3+1.2858961E-10*T^4"}});
    model.component("comp1").material("mat2").propertyGroup("def").func("Cp").set("argunit", "K");
    model.component("comp1").material("mat2").propertyGroup("def").func("Cp").set("fununit", "J/(kg*K)");
    model.component("comp1").material("mat2").propertyGroup("def").func("rho")
         .set("expr", "pA*0.02897/R_const[K*mol/J]/T");
    model.component("comp1").material("mat2").propertyGroup("def").func("rho").set("args", new String[]{"pA", "T"});
    model.component("comp1").material("mat2").propertyGroup("def").func("rho").set("fununit", "kg/m^3");
    model.component("comp1").material("mat2").propertyGroup("def").func("rho")
         .set("argunit", new String[]{"Pa", "K"});
    model.component("comp1").material("mat2").propertyGroup("def").func("rho")
         .set("plotaxis", new String[]{"off", "on"});
    model.component("comp1").material("mat2").propertyGroup("def").func("rho")
         .set("plotfixedvalue", new String[]{"101325", "273.15"});
    model.component("comp1").material("mat2").propertyGroup("def").func("rho")
         .set("plotargs", new String[][]{{"pA", "101325", "101325"}, {"T", "273.15", "293.15"}});
    model.component("comp1").material("mat2").propertyGroup("def").func("k").set("arg", "T");
    model.component("comp1").material("mat2").propertyGroup("def").func("k")
         .set("pieces", new String[][]{{"200.0", "1600.0", "-0.00227583562+1.15480022E-4*T^1-7.90252856E-8*T^2+4.11702505E-11*T^3-7.43864331E-15*T^4"}});
    model.component("comp1").material("mat2").propertyGroup("def").func("k").set("argunit", "K");
    model.component("comp1").material("mat2").propertyGroup("def").func("k").set("fununit", "W/(m*K)");
    model.component("comp1").material("mat2").propertyGroup("def").func("cs")
         .set("expr", "sqrt(1.4*R_const[K*mol/J]/0.02897*T)");
    model.component("comp1").material("mat2").propertyGroup("def").func("cs").set("args", new String[]{"T"});
    model.component("comp1").material("mat2").propertyGroup("def").func("cs").set("fununit", "m/s");
    model.component("comp1").material("mat2").propertyGroup("def").func("cs").set("argunit", new String[]{"K"});
    model.component("comp1").material("mat2").propertyGroup("def").func("cs")
         .set("plotfixedvalue", new String[]{"273.15"});
    model.component("comp1").material("mat2").propertyGroup("def").func("cs")
         .set("plotargs", new String[][]{{"T", "273.15", "373.15"}});
    model.component("comp1").material("mat2").propertyGroup("def").func("an1").set("funcname", "alpha_p");
    model.component("comp1").material("mat2").propertyGroup("def").func("an1")
         .set("expr", "-1/rho(pA,T)*d(rho(pA,T),T)");
    model.component("comp1").material("mat2").propertyGroup("def").func("an1").set("args", new String[]{"pA", "T"});
    model.component("comp1").material("mat2").propertyGroup("def").func("an1").set("fununit", "1/K");
    model.component("comp1").material("mat2").propertyGroup("def").func("an1")
         .set("argunit", new String[]{"Pa", "K"});
    model.component("comp1").material("mat2").propertyGroup("def").func("an1")
         .set("plotaxis", new String[]{"off", "on"});
    model.component("comp1").material("mat2").propertyGroup("def").func("an1")
         .set("plotfixedvalue", new String[]{"101325", "273.15"});
    model.component("comp1").material("mat2").propertyGroup("def").func("an1")
         .set("plotargs", new String[][]{{"pA", "101325", "101325"}, {"T", "273.15", "373.15"}});
    model.component("comp1").material("mat2").propertyGroup("def").func("an2").set("funcname", "muB");
    model.component("comp1").material("mat2").propertyGroup("def").func("an2").set("expr", "0.6*eta(T)");
    model.component("comp1").material("mat2").propertyGroup("def").func("an2").set("args", new String[]{"T"});
    model.component("comp1").material("mat2").propertyGroup("def").func("an2").set("fununit", "Pa*s");
    model.component("comp1").material("mat2").propertyGroup("def").func("an2").set("argunit", new String[]{"K"});
    model.component("comp1").material("mat2").propertyGroup("def").func("an2")
         .set("plotfixedvalue", new String[]{"200"});
    model.component("comp1").material("mat2").propertyGroup("def").func("an2")
         .set("plotargs", new String[][]{{"T", "200", "1600"}});
    model.component("comp1").material("mat2").propertyGroup("def").set("thermalexpansioncoefficient", "");
    model.component("comp1").material("mat2").propertyGroup("def").set("molarmass", "");
    model.component("comp1").material("mat2").propertyGroup("def").set("bulkviscosity", "");
    model.component("comp1").material("mat2").propertyGroup("def")
         .set("thermalexpansioncoefficient", new String[]{"alpha_p(pA,T)", "0", "0", "0", "alpha_p(pA,T)", "0", "0", "0", "alpha_p(pA,T)"});
    model.component("comp1").material("mat2").propertyGroup("def").set("molarmass", "0.02897[kg/mol]");
    model.component("comp1").material("mat2").propertyGroup("def").set("bulkviscosity", "muB(T)");
    model.component("comp1").material("mat2").propertyGroup("def")
         .set("relpermeability", new String[]{"1", "0", "0", "0", "1", "0", "0", "0", "1"});
    model.component("comp1").material("mat2").propertyGroup("def")
         .set("relpermittivity", new String[]{"1", "0", "0", "0", "1", "0", "0", "0", "1"});
    model.component("comp1").material("mat2").propertyGroup("def").set("dynamicviscosity", "eta(T)");
    model.component("comp1").material("mat2").propertyGroup("def").set("ratioofspecificheat", "1.4");
    model.component("comp1").material("mat2").propertyGroup("def")
         .set("electricconductivity", new String[]{"0[S/m]", "0", "0", "0", "0[S/m]", "0", "0", "0", "0[S/m]"});
    model.component("comp1").material("mat2").propertyGroup("def").set("heatcapacity", "Cp(T)");
    model.component("comp1").material("mat2").propertyGroup("def").set("density", "rho(pA,T)");
    model.component("comp1").material("mat2").propertyGroup("def")
         .set("thermalconductivity", new String[]{"k(T)", "0", "0", "0", "k(T)", "0", "0", "0", "k(T)"});
    model.component("comp1").material("mat2").propertyGroup("def").set("soundspeed", "cs(T)");
    model.component("comp1").material("mat2").propertyGroup("def").addInput("temperature");
    model.component("comp1").material("mat2").propertyGroup("def").addInput("pressure");
    model.component("comp1").material("mat2").propertyGroup("RefractiveIndex")
         .set("n", new String[]{"1", "0", "0", "0", "1", "0", "0", "0", "1"});
    model.component("comp1").material("mat2").propertyGroup("NonlinearModel").set("BA", "def.gamma-1");
    model.component("comp1").material("mat2").propertyGroup("idealGas").func("Cp").label("Piecewise 2");
    model.component("comp1").material("mat2").propertyGroup("idealGas").func("Cp").set("arg", "T");
    model.component("comp1").material("mat2").propertyGroup("idealGas").func("Cp")
         .set("pieces", new String[][]{{"200.0", "1600.0", "1047.63657-0.372589265*T^1+9.45304214E-4*T^2-6.02409443E-7*T^3+1.2858961E-10*T^4"}});
    model.component("comp1").material("mat2").propertyGroup("idealGas").func("Cp").set("argunit", "K");
    model.component("comp1").material("mat2").propertyGroup("idealGas").func("Cp").set("fununit", "J/(kg*K)");
    model.component("comp1").material("mat2").propertyGroup("idealGas").set("Rs", "R_const/Mn");
    model.component("comp1").material("mat2").propertyGroup("idealGas").set("heatcapacity", "Cp(T)");
    model.component("comp1").material("mat2").propertyGroup("idealGas").set("ratioofspecificheat", "1.4");
    model.component("comp1").material("mat2").propertyGroup("idealGas").set("molarmass", "0.02897[kg/mol]");
    model.component("comp1").material("mat2").propertyGroup("idealGas").addInput("temperature");
    model.component("comp1").material("mat2").propertyGroup("idealGas").addInput("pressure");
    model.component("comp1").material("mat2").materialType("nonSolid");

//    In the tree, select Built-in > Aluminum.
//    Click Add to Component in the window toolbar.

    model.component("comp1").material().create("mat3", "Common");
    model.component("comp1").material("mat3").propertyGroup()
         .create("Enu", "Enu", "Young's modulus and Poisson's ratio");
    model.component("comp1").material("mat3").propertyGroup().create("Murnaghan", "Murnaghan", "Murnaghan");
    model.component("comp1").material("mat3").label("Aluminum");
    model.component("comp1").material("mat3").set("family", "aluminum");
    model.component("comp1").material("mat3").propertyGroup("def")
         .set("relpermeability", new String[]{"1", "0", "0", "0", "1", "0", "0", "0", "1"});
    model.component("comp1").material("mat3").propertyGroup("def").set("heatcapacity", "900[J/(kg*K)]");
    model.component("comp1").material("mat3").propertyGroup("def")
         .set("thermalconductivity", new String[]{"238[W/(m*K)]", "0", "0", "0", "238[W/(m*K)]", "0", "0", "0", "238[W/(m*K)]"});
    model.component("comp1").material("mat3").propertyGroup("def")
         .set("electricconductivity", new String[]{"3.774e7[S/m]", "0", "0", "0", "3.774e7[S/m]", "0", "0", "0", "3.774e7[S/m]"});
    model.component("comp1").material("mat3").propertyGroup("def")
         .set("relpermittivity", new String[]{"1", "0", "0", "0", "1", "0", "0", "0", "1"});
    model.component("comp1").material("mat3").propertyGroup("def")
         .set("thermalexpansioncoefficient", new String[]{"23e-6[1/K]", "0", "0", "0", "23e-6[1/K]", "0", "0", "0", "23e-6[1/K]"});
    model.component("comp1").material("mat3").propertyGroup("def").set("density", "2700[kg/m^3]");
    model.component("comp1").material("mat3").propertyGroup("Enu").set("E", "70[GPa]");
    model.component("comp1").material("mat3").propertyGroup("Enu").set("nu", "0.33");
    model.component("comp1").material("mat3").propertyGroup("Murnaghan").set("l", "-250[GPa]");
    model.component("comp1").material("mat3").propertyGroup("Murnaghan").set("m", "-330[GPa]");
    model.component("comp1").material("mat3").propertyGroup("Murnaghan").set("n", "-350[GPa]");

//    In the tree, select Built-in > Acrylic plastic.
//    Click Add to Component in the window toolbar.

    model.component("comp1").material().create("mat4", "Common");
    model.component("comp1").material("mat4").propertyGroup()
         .create("Enu", "Enu", "Young's modulus and Poisson's ratio");
    model.component("comp1").material("mat4").label("Acrylic plastic");
    model.component("comp1").material("mat4").set("family", "custom");
    model.component("comp1").material("mat4")
         .set("customspecular", new double[]{0.9803921568627451, 0.9803921568627451, 0.9803921568627451});
    model.component("comp1").material("mat4").set("diffuse", "custom");
    model.component("comp1").material("mat4")
         .set("customdiffuse", new double[]{0.39215686274509803, 0.7843137254901961, 0.39215686274509803});
    model.component("comp1").material("mat4").set("ambient", "custom");
    model.component("comp1").material("mat4")
         .set("customambient", new double[]{0.39215686274509803, 0.7843137254901961, 0.39215686274509803});
    model.component("comp1").material("mat4").set("noise", true);
    model.component("comp1").material("mat4").set("lighting", "phong");
    model.component("comp1").material("mat4").set("shininess", 1000);
    model.component("comp1").material("mat4").propertyGroup("def")
         .set("thermalexpansioncoefficient", new String[]{"7.0e-5[1/K]", "0", "0", "0", "7.0e-5[1/K]", "0", "0", "0", "7.0e-5[1/K]"});
    model.component("comp1").material("mat4").propertyGroup("def").set("heatcapacity", "1470[J/(kg*K)]");
    model.component("comp1").material("mat4").propertyGroup("def").set("density", "1190[kg/m^3]");
    model.component("comp1").material("mat4").propertyGroup("def")
         .set("thermalconductivity", new String[]{"0.18[W/(m*K)]", "0", "0", "0", "0.18[W/(m*K)]", "0", "0", "0", "0.18[W/(m*K)]"});
    model.component("comp1").material("mat4").propertyGroup("Enu").set("E", "3.2[GPa]");
    model.component("comp1").material("mat4").propertyGroup("Enu").set("nu", "0.35");

//    In the tree, select Material Library > Epoxies, Adhesives, and Underfills > Filled epoxy resin (X238) > Filled epoxy resin (X238) [solid].
//    Click Add to Component in the window toolbar.

    model.component("comp1").material().create("mat5", "Common");
    model.component("comp1").material("mat5").label("Filled epoxy resin (X238) [solid]");
    model.component("comp1").material("mat5").info().create("Composition");
    model.component("comp1").material("mat5").info("Composition")
         .body("35 vol % powdered aluminum + 35 vol % SiO\u0082");
    model.component("comp1").material("mat5").info("Composition").title("Composition");
    model.component("comp1").material("mat5").propertyGroup("def").set("thermalconductivity", "k(T)");
    model.component("comp1").material("mat5").propertyGroup("def")
         .setPropertyInfo("thermalconductivity", "Reference: V. Giaretto and M.F. Torchio, \"Estimation of the thermal conductivity of an epoxy resin by the use of an internal parallelepiped heat source. II: Experimental analysis\", High Temperatures-High Pressures, v31, No. 6, p643 (1999)\nNote: Ciba-Geigy");
    model.component("comp1").material("mat5").propertyGroup("def").set("density", "1673[kg/m^3]");
    model.component("comp1").material("mat5").propertyGroup("def")
         .setPropertyInfo("density", "Reference: V. Giaretto and M.F. Torchio, \"Estimation of the thermal conductivity of an epoxy resin by the use of an internal parallelepiped heat source. II: Experimental analysis\", High Temperatures-High Pressures, v31, No. 6, p643 (1999)\nNote: Ciba-Geigy, room temperature value");
    model.component("comp1").material("mat5").propertyGroup("def").func().clear();
    model.component("comp1").material("mat5").propertyGroup("def").func().create("k", "Piecewise");
    model.component("comp1").material("mat5").propertyGroup("def").func("k").set("funcname", "k");
    model.component("comp1").material("mat5").propertyGroup("def").func("k").set("arg", "T");
    model.component("comp1").material("mat5").propertyGroup("def").func("k").set("extrap", "constant");
    model.component("comp1").material("mat5").propertyGroup("def").func("k")
         .set("pieces", new String[][]{{"293.0", "353.16", "-0.03037232+0.001554161*T^1"}});
    model.component("comp1").material("mat5").propertyGroup("def").func("k").label("Piecewise");
    model.component("comp1").material("mat5").propertyGroup("def").func("k").set("fununit", "W/(m*K)");
    model.component("comp1").material("mat5").propertyGroup("def").func("k").set("argunit", "K");
    model.component("comp1").material("mat5").propertyGroup("def").addInput("temperature");

//    In the Home toolbar, click Add Material to close the Add Material window.
//    In the Settings window for Material, type Bulb base in the Label text field.

    model.component("comp1").material("mat1").label("Bulb base");

//    Click the Transparency button in the Graphics toolbar.

    model.component("comp1").view("view1").set("transparency", true);

//    In the Model Builder window, click Air (mat2).
//    In the Settings window for Material, in the Graphics window toolbar, click ^ next to View Unhidden, then choose View All.

    model.component("comp1").view("view1").set("hidestatus", "ignore");

//    Select Domain 1.

    model.component("comp1").material("mat2").selection().set(1);

//    In the Model Builder window, under Component 1 (comp1) > Materials, click Aluminum (mat3).
//    In the Settings window for Material, type PCB in the Label text field.

    model.component("comp1").material("mat3").label("PCB");

//    Locate the Geometric Entity Selection section.
//    From the Selection list, select PCB.

    model.component("comp1").material("mat3").selection().named("geom1_sel2");

//    In the Model Builder window, under Component 1 (comp1) > Materials, click Acrylic plastic (mat4).
//    In the Settings window for Material, type Plastic bulb in the Label text field.

    model.component("comp1").material("mat4").label("Plastic bulb");

//    Select Domain 3.

    model.component("comp1").material("mat4").selection().set(3);

//    In the Model Builder window, under Component 1 (comp1) > Materials, click Filled epoxy resin (X238) [solid] (mat5).
//    In the Settings window for Material, type LED chips in the Label text field.

    model.component("comp1").material("mat5").label("LED chips");

//    Locate the Geometric Entity Selection section.
//    From the Selection list, select LED.

    model.component("comp1").material("mat5").selection().named("geom1_sel1");

//    Add the heat capacity at constant pressure to the list of properties of the epoxy resin material.
//    Locate the Material Contents section.
//    In the table, enter the following settings:

    model.component("comp1").material("mat5").propertyGroup("def").set("heatcapacity", new String[]{"1200[J/kg/K]"});

//    In the Model Builder window, under Component 1 (comp1), click Laminar Flow (spf).
//    Select Domain 1.
//    Since the density variation is not small, the flow cannot be regarded as incompressible. Therefore set the flow to be compressible.
//    In the Settings window for Laminar Flow, locate the Physical Model section.
//    From the Compressibility list, select Compressible flow (Ma<0.3).

    model.component("comp1").physics("spf").prop("PhysicalModelProperty")
         .set("Compressibility", "CompressibleMALT03");

//    As the flow is driven by buoyancy, gravity matters.
//    Select the Include gravity checkbox.

    model.component("comp1").physics("spf").prop("PhysicalModelProperty").set("IncludeGravity", true);

//    Select the Use reduced pressure checkbox.

    model.component("comp1").physics("spf").prop("PhysicalModelProperty").set("UseReducedPressure", true);

//    In the Model Builder window, under Component 1 (comp1) > Laminar Flow (spf), click Initial Values 1.
//    In the Settings window for Initial Values, locate the Initial Values section.
//    Specify the \[\mathbf{u}\] vector as

    model.component("comp1").physics("spf").feature("init1").set("u_init", new String[]{"0", "0", "1e-2[m/s]"});

//    In the Physics toolbar, click Boundaries and choose Open Boundary.

    model.component("comp1").physics("spf").create("open1", "OpenBoundary", 2);

//    Select Boundary 3.

    model.component("comp1").physics("spf").feature("open1").selection().set(3);

//    In the Settings window for Open Boundary, locate the Boundary Condition section.
//    In the \[f_{\textrm{0}}\] text field, type -0.5*spf.rhoref*w^2.

    model.component("comp1").physics("spf").feature("open1").set("f0", "-0.5*spf.rhoref*w^2");

//    In the Physics toolbar, click Boundaries and choose Open Boundary.

    model.component("comp1").physics("spf").create("open2", "OpenBoundary", 2);

//    Select Boundaries 13, 44, 261.

    model.component("comp1").physics("spf").feature("open2").selection().set(13, 44, 261);

    return model;
  }

  public static Model run2(Model model) {

//    In the Physics toolbar, click Boundaries and choose Symmetry.

    model.component("comp1").physics("spf").create("sym1", "Symmetry", 2);

//    Select Boundaries 1, 2, 7.

    model.component("comp1").physics("spf").feature("sym1").selection().set(1, 2, 7);

//    In the Model Builder window, under Component 1 (comp1), click Heat Transfer in Solids and Fluids (ht).
//    In the Physics toolbar, click Domains and choose Heat Source.

    model.component("comp1").physics("ht").create("hs1", "HeatSource", 3);

//    In the Settings window for Heat Source, locate the Domain Selection section.
//    From the Selection list, select LED.

    model.component("comp1").physics("ht").feature("hs1").selection().named("geom1_sel1");

//    Locate the Heat Source section.
//    From the Heat source list, select Heat rate.

    model.component("comp1").physics("ht").feature("hs1").set("heatSourceType", "HeatRate");

//    In the \[P_0\] text field, type heat_losses.

    model.component("comp1").physics("ht").feature("hs1").set("P0", "heat_losses");

//    In the Physics toolbar, click Boundaries and choose Surface-to-Ambient Radiation.

    model.component("comp1").physics("ht").create("sar1", "SurfaceToAmbientRadiation", 2);

//    In the Settings window for Surface-to-Ambient Radiation, locate the Boundary Selection section.
//    From the Selection list, select PCB Radiating Boundaries.

    model.component("comp1").physics("ht").feature("sar1").selection().named("geom1_sel3");

//    In the list, select 21.
//    select 21 in the list.
//    Locate the Surface-to-Ambient Radiation section.
//    From the \[\varepsilon\] list, select User defined.

    model.component("comp1").physics("ht").feature("sar1").set("epsilon_rad_mat", "userdef");

//    In the associated text field, type 0.9.

    model.component("comp1").physics("ht").feature("sar1").set("epsilon_rad", 0.9);

//    In the Physics toolbar, click Boundaries and choose Open Boundary.

    model.component("comp1").physics("ht").create("open1", "OpenBoundary", 2);

//    Select Boundaries 3, 13, 44, 261.

    model.component("comp1").physics("ht").feature("open1").selection().set(3, 13, 44, 261);

//    In the Physics toolbar, click Boundaries and choose Symmetry.

    model.component("comp1").physics("ht").create("sym1", "Symmetry", 2);

//    Select Boundaries 1, 2, 4, 5, 7, 9, 10, 14, 18, 22, 55, 56, 96, 100, 138, 184, 190, 194, 198, 202, 206, 210.

    model.component("comp1").physics("ht").feature("sym1").selection()
         .set(1, 2, 4, 5, 7, 9, 10, 14, 18, 22, 55, 56, 96, 100, 138, 184, 190, 194, 198, 202, 206, 210);

//    Define the mesh manually to have enough cells within the thin parts of the geometry and precise boundary layers, without having too many elements.
//    In the Model Builder window, under Component 1 (comp1), click Mesh 1.
//    In the Settings window for Mesh, locate the Physics-Controlled Mesh section.
//    From the Element size list, select Coarse.

    model.component("comp1").mesh("mesh1").autoMeshSize(6);

//    Locate the Sequence Type section.
//    From the list, select User-controlled mesh.

    model.component("comp1").mesh("mesh1").automatic(false);

//    In the Model Builder window, under Component 1 (comp1) > Mesh 1, click Size.
//    In the Settings window for Size, locate the Element Size Parameters section.
//    In the Minimum element size text field, type 4e-4.

    model.component("comp1").mesh("mesh1").feature("size").set("hmin", "4e-4");

//    In the Model Builder window, click Size 1.
//    In the Settings window for Size, locate the Element Size section.
//    Click the Predefined button.

    model.component("comp1").mesh("mesh1").feature("size1").set("custom", false);

//    In the Model Builder window, right-click Size 3 and choose Disable.

    model.component("comp1").mesh("mesh1").feature("size3").active(false);

//    In the Settings window for Size, click Build All.

    model.component("comp1").mesh("mesh1").run();

//    In the Home toolbar, click Compute.

    model.study("std1").createAutoSequences("all");

    model.sol("sol1").runAll();

    model.result().create("pg1", "PlotGroup3D");
    model.result("pg1").label("Temperature (ht)");
    model.result("pg1").set("smooth", "internal");
    model.result("pg1").feature().create("vol1", "Volume");
    model.result("pg1").feature("vol1").set("solutionparams", "parent");
    model.result("pg1").feature("vol1").set("colortable", "HeatCameraLight");
    model.result("pg1").feature("vol1").set("smooth", "internal");
    model.result("pg1").feature("vol1").set("data", "parent");
    model.result().dataset("dset1").set("geom", "geom1");
    model.result().create("pg2", "PlotGroup3D");
    model.result("pg2").label("Velocity (spf)");
    model.result("pg2").set("frametype", "spatial");
    model.result("pg2").set("smooth", "internal");
    model.result("pg2").feature().create("mslc1", "Multislice");
    model.result("pg2").feature("mslc1").set("expr", "spf.U");
    model.result("pg2").feature("mslc1").set("smooth", "internal");
    model.result("pg2").feature("mslc1").set("data", "parent");
    model.result().create("pg3", "PlotGroup3D");
    model.result("pg3").label("Pressure (spf)");
    model.result("pg3").set("frametype", "spatial");
    model.result("pg3").set("smooth", "internal");
    model.result("pg3").feature().create("surf1", "Surface");
    model.result("pg3").feature("surf1").label("Surface");
    model.result("pg3").feature("surf1").set("expr", "p");
    model.result("pg3").feature("surf1").set("colortable", "Tectocoris");
    model.result("pg3").feature("surf1").set("colortabletype", "discrete");
    model.result("pg3").feature("surf1").set("bandcount", 25);
    model.result("pg3").feature("surf1").set("smooth", "internal");
    model.result("pg3").feature("surf1").set("data", "parent");
    model.result("pg3").feature("surf1").feature().create("sel1", "Selection");
    model.result("pg3").feature("surf1").feature("sel1").selection().geom("geom1", 2);
    model.result("pg3").feature("surf1").feature("sel1").selection()
         .set(6, 8, 11, 12, 15, 16, 17, 19, 20, 21, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 41, 42, 43, 45, 46, 49, 50, 51, 53, 54, 57, 58, 60, 61, 62, 64, 65, 66, 68, 69, 70, 72, 73, 74, 76, 77, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 98, 99, 101, 102, 104, 105, 106, 108, 109, 110, 112, 113, 114, 116, 117, 118, 120, 121, 122, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, 143, 144, 146, 147, 148, 150, 151, 152, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 187, 188, 191, 192, 195, 196, 199, 200, 203, 204, 207, 208, 211, 212, 213, 214, 215, 216, 217, 218, 220, 221, 222, 224, 225, 226, 228, 229, 230, 232, 233, 234, 236, 237, 238, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260);
    model.result().create("pg4", "PlotGroup3D");
    model.result("pg4").label("Temperature and Fluid Flow (nitf1)");
    model.result("pg4").set("showlegendsunit", true);
    model.result("pg4").set("smooth", "internal");
    model.result("pg4").feature().create("surf1", "Surface");
    model.result("pg4").feature("surf1").label("Wall Temperature");
    model.result("pg4").feature("surf1").set("solutionparams", "parent");
    model.result("pg4").feature("surf1").set("expr", "ht.Tvar");
    model.result("pg4").feature("surf1").set("colortable", "HeatCameraLight");
    model.result("pg4").feature("surf1").set("smooth", "internal");
    model.result("pg4").feature("surf1").set("data", "parent");
    model.result("pg4").feature("surf1").feature().create("sel1", "Selection");
    model.result("pg4").feature("surf1").feature("sel1").selection().geom("geom1", 2);
    model.result("pg4").feature("surf1").feature("sel1").selection()
         .set(6, 8, 11, 12, 15, 16, 17, 19, 20, 21, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 41, 42, 43, 45, 46, 49, 50, 51, 53, 54, 57, 58, 60, 61, 62, 64, 65, 66, 68, 69, 70, 72, 73, 74, 76, 77, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 98, 99, 101, 102, 104, 105, 106, 108, 109, 110, 112, 113, 114, 116, 117, 118, 120, 121, 122, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 139, 140, 141, 143, 144, 146, 147, 148, 150, 151, 152, 154, 155, 156, 158, 159, 160, 162, 163, 164, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 187, 188, 191, 192, 195, 196, 199, 200, 203, 204, 207, 208, 211, 212, 213, 214, 215, 216, 217, 218, 220, 221, 222, 224, 225, 226, 228, 229, 230, 232, 233, 234, 236, 237, 238, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260);
    model.result("pg4").feature().create("vol1", "Volume");
    model.result("pg4").feature("vol1").label("Solid Temperature");
    model.result("pg4").feature("vol1").set("solutionparams", "parent");
    model.result("pg4").feature("vol1").set("expr", "nitf1.T");
    model.result("pg4").feature("vol1").set("smooth", "internal");
    model.result("pg4").feature("vol1").set("data", "parent");
    model.result("pg4").feature("vol1").feature().create("sel1", "Selection");
    model.result("pg4").feature("vol1").feature("sel1").selection().geom("geom1", 3);
    model.result("pg4").feature("vol1").feature("sel1").selection()
         .set(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41);
    model.result("pg4").feature("vol1").set("inheritplot", "surf1");
    model.result("pg4").feature().create("arwv1", "ArrowVolume");
    model.result("pg4").feature("arwv1").label("Fluid Flow");
    model.result("pg4").feature("arwv1").set("solutionparams", "parent");
    model.result("pg4").feature("arwv1").set("expr", new String[]{"nitf1.ux", "nitf1.uy", "nitf1.uz"});
    model.result("pg4").feature("arwv1").set("xnumber", 30);
    model.result("pg4").feature("arwv1").set("ynumber", 30);
    model.result("pg4").feature("arwv1").set("znumber", 30);
    model.result("pg4").feature("arwv1").set("arrowtype", "cone");
    model.result("pg4").feature("arwv1").set("arrowlength", "logarithmic");
    model.result("pg4").feature("arwv1").set("data", "parent");
    model.result("pg4").feature("arwv1").feature().create("col1", "Color");
    model.result("pg4").feature("arwv1").feature("col1").set("expr", "spf.U");
    model.result("pg4").feature("arwv1").feature().create("filt1", "Filter");
    model.result("pg4").feature("arwv1").feature("filt1").set("expr", "spf.U>nitf1.Uave");
    model.result("pg1").run();

//    In the Model Builder window, expand the Results > Datasets node.
//    Right-click Results > Datasets and choose More 3D Datasets > Mirror 3D.

    model.result().dataset().create("mir1", "Mirror3D");

//    In the Settings window for Mirror 3D, click Plot.
//    Click to expand the Advanced section.
//    Find the Space variables subsection.
//    Select the Remove elements on the symmetry plane checkbox.

    model.result().dataset("mir1").set("removesymelem", true);

//    Click Plot.
//    In the Results toolbar, click More Datasets and choose Mirror 3D.

    model.result().dataset().create("mir2", "Mirror3D");

//    In the Settings window for Mirror 3D, locate the Data section.
//    From the Dataset list, select Mirror 3D 1.

    model.result().dataset("mir2").set("data", "mir1");

//    Locate the Plane Data section.
//    From the Plane list, select zx-planes.

    model.result().dataset("mir2").set("quickplane", "zx");

//    Locate the Advanced section.
//    Find the Space variables subsection.
//    Select the Remove elements on the symmetry plane checkbox.

    model.result().dataset("mir2").set("removesymelem", true);

//    Click Plot.
//    In the Model Builder window, expand the Component 1 (comp1) > Definitions node.
//    In the Model Builder window, expand the Component 1 (comp1) > Definitions > View 1 node.
//    Right-click Hide for Geometry 1 and choose Disable.

    model.component("comp1").view("view1").hideObjects("hide1").active(false);

//    In the Model Builder window, right-click Hide for Geometry 2 and choose Disable.

    model.component("comp1").view("view1").hideObjects("hide2").active(false);

//    In the Model Builder window, under Results > Datasets, click Mirror 3D 2.
//    In the Settings window for Mirror 3D, click Plot.

    model.result("pg4").run();

//    In the Model Builder window, under Results, click Temperature and Fluid Flow (nitf1).
//    In the Settings window for 3D Plot Group, locate the Data section.
//    From the Dataset list, select Mirror 3D 2.

    model.result("pg4").set("data", "mir2");

//    Locate the Plot Settings section.
//    Clear the Plot dataset edges checkbox.

    model.result("pg4").set("edges", false);

//    Locate the Color Legend section.
//    Select the Show maximum and minimum values checkbox.

    model.result("pg4").set("showlegendsmaxmin", true);
    model.result("pg4").run();

//    In the Model Builder window, expand the Temperature and Fluid Flow (nitf1) node, then click Wall Temperature.
//    In the Settings window for Surface, locate the Expression section.
//    From the Unit list, select °C.

    model.result("pg4").feature("surf1").set("unit", "\u00b0C");
    model.result("pg4").run();

//    In the Model Builder window, click Solid Temperature.
//    In the Settings window for Volume, locate the Expression section.
//    From the Unit list, select °C.

    model.result("pg4").feature("vol1").set("unit", "\u00b0C");

//    In the Temperature and Fluid Flow (nitf1) toolbar, click Plot.

    model.result("pg4").run();

//    Click the Transparency button in the Graphics toolbar.

    model.view("view2").set("transparency", true);

//    Click the Show Axis Orientation button in the Graphics toolbar.

    model.view("view2").set("showaxisorientation", false);

//    Click the Show Grid button in the Graphics toolbar.

    model.view("view2").set("showgrid", false);

    model.result("pg2").run();

//    In the Model Builder window, expand the Results > Velocity (spf) node, then click Velocity (spf).
//    In the Settings window for 3D Plot Group, locate the Color Legend section.
//    Select the Show maximum and minimum values checkbox.

    model.result("pg2").set("showlegendsmaxmin", true);

//    Select the Show units checkbox.

    model.result("pg2").set("showlegendsunit", true);
    model.result("pg2").run();

//    In the Model Builder window, click Multislice 1.
//    In the Settings window for Multislice, locate the Multiplane Data section.
//    Find the y-planes subsection.
//    In the Planes text field, type 0.

    model.result("pg2").feature("mslc1").set("ynumber", "0");

//    Find the z-planes subsection.
//    In the Planes text field, type 0.

    model.result("pg2").feature("mslc1").set("znumber", "0");
    model.result("pg2").run();

//    In the Model Builder window, click Velocity (spf).
//    In the Settings window for 3D Plot Group, locate the Data section.
//    From the Dataset list, select Mirror 3D 2.

    model.result("pg2").set("data", "mir2");

//    In the Velocity (spf) toolbar, click Plot.

    model.result("pg2").run();

//    Click the Go to YZ View button in the Graphics toolbar.
//    Click the Transparency button in the Graphics toolbar.

    model.view("view2").set("transparency", false);

    model.result("pg4").run();

    model.title("LED Bulb Cooling");

    model
         .description("This model describes the three heat transfer modes, conduction, convection, and radiation combined with nonisothermal flow in a realistic geometry representing a light bulb and the surrounding air.\nThe LED chips dissipate heat. The model computes the equilibrium temperature induced by these heat sources, conduction in solid parts, convective cooling due to natural convection, and radiative cooling to the ambient environment.");

    return model;
  }

  public static void main(String[] args) {
    Model model = run();
    run2(model);
  }

}
