/* * Java source code for thermo-mechanical modeling of a rat retina. * The model is used to study the influence of the optical absorption coefficient on the Arrhenius integral * as described in Section "Non-damaging treatment range" of the Supplemental Information * * Instruction for compiling and running the code are available at: * https://www.comsol.com/blogs/automate-modeling-tasks-comsol-api-use-java/ * * Creator: David Veysset */ import com.comsol.model.*; import com.comsol.model.util.*; /** Model exported on Nov 2 2021, 11:42 by COMSOL 5.6.0.401. */ public class FullRatRetina_IdealBeam_v01 { public static Model run() { Model model = ModelUtil.create("Model"); model.modelPath("~/Dataset"); model.label("FullRatRetina_IdealBeam_v01.mph"); model.comments("untitled\n\n"); model.param().set("WaterSize", "500[um]"); model.param().set("BeamPower", "55[mW]"); model.param().set("PulseDuration", "10[ms]"); model.param().set("RoomTemp", "37[degC]"); model.param().set("WaterThickness", "300[um]"); model.param().set("GlassThickness", "150[um]"); model.param().set("AcqInterval", "250[us]"); model.param().set("AcqDuration", "200[ms]"); model.param().set("RPEmelaThickness", "1[um]"); model.param().set("RPEbasalThickness", "3[um]"); model.param().set("PCThickness", "20[um]"); model.param().set("NPCThickness", "30[um]"); model.param().set("ScleraThickness", "500[um]"); model.param().set("alphaRPEmela", "997600[1/m]"); model.param().set("alphaRPEbasal", "0[1/m]"); model.param().set("alphaPC", "249400[1/m]"); model.param().set("alphaNPC", "47500[1/m]"); model.param().set("RPEmelaTop", "-NFLThickness-IPLThickness-INLThickness-OPLThickness-ONLThickness-PRThickness"); model.param() .set("RPEbasalTop", "-NFLThickness-IPLThickness-INLThickness-OPLThickness-ONLThickness-PRThickness-RPEmelaThickness"); model.param() .set("PCTop", "-NFLThickness-IPLThickness-INLThickness-OPLThickness-ONLThickness-PRThickness-RPEmelaThickness-RPEbasalThickness"); model.param() .set("NPCTop", "-NFLThickness-IPLThickness-INLThickness-OPLThickness-ONLThickness-PRThickness-RPEmelaThickness-RPEbasalThickness-PCThickness"); model.param() .set("ScleraTop", "-NFLThickness-IPLThickness-INLThickness-OPLThickness-ONLThickness-PRThickness-RPEmelaThickness-RPEbasalThickness-PCThickness-NPCThickness"); model.param().set("NFLThickness", "30[um]"); model.param().set("FatThickness", "500[um]"); model.param().set("INLThickness", "20[um]"); model.param().set("OPLThickness", "10[um]"); model.param().set("ONLThickness", "50[um]"); model.param().set("NFLTop", "0"); model.param().set("INLTop", "-NFLThickness-IPLThickness"); model.param().set("OPLTop", "-NFLThickness-IPLThickness-INLThickness"); model.param().set("ONLTop", "-NFLThickness-IPLThickness-INLThickness-OPLThickness"); model.param().set("PRTop", "-NFLThickness-IPLThickness-INLThickness-OPLThickness-ONLThickness"); model.param().set("PRThickness", "40[um]"); model.param().set("IPLTop", "-NFLThickness"); model.param().set("IPLThickness", "30[um]"); model.param().set("BeamRadius", "200[um]"); model.component().create("comp1", true); model.component("comp1").geom().create("geom1", 2); model.component("comp1").curvedInterior(false); model.result().table().create("tbl1", "Table"); model.result().table().create("evl3", "Table"); model.result().table().create("evl2", "Table"); model.func().create("rect1", "Rectangle"); model.func().create("rect2", "Rectangle"); model.func("rect1").set("funcname", "rectt"); model.func("rect1").set("lower", 0); model.func("rect1").set("upper", "PulseDuration[1/s]"); model.func("rect1").set("smooth", "1e-6"); model.func("rect2").set("funcname", "rectr"); model.func("rect2").set("lower", "-BeamRadius[1/m^2]"); model.func("rect2").set("upper", "BeamRadius[1/m^2]"); model.func("rect2").set("smooth", "1e-6"); model.component("comp1").geom("geom1").axisymmetric(true); model.component("comp1").mesh().create("mesh1"); model.component("comp1").geom("geom1").lengthUnit("\u00b5m"); model.component("comp1").geom("geom1").create("r3", "Rectangle"); model.component("comp1").geom("geom1").feature("r3").label("VitreousAboveRetina"); model.component("comp1").geom("geom1").feature("r3").set("pos", new int[]{0, 0}); model.component("comp1").geom("geom1").feature("r3").set("size", new String[]{"WaterSize", "WaterThickness"}); model.component("comp1").geom("geom1").create("r11", "Rectangle"); model.component("comp1").geom("geom1").feature("r11").label("NFL-GCL"); model.component("comp1").geom("geom1").feature("r11").set("pos", new String[]{"0", "NFLTop-NFLThickness"}); model.component("comp1").geom("geom1").feature("r11").set("size", new String[]{"WaterSize", "NFLThickness"}); model.component("comp1").geom("geom1").create("r17", "Rectangle"); model.component("comp1").geom("geom1").feature("r17").label("IPL"); model.component("comp1").geom("geom1").feature("r17").set("pos", new String[]{"0", "IPLTop-IPLThickness"}); model.component("comp1").geom("geom1").feature("r17").set("size", new String[]{"WaterSize", "IPLThickness"}); model.component("comp1").geom("geom1").create("r13", "Rectangle"); model.component("comp1").geom("geom1").feature("r13").label("INL"); model.component("comp1").geom("geom1").feature("r13").set("pos", new String[]{"0", "INLTop-INLThickness"}); model.component("comp1").geom("geom1").feature("r13").set("size", new String[]{"WaterSize", "INLThickness"}); model.component("comp1").geom("geom1").create("r14", "Rectangle"); model.component("comp1").geom("geom1").feature("r14").label("OPL"); model.component("comp1").geom("geom1").feature("r14").set("pos", new String[]{"0", "OPLTop-OPLThickness"}); model.component("comp1").geom("geom1").feature("r14").set("size", new String[]{"WaterSize", "OPLThickness"}); model.component("comp1").geom("geom1").create("r15", "Rectangle"); model.component("comp1").geom("geom1").feature("r15").label("ONL"); model.component("comp1").geom("geom1").feature("r15").set("pos", new String[]{"0", "ONLTop-ONLThickness"}); model.component("comp1").geom("geom1").feature("r15").set("size", new String[]{"WaterSize", "ONLThickness"}); model.component("comp1").geom("geom1").create("r16", "Rectangle"); model.component("comp1").geom("geom1").feature("r16").label("PR"); model.component("comp1").geom("geom1").feature("r16").set("pos", new String[]{"0", "PRTop-PRThickness"}); model.component("comp1").geom("geom1").feature("r16").set("size", new String[]{"WaterSize", "PRThickness"}); model.component("comp1").geom("geom1").create("r5", "Rectangle"); model.component("comp1").geom("geom1").feature("r5").label("RPEmela"); model.component("comp1").geom("geom1").feature("r5").set("pos", new String[]{"0", "RPEmelaTop-RPEmelaThickness"}); model.component("comp1").geom("geom1").feature("r5").set("size", new String[]{"WaterSize", "RPEmelaThickness"}); model.component("comp1").geom("geom1").create("r6", "Rectangle"); model.component("comp1").geom("geom1").feature("r6").label("RPEbasal"); model.component("comp1").geom("geom1").feature("r6") .set("pos", new String[]{"0", "RPEbasalTop-RPEbasalThickness"}); model.component("comp1").geom("geom1").feature("r6").set("size", new String[]{"WaterSize", "RPEbasalThickness"}); model.component("comp1").geom("geom1").create("r7", "Rectangle"); model.component("comp1").geom("geom1").feature("r7").label("PC"); model.component("comp1").geom("geom1").feature("r7").set("pos", new String[]{"0", "PCTop-PCThickness"}); model.component("comp1").geom("geom1").feature("r7").set("size", new String[]{"WaterSize", "PCThickness"}); model.component("comp1").geom("geom1").create("r8", "Rectangle"); model.component("comp1").geom("geom1").feature("r8").label("NPC"); model.component("comp1").geom("geom1").feature("r8").set("pos", new String[]{"0", "NPCTop-NPCThickness"}); model.component("comp1").geom("geom1").feature("r8").set("size", new String[]{"WaterSize", "NPCThickness"}); model.component("comp1").geom("geom1").create("r9", "Rectangle"); model.component("comp1").geom("geom1").feature("r9").label("Sclera"); model.component("comp1").geom("geom1").feature("r9").set("pos", new String[]{"0", "ScleraTop-ScleraThickness"}); model.component("comp1").geom("geom1").feature("r9").set("size", new String[]{"WaterSize", "ScleraThickness"}); model.component("comp1").geom("geom1").run(); model.component("comp1").geom("geom1").run("fin"); model.component("comp1").selection().create("sel1", "Explicit"); model.component("comp1").selection("sel1").geom("geom1", 1); model.component("comp1").selection("sel1").set(37); model.variable().create("var1"); model.variable("var1").set("PulseShape", "rectt((t-0[us])[1/s])"); model.variable("var1").set("BeamIrrad", "BeamPower/(pi*BeamRadius^2)"); model.variable("var1").set("RPEbasalIrrad", "exp(-alphaRPEmela*RPEmelaThickness)*RPEmelaIrrad"); model.variable("var1").set("RPEmelaIrrad", "BeamIrradIdeal"); model.variable("var1").set("PCIrrad", "exp(-alphaRPEbasal*RPEbasalThickness)*RPEbasalIrrad"); model.variable("var1").set("NPCIrrad", "exp(-alphaPC*PCThickness)*PCIrrad"); model.variable("var1").set("BeamIrradIdeal", "IdealPulseShape*BeamIrrad*IdealBeamProfile"); model.variable("var1").set("IdealPulseShape", "rectt(t[1/s])"); model.variable("var1").set("IdealBeamProfile", "rectr(r[1/m])"); model.view().create("view5", 2); model.view().create("view6", 3); model.component("comp1").material().create("mat19", "Common"); model.component("comp1").material().create("mat1", "Common"); model.material().create("mat5", "Common", ""); model.component("comp1").material().create("mat12", "Common"); model.component("comp1").material().create("mat14", "Common"); model.component("comp1").material().create("mat15", "Common"); model.component("comp1").material().create("mat16", "Common"); model.component("comp1").material().create("mat17", "Common"); model.component("comp1").material().create("mat18", "Common"); model.component("comp1").material().create("mat9", "Common"); model.component("comp1").material().create("mat11", "Common"); model.component("comp1").material().create("mat10", "Common"); model.component("comp1").material("mat19").selection().set(12); model.component("comp1").material("mat19").propertyGroup("def").func().create("eta", "Piecewise"); model.component("comp1").material("mat19").propertyGroup("def").func().create("Cp", "Piecewise"); model.component("comp1").material("mat19").propertyGroup("def").func().create("rho", "Analytic"); model.component("comp1").material("mat19").propertyGroup("def").func().create("k", "Piecewise"); model.component("comp1").material("mat19").propertyGroup("def").func().create("cs", "Analytic"); model.component("comp1").material("mat19").propertyGroup("def").func().create("an1", "Analytic"); model.component("comp1").material("mat19").propertyGroup("def").func().create("an2", "Analytic"); model.component("comp1").material("mat19").propertyGroup().create("RefractiveIndex", "Refractive index"); model.component("comp1").material("mat19").propertyGroup().create("NonlinearModel", "Nonlinear model"); model.component("comp1").material("mat19").propertyGroup().create("idealGas", "Ideal gas"); model.component("comp1").material("mat19").propertyGroup("idealGas").func().create("Cp", "Piecewise"); model.component("comp1").material("mat1").selection().set(12); model.component("comp1").material("mat1").propertyGroup("def").func().create("eta", "Piecewise"); model.component("comp1").material("mat1").propertyGroup("def").func().create("Cp", "Piecewise"); model.component("comp1").material("mat1").propertyGroup("def").func().create("rho", "Piecewise"); model.component("comp1").material("mat1").propertyGroup("def").func().create("k", "Piecewise"); model.component("comp1").material("mat1").propertyGroup("def").func().create("cs", "Interpolation"); model.material("mat5").propertyGroup().create("Enu", "Young's modulus and Poisson's ratio"); model.component("comp1").material("mat12").selection().set(2, 3, 4, 5, 6, 8, 9, 10, 11); model.component("comp1").material("mat14").selection().set(2, 3, 4, 5, 6, 8, 9, 10); model.component("comp1").material("mat15").selection().set(2, 3, 4, 5, 6, 8, 9); model.component("comp1").material("mat16").selection().set(2, 3, 4, 5, 6, 8); model.component("comp1").material("mat17").selection().set(2, 3, 4, 5, 6, 7); model.component("comp1").material("mat18").selection().set(2, 3, 4, 5, 6); model.component("comp1").material("mat9").selection().set(2, 3, 4, 5); model.component("comp1").material("mat11").selection().set(2, 3); model.component("comp1").material("mat10").selection().set(1); model.component("comp1").common().create("amth_ht", "AmbientProperties"); model.component("comp1").common().create("free1", "DeformingDomain"); model.component("comp1").common("free1").selection().set(12); model.component("comp1").physics().create("spf", "LaminarFlow", "geom1"); model.component("comp1").physics("spf").field("velocity").field("u_fluid"); model.component("comp1").physics("spf").field("velocity") .component(new String[]{"u_fluid", "v_fluid", "w_fluid"}); model.component("comp1").physics("spf").selection().set(12); model.component("comp1").physics("spf").create("open1", "OpenBoundary", 1); model.component("comp1").physics("spf").feature("open1").selection().set(25, 37); model.component("comp1").physics().create("solid", "SolidMechanics", "geom1"); model.component("comp1").physics("solid").field("displacement").field("u_solid"); model.component("comp1").physics("solid").field("displacement") .component(new String[]{"u_solid", "v_solid", "w_solid"}); model.component("comp1").physics("solid").create("lrb1", "LowReflectingBoundary", 1); model.component("comp1").physics("solid").feature("lrb1").selection() .set(2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36); model.component("comp1").physics().create("ht2", "HeatTransferInSolidsAndFluids", "geom1"); model.component("comp1").physics("ht2").identifier("ht2"); model.component("comp1").physics("ht2").feature("fluid1").selection().set(12); model.component("comp1").physics("ht2").create("hs3", "HeatSource", 2); model.component("comp1").physics("ht2").feature("hs3").selection().set(5); model.component("comp1").physics("ht2").create("hs4", "HeatSource", 2); model.component("comp1").physics("ht2").feature("hs4").selection().set(4); model.component("comp1").physics("ht2").create("hs5", "HeatSource", 2); model.component("comp1").physics("ht2").feature("hs5").selection().set(3); model.component("comp1").physics("ht2").create("hs6", "HeatSource", 2); model.component("comp1").physics("ht2").feature("hs6").selection().set(2); model.component("comp1").physics("ht2").create("temp1", "TemperatureBoundary", 1); model.component("comp1").physics("ht2").feature("temp1").selection() .set(2, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37); model.component("comp1").physics("ht2").create("hs7", "HeatSource", 2); model.component("comp1").physics("ht2").feature("hs7").selection().set(2); model.component("comp1").multiphysics().create("fsi1", "FluidStructureInteractionBC", 1); model.component("comp1").multiphysics("fsi1").selection().all(); model.component("comp1").multiphysics().create("nitf1", "NonIsothermalFlow", 2); model.component("comp1").multiphysics().create("te1", "ThermalExpansion", 2); model.component("comp1").multiphysics("te1").selection().all(); model.component("comp1").mesh("mesh1").autoMeshSize(4); model.result().table("tbl1").comments("Line Integration 1 (RefInd(T[1/K]))"); model.result().table("evl3").label("Evaluation 3D"); model.result().table("evl3").comments("Interactive 3D values"); model.result().table("evl2").label("Evaluation 2D"); model.result().table("evl2").comments("Interactive 2D values"); model.thermodynamics().label("Thermodynamics Package"); model.component("comp1").view("view1").axis().set("xmin", -109.80023193359375); model.component("comp1").view("view1").axis().set("xmax", 1040.34765625); model.component("comp1").view("view1").axis().set("ymin", -795.5698852539062); model.component("comp1").view("view1").axis().set("ymax", 361.56988525390625); model.view("view5").axis().set("xmin", -442.546875); model.view("view5").axis().set("xmax", 326.1282958984375); model.view("view5").axis().set("ymin", -429.1278076171875); model.view("view5").axis().set("ymax", 111.41340637207031); model.view("view5").axis().set("manualgrid", true); model.component("comp1").material("mat19").label("Air"); model.component("comp1").material("mat19").set("family", "air"); model.component("comp1").material("mat19").propertyGroup("def").func("eta").set("arg", "T"); model.component("comp1").material("mat19").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("mat19").propertyGroup("def").func("eta").set("argunit", "K"); model.component("comp1").material("mat19").propertyGroup("def").func("eta").set("fununit", "Pa*s"); model.component("comp1").material("mat19").propertyGroup("def").func("Cp").set("arg", "T"); model.component("comp1").material("mat19").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("mat19").propertyGroup("def").func("Cp").set("argunit", "K"); model.component("comp1").material("mat19").propertyGroup("def").func("Cp").set("fununit", "J/(kg*K)"); model.component("comp1").material("mat19").propertyGroup("def").func("rho") .set("expr", "pA*0.02897/R_const[K*mol/J]/T"); model.component("comp1").material("mat19").propertyGroup("def").func("rho").set("args", new String[]{"pA", "T"}); model.component("comp1").material("mat19").propertyGroup("def").func("rho").set("argunit", "Pa,K"); model.component("comp1").material("mat19").propertyGroup("def").func("rho").set("fununit", "kg/m^3"); model.component("comp1").material("mat19").propertyGroup("def").func("rho") .set("plotargs", new String[][]{{"pA", "0", "1"}, {"T", "0", "1"}}); model.component("comp1").material("mat19").propertyGroup("def").func("k").set("arg", "T"); model.component("comp1").material("mat19").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("mat19").propertyGroup("def").func("k").set("argunit", "K"); model.component("comp1").material("mat19").propertyGroup("def").func("k").set("fununit", "W/(m*K)"); model.component("comp1").material("mat19").propertyGroup("def").func("cs") .set("expr", "sqrt(1.4*R_const[K*mol/J]/0.02897*T)"); model.component("comp1").material("mat19").propertyGroup("def").func("cs").set("args", new String[]{"T"}); model.component("comp1").material("mat19").propertyGroup("def").func("cs").set("argunit", "K"); model.component("comp1").material("mat19").propertyGroup("def").func("cs").set("fununit", "m/s"); model.component("comp1").material("mat19").propertyGroup("def").func("cs") .set("plotargs", new String[][]{{"T", "273.15", "373.15"}}); model.component("comp1").material("mat19").propertyGroup("def").func("an1").set("funcname", "alpha_p"); model.component("comp1").material("mat19").propertyGroup("def").func("an1") .set("expr", "-1/rho(pA,T)*d(rho(pA,T),T)"); model.component("comp1").material("mat19").propertyGroup("def").func("an1").set("args", new String[]{"pA", "T"}); model.component("comp1").material("mat19").propertyGroup("def").func("an1").set("argunit", "Pa,K"); model.component("comp1").material("mat19").propertyGroup("def").func("an1").set("fununit", "1/K"); model.component("comp1").material("mat19").propertyGroup("def").func("an1") .set("plotargs", new String[][]{{"pA", "101325", "101325"}, {"T", "273.15", "373.15"}}); model.component("comp1").material("mat19").propertyGroup("def").func("an2").set("funcname", "muB"); model.component("comp1").material("mat19").propertyGroup("def").func("an2").set("expr", "0.6*eta(T)"); model.component("comp1").material("mat19").propertyGroup("def").func("an2").set("args", new String[]{"T"}); model.component("comp1").material("mat19").propertyGroup("def").func("an2").set("argunit", "K"); model.component("comp1").material("mat19").propertyGroup("def").func("an2").set("fununit", "Pa*s"); model.component("comp1").material("mat19").propertyGroup("def").func("an2") .set("plotargs", new String[][]{{"T", "200", "1600"}}); model.component("comp1").material("mat19").propertyGroup("def").set("thermalexpansioncoefficient", ""); model.component("comp1").material("mat19").propertyGroup("def").set("molarmass", ""); model.component("comp1").material("mat19").propertyGroup("def").set("bulkviscosity", ""); model.component("comp1").material("mat19").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("mat19").propertyGroup("def").set("molarmass", "0.02897[kg/mol]"); model.component("comp1").material("mat19").propertyGroup("def").set("bulkviscosity", "muB(T)"); model.component("comp1").material("mat19").propertyGroup("def") .set("relpermeability", new String[]{"1", "0", "0", "0", "1", "0", "0", "0", "1"}); model.component("comp1").material("mat19").propertyGroup("def") .set("relpermittivity", new String[]{"1", "0", "0", "0", "1", "0", "0", "0", "1"}); model.component("comp1").material("mat19").propertyGroup("def").set("dynamicviscosity", "eta(T)"); model.component("comp1").material("mat19").propertyGroup("def").set("ratioofspecificheat", "1.4"); model.component("comp1").material("mat19").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("mat19").propertyGroup("def").set("heatcapacity", "Cp(T)"); model.component("comp1").material("mat19").propertyGroup("def").set("density", "rho(pA,T)"); model.component("comp1").material("mat19").propertyGroup("def") .set("thermalconductivity", new String[]{"k(T)", "0", "0", "0", "k(T)", "0", "0", "0", "k(T)"}); model.component("comp1").material("mat19").propertyGroup("def").set("soundspeed", "cs(T)"); model.component("comp1").material("mat19").propertyGroup("def").addInput("temperature"); model.component("comp1").material("mat19").propertyGroup("def").addInput("pressure"); model.component("comp1").material("mat19").propertyGroup("RefractiveIndex").set("n", ""); model.component("comp1").material("mat19").propertyGroup("RefractiveIndex").set("ki", ""); model.component("comp1").material("mat19").propertyGroup("RefractiveIndex").set("n", ""); model.component("comp1").material("mat19").propertyGroup("RefractiveIndex").set("ki", ""); model.component("comp1").material("mat19").propertyGroup("RefractiveIndex").set("n", ""); model.component("comp1").material("mat19").propertyGroup("RefractiveIndex").set("ki", ""); model.component("comp1").material("mat19").propertyGroup("RefractiveIndex") .set("n", new String[]{"1", "0", "0", "0", "1", "0", "0", "0", "1"}); model.component("comp1").material("mat19").propertyGroup("RefractiveIndex") .set("ki", new String[]{"0", "0", "0", "0", "0", "0", "0", "0", "0"}); model.component("comp1").material("mat19").propertyGroup("NonlinearModel").set("BA", "(def.gamma+1)/2"); model.component("comp1").material("mat19").propertyGroup("idealGas").func("Cp").label("Piecewise 2"); model.component("comp1").material("mat19").propertyGroup("idealGas").func("Cp").set("arg", "T"); model.component("comp1").material("mat19").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("mat19").propertyGroup("idealGas").func("Cp").set("argunit", "K"); model.component("comp1").material("mat19").propertyGroup("idealGas").func("Cp").set("fununit", "J/(kg*K)"); model.component("comp1").material("mat19").propertyGroup("idealGas").set("Rs", "R_const/Mn"); model.component("comp1").material("mat19").propertyGroup("idealGas").set("heatcapacity", "Cp(T)"); model.component("comp1").material("mat19").propertyGroup("idealGas").set("ratioofspecificheat", "1.4"); model.component("comp1").material("mat19").propertyGroup("idealGas").set("molarmass", "0.02897"); model.component("comp1").material("mat19").propertyGroup("idealGas").addInput("temperature"); model.component("comp1").material("mat19").propertyGroup("idealGas").addInput("pressure"); model.component("comp1").material("mat1").label("Water, liquid"); model.component("comp1").material("mat1").set("family", "water"); model.component("comp1").material("mat1").propertyGroup("def").func("eta").set("arg", "T"); model.component("comp1").material("mat1").propertyGroup("def").func("eta") .set("pieces", new String[][]{{"273.15", "413.15", "1.3799566804-0.021224019151*T^1+1.3604562827E-4*T^2-4.6454090319E-7*T^3+8.9042735735E-10*T^4-9.0790692686E-13*T^5+3.8457331488E-16*T^6"}, {"413.15", "553.75", "0.00401235783-2.10746715E-5*T^1+3.85772275E-8*T^2-2.39730284E-11*T^3"}}); model.component("comp1").material("mat1").propertyGroup("def").func("Cp").set("arg", "T"); model.component("comp1").material("mat1").propertyGroup("def").func("Cp") .set("pieces", new String[][]{{"273.15", "553.75", "12010.1471-80.4072879*T^1+0.309866854*T^2-5.38186884E-4*T^3+3.62536437E-7*T^4"}}); model.component("comp1").material("mat1").propertyGroup("def").func("rho").set("arg", "T"); model.component("comp1").material("mat1").propertyGroup("def").func("rho") .set("pieces", new String[][]{{"273.15", "553.75", "838.466135+1.40050603*T^1-0.0030112376*T^2+3.71822313E-7*T^3"}}); model.component("comp1").material("mat1").propertyGroup("def").func("k").set("arg", "T"); model.component("comp1").material("mat1").propertyGroup("def").func("k") .set("pieces", new String[][]{{"273.15", "553.75", "-0.869083936+0.00894880345*T^1-1.58366345E-5*T^2+7.97543259E-9*T^3"}}); model.component("comp1").material("mat1").propertyGroup("def").func("cs") .set("table", new String[][]{{"273", "1403"}, {"278", "1427"}, {"283", "1447"}, {"293", "1481"}, {"303", "1507"}, {"313", "1526"}, {"323", "1541"}, {"333", "1552"}, {"343", "1555"}, {"353", "1555"}, {"363", "1550"}, {"373", "1543"}}); model.component("comp1").material("mat1").propertyGroup("def").func("cs").set("interp", "piecewisecubic"); model.component("comp1").material("mat1").propertyGroup("def").set("dynamicviscosity", "eta(T[1/K])[Pa*s]"); model.component("comp1").material("mat1").propertyGroup("def").set("ratioofspecificheat", "1.0"); model.component("comp1").material("mat1").propertyGroup("def") .set("electricconductivity", new String[]{"5.5e-6[S/m]", "0", "0", "0", "5.5e-6[S/m]", "0", "0", "0", "5.5e-6[S/m]"}); model.component("comp1").material("mat1").propertyGroup("def").set("heatcapacity", "Cp(T[1/K])[J/(kg*K)]"); model.component("comp1").material("mat1").propertyGroup("def").set("density", "rho(T[1/K])[kg/m^3]"); model.component("comp1").material("mat1").propertyGroup("def") .set("thermalconductivity", new String[]{"1*k(T[1/K])[W/(m*K)]", "0", "0", "0", "1*k(T[1/K])[W/(m*K)]", "0", "0", "0", "1*k(T[1/K])[W/(m*K)]"}); model.component("comp1").material("mat1").propertyGroup("def").set("soundspeed", "cs(T[1/K])[m/s]"); model.component("comp1").material("mat1").propertyGroup("def").addInput("temperature"); model.material("mat5").label("Borosilicate"); model.material("mat5").propertyGroup("def") .set("electricconductivity", new String[]{"0[S/m]", "0", "0", "0", "0[S/m]", "0", "0", "0", "0[S/m]"}); model.material("mat5").propertyGroup("def") .set("thermalexpansioncoefficient", new String[]{"3.3e-6[1/K]", "0", "0", "0", "3.3e-6[1/K]", "0", "0", "0", "3.3e-6[1/K]"}); model.material("mat5").propertyGroup("def").set("heatcapacity", "754[J/(kg*K)]"); model.material("mat5").propertyGroup("def") .set("relpermittivity", new String[]{"4.8", "0", "0", "0", "4.8", "0", "0", "0", "4.8"}); model.material("mat5").propertyGroup("def").set("density", "2230[kg/m^3]"); model.material("mat5").propertyGroup("def") .set("thermalconductivity", new String[]{"1.13[W/(m*K)]", "0", "0", "0", "1.13[W/(m*K)]", "0", "0", "0", "1.13[W/(m*K)]"}); model.material("mat5").propertyGroup("Enu").set("youngsmodulus", "63e9[Pa]"); model.material("mat5").propertyGroup("Enu").set("poissonsratio", "0.20"); model.component("comp1").material("mat12").label("NFL-GCL-IPL ModThExpansion"); model.component("comp1").material("mat12").propertyGroup("def") .set("thermalconductivity", new String[]{"0.45", "0", "0", "0", "0.45", "0", "0", "0", "0.45"}); model.component("comp1").material("mat12").propertyGroup("def").set("density", "993"); model.component("comp1").material("mat12").propertyGroup("def").set("heatcapacity", "3600"); model.component("comp1").material("mat12").propertyGroup("def") .set("thermalexpansioncoefficient", new String[]{"3.45e-4", "0", "0", "0", "3.45e-4", "0", "0", "0", "3.45e-4"}); model.component("comp1").material("mat12").propertyGroup("def").set("poissonsratio", "0.47"); model.component("comp1").material("mat12").propertyGroup("def").set("youngsmodulus", "1.3e3"); model.component("comp1").material("mat14").label("IPL ModThExpansion"); model.component("comp1").material("mat14").propertyGroup("def") .set("thermalconductivity", new String[]{"0.45", "0", "0", "0", "0.45", "0", "0", "0", "0.45"}); model.component("comp1").material("mat14").propertyGroup("def").set("density", "993"); model.component("comp1").material("mat14").propertyGroup("def").set("heatcapacity", "3600"); model.component("comp1").material("mat14").propertyGroup("def") .set("thermalexpansioncoefficient", new String[]{"3.45e-4", "0", "0", "0", "3.45e-4", "0", "0", "0", "3.45e-4"}); model.component("comp1").material("mat14").propertyGroup("def").set("poissonsratio", "0.47"); model.component("comp1").material("mat14").propertyGroup("def").set("youngsmodulus", "1e3"); model.component("comp1").material("mat15").label("INL ModThExpansion"); model.component("comp1").material("mat15").propertyGroup("def") .set("thermalconductivity", new String[]{"0.45", "0", "0", "0", "0.45", "0", "0", "0", "0.45"}); model.component("comp1").material("mat15").propertyGroup("def").set("density", "993"); model.component("comp1").material("mat15").propertyGroup("def").set("heatcapacity", "3600"); model.component("comp1").material("mat15").propertyGroup("def") .set("thermalexpansioncoefficient", new String[]{"3.45e-4", "0", "0", "0", "3.45e-4", "0", "0", "0", "3.45e-4"}); model.component("comp1").material("mat15").propertyGroup("def").set("poissonsratio", "0.47"); model.component("comp1").material("mat15").propertyGroup("def").set("youngsmodulus", "3e3"); model.component("comp1").material("mat16").label("OPL ModThExpansion"); model.component("comp1").material("mat16").propertyGroup("def") .set("thermalconductivity", new String[]{"0.45", "0", "0", "0", "0.45", "0", "0", "0", "0.45"}); model.component("comp1").material("mat16").propertyGroup("def").set("density", "993"); model.component("comp1").material("mat16").propertyGroup("def").set("heatcapacity", "3600"); model.component("comp1").material("mat16").propertyGroup("def") .set("thermalexpansioncoefficient", new String[]{"3.45e-4", "0", "0", "0", "3.45e-4", "0", "0", "0", "3.45e-4"}); return model; } public static Model run2(Model model) { model.component("comp1").material("mat16").propertyGroup("def").set("poissonsratio", "0.47"); model.component("comp1").material("mat16").propertyGroup("def").set("youngsmodulus", "8e3"); model.component("comp1").material("mat17").label("ONL ModThExpansion"); model.component("comp1").material("mat17").propertyGroup("def") .set("thermalconductivity", new String[]{"0.45", "0", "0", "0", "0.45", "0", "0", "0", "0.45"}); model.component("comp1").material("mat17").propertyGroup("def").set("density", "993"); model.component("comp1").material("mat17").propertyGroup("def").set("heatcapacity", "3600"); model.component("comp1").material("mat17").propertyGroup("def") .set("thermalexpansioncoefficient", new String[]{"3.45e-4", "0", "0", "0", "3.45e-4", "0", "0", "0", "3.45e-4"}); model.component("comp1").material("mat17").propertyGroup("def").set("poissonsratio", "0.47"); model.component("comp1").material("mat17").propertyGroup("def").set("youngsmodulus", "3e3"); model.component("comp1").material("mat18").label("PR ModThExpansion"); model.component("comp1").material("mat18").propertyGroup("def") .set("thermalconductivity", new String[]{"0.45", "0", "0", "0", "0.45", "0", "0", "0", "0.45"}); model.component("comp1").material("mat18").propertyGroup("def").set("density", "993"); model.component("comp1").material("mat18").propertyGroup("def").set("heatcapacity", "3600"); model.component("comp1").material("mat18").propertyGroup("def") .set("thermalexpansioncoefficient", new String[]{"3.45e-4", "0", "0", "0", "3.45e-4", "0", "0", "0", "3.45e-4"}); model.component("comp1").material("mat18").propertyGroup("def").set("poissonsratio", "0.47"); model.component("comp1").material("mat18").propertyGroup("def").set("youngsmodulus", "26e3"); model.component("comp1").material("mat9").label("RPE ModThExpansion"); model.component("comp1").material("mat9").propertyGroup("def") .set("thermalconductivity", new String[]{"0.45", "0", "0", "0", "0.45", "0", "0", "0", "0.45"}); model.component("comp1").material("mat9").propertyGroup("def").set("density", "993"); model.component("comp1").material("mat9").propertyGroup("def").set("heatcapacity", "3600"); model.component("comp1").material("mat9").propertyGroup("def") .set("thermalexpansioncoefficient", new String[]{"3.45e-4", "0", "0", "0", "3.45e-4", "0", "0", "0", "3.45e-4"}); model.component("comp1").material("mat9").propertyGroup("def").set("poissonsratio", "0.47"); model.component("comp1").material("mat9").propertyGroup("def").set("youngsmodulus", "5e3"); model.component("comp1").material("mat11").label("Choroid ModThExpansion"); model.component("comp1").material("mat11").propertyGroup("def") .set("thermalconductivity", new String[]{"0.45", "0", "0", "0", "0.45", "0", "0", "0", "0.45"}); model.component("comp1").material("mat11").propertyGroup("def").set("density", "993"); model.component("comp1").material("mat11").propertyGroup("def").set("heatcapacity", "3600"); model.component("comp1").material("mat11").propertyGroup("def") .set("thermalexpansioncoefficient", new String[]{"3.45e-4", "0", "0", "0", "3.45e-4", "0", "0", "0", "3.45e-4"}); model.component("comp1").material("mat11").propertyGroup("def").set("poissonsratio", "0.47"); model.component("comp1").material("mat11").propertyGroup("def").set("youngsmodulus", "30e3"); model.component("comp1").material("mat10").label("Sclera ModThExpansion"); model.component("comp1").material("mat10").propertyGroup("def") .set("thermalconductivity", new String[]{"0.45", "0", "0", "0", "0.45", "0", "0", "0", "0.45"}); model.component("comp1").material("mat10").propertyGroup("def").set("density", "993"); model.component("comp1").material("mat10").propertyGroup("def").set("heatcapacity", "3200"); model.component("comp1").material("mat10").propertyGroup("def") .set("thermalexpansioncoefficient", new String[]{"3.45e-4", "0", "0", "0", "3.45e-4", "0", "0", "0", "3.45e-4"}); model.component("comp1").material("mat10").propertyGroup("def").set("poissonsratio", "0.47"); model.component("comp1").material("mat10").propertyGroup("def").set("youngsmodulus", "30e3"); model.component("comp1").common("amth_ht").label("Ambient Thermal Properties (ht)"); model.component("comp1").common("amth_ht").set("Ish_amb", "0[W/m^2]"); model.common("cminpt").label("Common model inputs 1"); model.component("comp1").physics("spf").prop("AdvancedSettingProperty").set("UsePseudoTime", true); model.component("comp1").physics("spf").feature("fp1").set("editModelInputs", true); model.component("comp1").physics("spf").feature("fp1").set("m_pow", 1); model.component("comp1").physics("spf").feature("fp1").set("mu_inf", 0); model.component("comp1").physics("spf").feature("fp1").set("n_car", 0); model.component("comp1").physics("spf").feature("fp1").set("lam_car", 0); model.component("comp1").physics("spf").feature("fp1").set("m_p", 0); model.component("comp1").physics("spf").feature("fp1").set("tau_y", 0); model.component("comp1").physics("spf").feature("fp1").set("mu_p", 0); model.component("comp1").physics("spf").feature("fp1").set("m_pow_mat", "from_mat"); model.component("comp1").physics("spf").feature("fp1").set("mu_inf_mat", "from_mat"); model.component("comp1").physics("spf").feature("fp1").set("lam_car_mat", "from_mat"); model.component("comp1").physics("spf").feature("fp1").set("n_car_mat", "from_mat"); model.component("comp1").physics("spf").feature("fp1").set("tau_y_mat", "from_mat"); model.component("comp1").physics("spf").feature("fp1").set("mu_p_mat", "from_mat"); model.component("comp1").physics("solid").prop("ShapeProperty").set("order_displacement", 2); model.component("comp1").physics("solid").feature("lemm1") .set("minput_strainreferencetemperature_src", "userdef"); model.component("comp1").physics("ht2").prop("PhysicalModelProperty").set("Tref", "310.15[K]"); model.component("comp1").physics("ht2").feature("solid1").set("minput_strainreferencetemperature_src", "userdef"); model.component("comp1").physics("ht2").feature("solid1").set("minput_temperature_src", "root.comp1.T"); model.component("comp1").physics("ht2").feature("fluid1").set("fluidType", "gasLiquid"); model.component("comp1").physics("ht2").feature("fluid1").set("minput_temperature_src", "root.comp1.T"); model.component("comp1").physics("ht2").feature("init1").set("Tinit", "310.15[K]"); model.component("comp1").physics("ht2").feature("os1").featureInfo("warning") .set("$message", new String[]{"This_feature_is_obsolete_and_will_be_removed_in_future_versions._Consider_transferring_features_related_to_radiation_in_participating_media_into_a_new_instance_of_the_Radiation_in_Participating_Media_physics_interface,_coupled_with_the_Heat_Transfer_interface_via_the_Heat_Transfer_with_Radiation_in_Participating_Media_multiphysics_coupling_feature."}); model.component("comp1").physics("ht2").feature("hs3") .set("Q0", "alphaRPEmela*exp(-alphaRPEmela*(RPEmelaTop-z))*RPEmelaIrrad"); model.component("comp1").physics("ht2").feature("hs3").label("Heat Source - RPEmela"); model.component("comp1").physics("ht2").feature("hs4") .set("Q0", "alphaRPEbasal*exp(-alphaRPEbasal*(RPEbasalTop-z))*RPEbasalIrrad"); model.component("comp1").physics("ht2").feature("hs4").label("Heat Source - RPEbasal"); model.component("comp1").physics("ht2").feature("hs5").set("Q0", "alphaPC*exp(-alphaPC*(PCTop-z))*PCIrrad"); model.component("comp1").physics("ht2").feature("hs5").label("Heat Source - PC"); model.component("comp1").physics("ht2").feature("hs6").set("Q0", "alphaNPC*exp(-alphaNPC*(NPCTop-z))*NPCIrrad"); model.component("comp1").physics("ht2").feature("hs6").label("Heat Source - NPC"); model.component("comp1").physics("ht2").feature("temp1").set("T0", 310.15); model.component("comp1").physics("ht2").feature("hs7").set("Q0", "alphaPC*exp(-alphaPC*(NPCTop-z))*NPCIrrad"); model.component("comp1").physics("ht2").feature("hs7").active(false); model.component("comp1").physics("ht2").feature("hs7").label("Heat Source - NPC 1"); model.component("comp1").multiphysics("te1").set("IncludeMechanicalLosses", true); model.component("comp1").multiphysics("te1").set("minput_strainreferencetemperature_src", "userdef"); model.component("comp1").multiphysics("te1").set("minput_strainreferencetemperature", "310.15[K]"); model.component("comp1").multiphysics("te1").set("editModelInputs", true); model.component("comp1").multiphysics("te1").set("minput_temperature_src", "root.comp1.T"); model.study().create("std1"); model.study("std1").create("time", "Transient"); model.sol().create("sol1"); model.sol("sol1").study("std1"); model.sol("sol1").attach("std1"); model.sol("sol1").create("st1", "StudyStep"); model.sol("sol1").create("v1", "Variables"); model.sol("sol1").create("t1", "Time"); model.sol("sol1").feature("t1").create("fc1", "FullyCoupled"); model.sol("sol1").feature("t1").create("d1", "Direct"); model.sol("sol1").feature("t1").create("i1", "Iterative"); model.sol("sol1").feature("t1").feature("i1").create("mg1", "Multigrid"); model.sol("sol1").feature("t1").feature().remove("fcDef"); model.result().dataset().create("cpt2", "CutPoint2D"); model.result().create("pg6", "PlotGroup1D"); model.result("pg6").create("ptgr1", "PointGraph"); model.result("pg6").feature("ptgr1").set("expr", "T"); model.study("std1").feature("time").set("tlist", "range(0,AcqInterval, AcqDuration)"); model.sol("sol1").attach("std1"); model.sol("sol1").feature("st1").label("Compile Equations: Time Dependent"); model.sol("sol1").feature("v1").label("Dependent Variables 1.1"); model.sol("sol1").feature("v1").set("resscalemethod", "auto"); model.sol("sol1").feature("v1").set("clist", new String[]{"range(0,AcqInterval, AcqDuration)", "2.0E-4[s]"}); model.sol("sol1").feature("t1").label("Time-Dependent Solver 1.1"); model.sol("sol1").feature("t1").set("tlist", "range(0,AcqInterval, AcqDuration)"); model.sol("sol1").feature("t1").set("rtol", 0.005); model.sol("sol1").feature("t1").set("atolglobalvaluemethod", "manual"); model.sol("sol1").feature("t1").set("timemethod", "genalpha"); model.sol("sol1").feature("t1").set("estrat", "exclude"); model.sol("sol1").feature("t1").set("tstepsgenalpha", "strict"); model.sol("sol1").feature("t1").feature("dDef").label("Direct 2"); model.sol("sol1").feature("t1").feature("dDef").set("thresh", 0.1); model.sol("sol1").feature("t1").feature("dDef").set("ooc", false); model.sol("sol1").feature("t1").feature("dDef").set("rhob", 400); model.sol("sol1").feature("t1").feature("aDef").label("Advanced 1"); model.sol("sol1").feature("t1").feature("fc1").label("Fully Coupled 1.1"); model.sol("sol1").feature("t1").feature("fc1").set("linsolver", "d1"); model.sol("sol1").feature("t1").feature("fc1").set("maxiter", 5); model.sol("sol1").feature("t1").feature("fc1").set("damp", 0.9); model.sol("sol1").feature("t1").feature("fc1").set("jtech", "once"); model.sol("sol1").feature("t1").feature("d1").label("Direct 1.1"); model.sol("sol1").feature("t1").feature("d1").set("linsolver", "pardiso"); model.sol("sol1").feature("t1").feature("d1").set("ooc", false); model.sol("sol1").feature("t1").feature("d1").set("pardreorder", "ndmt"); model.sol("sol1").feature("t1").feature("d1").set("rhob", 400); model.sol("sol1").feature("t1").feature("i1").label("Iterative 1.1"); model.sol("sol1").feature("t1").feature("i1").feature("ilDef").label("Incomplete LU 1"); model.sol("sol1").feature("t1").feature("i1").feature("mg1").label("Multigrid 1.1"); model.sol("sol1").feature("t1").feature("i1").feature("mg1").feature("pr").label("Presmoother 1"); model.sol("sol1").feature("t1").feature("i1").feature("mg1").feature("pr").feature("soDef").label("SOR 1"); model.sol("sol1").feature("t1").feature("i1").feature("mg1").feature("po").label("Postsmoother 1"); model.sol("sol1").feature("t1").feature("i1").feature("mg1").feature("po").feature("soDef").label("SOR 1"); model.sol("sol1").feature("t1").feature("i1").feature("mg1").feature("cs").label("Coarse Solver 1"); model.sol("sol1").feature("t1").feature("i1").feature("mg1").feature("cs").feature("dDef").label("Direct 1"); model.sol("sol1").feature("t1").feature("i1").feature("mg1").feature("cs").feature("dDef").set("thresh", 0.1); model.sol("sol1").feature("t1").feature("i1").feature("mg1").feature("cs").feature("dDef").set("ooc", false); model.sol("sol1").runAll(); model.result().dataset("dset1").set("frametype", "material"); model.result().dataset("cpt2").label("RPETop"); model.result().dataset("cpt2").set("pointx", 0); model.result().dataset("cpt2").set("pointy", "RPEmelaTop-0.0001"); model.result().dataset("cpt2").set("pointvar", "cpt1n"); model.result("pg6").label("Temperature profile"); model.result("pg6").set("xlabel", "Time (ms)"); model.result("pg6").set("ylabel", "Temperature (degC)"); model.result("pg6").set("xlabelactive", false); model.result("pg6").set("ylabelactive", false); model.result("pg6").feature("ptgr1").label("RPETop_Center Temperature"); model.result("pg6").feature("ptgr1").set("data", "cpt2"); model.result("pg6").feature("ptgr1").set("looplevelinput", new String[]{"all"}); model.result("pg6").feature("ptgr1").set("unit", "degC"); model.result("pg6").feature("ptgr1") .set("const", new String[][]{{"solid.refpntr", "0", "Reference point for moment computation, r coordinate"}, {"solid.refpntphi", "0", "Reference point for moment computation, phi coordinate"}, {"solid.refpntz", "0", "Reference point for moment computation, z coordinate"}}); model.result("pg6").feature("ptgr1").set("xdataparamunit", "ms"); return model; } public static void main(String[] args) { Model model = run(); run2(model); } }