/* * Java source code for thermo-mechanical modeling of the tissue phantom. * The model is used to validate the stiffness matrix methods * as described in Section "Stiffness matrix method (SMM) validation using FEM simulations" 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 3 2021, 11:25 by COMSOL 5.6.0.401. */ public class FullTissuePhantom_IdealBeam_v01 { public static Model run() { Model model = ModelUtil.create("Model"); model .modelPath("/Volumes/Rooster_Ext/davidveysset/COMSOL/Models/Tissue Phantoms/PDMS Tissue Phantom/PDMS Layers Model/TP7 Ideal/Dataset for publication"); model.label("FullTissuePhantom_IdealBeam_v01.java.mph"); model.comments("untitled\n\n"); model.param().set("SampleSize", "2000[um]"); model.param().set("BeamPower", "260[mW]"); model.param().set("PulseDuration", "1[ms]"); model.param().set("RoomTemp", "20[degC]"); model.param().set("GlassThickness", "165[um]"); model.param().set("AcqInterval", "100[us]"); model.param().set("AcqDuration", "200[ms]"); model.param().set("AbsCoeff", "20300[1/m]"); model.param().set("AirThickness", "500[um]"); model.param().set("L1Thickness", "30[um]"); model.param().set("L2Thickness", "30[um]"); model.param().set("L3Thickness", "15[um]"); model.param().set("L4Thickness", "330[um]"); model.param().set("L1Top", "0"); model.param().set("L2Top", "L1Top-L1Thickness"); model.param().set("L3Top", "L2Top-L2Thickness"); model.param().set("L4Top", "L3Top-L3Thickness"); model.param().set("GlassTop", "L4Top-L4Thickness"); model.param().set("AirTop", "AirThickness"); model.param().set("BeamRadius", "200[um]"); model.param().set("TransmissionLayer1", "0.5"); model.component().create("comp1", true); model.component("comp1").geom().create("geom1", 2); model.component("comp1").curvedInterior(false); 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("Air"); model.component("comp1").geom("geom1").feature("r3").set("size", new String[]{"SampleSize", "AirThickness"}); model.component("comp1").geom("geom1").create("r4", "Rectangle"); model.component("comp1").geom("geom1").feature("r4").label("L1-Scattering"); model.component("comp1").geom("geom1").feature("r4").set("pos", new String[]{"0", "L1Top-L1Thickness"}); model.component("comp1").geom("geom1").feature("r4").set("size", new String[]{"SampleSize", "L1Thickness"}); model.component("comp1").geom("geom1").create("r5", "Rectangle"); model.component("comp1").geom("geom1").feature("r5").label("L2"); model.component("comp1").geom("geom1").feature("r5").set("pos", new String[]{"0", "L2Top-L2Thickness"}); model.component("comp1").geom("geom1").feature("r5").set("size", new String[]{"SampleSize", "L2Thickness"}); model.component("comp1").geom("geom1").create("r6", "Rectangle"); model.component("comp1").geom("geom1").feature("r6").label("L3-Absorbing"); model.component("comp1").geom("geom1").feature("r6").set("pos", new String[]{"0", "L3Top-L3Thickness"}); model.component("comp1").geom("geom1").feature("r6").set("size", new String[]{"SampleSize", "L3Thickness"}); model.component("comp1").geom("geom1").create("r7", "Rectangle"); model.component("comp1").geom("geom1").feature("r7").label("L4"); model.component("comp1").geom("geom1").feature("r7").set("pos", new String[]{"0", "L4Top-L4Thickness"}); model.component("comp1").geom("geom1").feature("r7").set("size", new String[]{"SampleSize", "L4Thickness"}); model.component("comp1").geom("geom1").create("r9", "Rectangle"); model.component("comp1").geom("geom1").feature("r9").label("GlassSlide"); model.component("comp1").geom("geom1").feature("r9").set("pos", new String[]{"0", "GlassTop-GlassThickness"}); model.component("comp1").geom("geom1").feature("r9").set("size", new String[]{"SampleSize", "GlassThickness"}); model.component("comp1").geom("geom1").run(); model.component("comp1").selection().create("sel1", "Explicit"); model.component("comp1").selection("sel1").geom("geom1", 1); model.variable().create("var1"); model.variable("var1").set("IdealPulseShape", "rectt((t)[1/s])"); model.variable("var1").set("BeamIrrad", "BeamPower/(pi*BeamRadius^2)*TransmissionLayer1"); model.variable("var1").set("IdealBeamProfile", "rectr(r[1/m])"); model.variable("var1").set("IdealBeamIrrad", "IdealPulseShape*BeamIrrad*IdealBeamProfile"); model.view().create("view5", 2); model.view().create("view6", 3); model.material().create("mat5", "Common", ""); model.component("comp1").material().create("mat6", "Common"); model.component("comp1").material().create("mat8", "Common"); model.component("comp1").material().create("mat9", "Common"); model.material("mat5").propertyGroup().create("Enu", "Young's modulus and Poisson's ratio"); model.component("comp1").material("mat6").selection().set(1); model.component("comp1").material("mat6").propertyGroup().create("Enu", "Young's modulus and Poisson's ratio"); model.component("comp1").material("mat8").selection().set(2, 3, 4, 5); model.component("comp1").material("mat8").propertyGroup().create("Enu", "Young's modulus and Poisson's ratio"); model.component("comp1").material("mat9").selection().set(6); model.component("comp1").material("mat9").propertyGroup("def").func().create("eta", "Piecewise"); model.component("comp1").material("mat9").propertyGroup("def").func().create("Cp", "Piecewise"); model.component("comp1").material("mat9").propertyGroup("def").func().create("rho", "Analytic"); model.component("comp1").material("mat9").propertyGroup("def").func().create("k", "Piecewise"); model.component("comp1").material("mat9").propertyGroup("def").func().create("cs", "Analytic"); model.component("comp1").material("mat9").propertyGroup("def").func().create("an1", "Analytic"); model.component("comp1").material("mat9").propertyGroup("def").func().create("an2", "Analytic"); model.component("comp1").material("mat9").propertyGroup().create("RefractiveIndex", "Refractive index"); model.component("comp1").material("mat9").propertyGroup().create("NonlinearModel", "Nonlinear model"); model.component("comp1").common().create("amth_ht", "AmbientProperties"); model.component("comp1").common().create("free1", "DeformingDomain"); model.component("comp1").common("free1").selection().set(6); model.component("comp1").physics().create("solid", "SolidMechanics", "geom1"); model.component("comp1").physics("solid").selection().set(1, 2, 3, 4, 5); model.component("comp1").physics("solid").create("lrb1", "LowReflectingBoundary", 1); model.component("comp1").physics("solid").feature("lrb1").selection().set(14, 15, 16, 17, 18); model.component("comp1").physics().create("ht", "HeatTransfer", "geom1"); model.component("comp1").physics("ht").setGroupBySpaceDimension(true); model.component("comp1").physics("ht").create("hs1", "HeatSource", 2); model.component("comp1").physics("ht").feature("hs1").selection().set(3); model.component("comp1").physics("ht").create("bhs1", "BoundaryHeatSource", 1); model.component("comp1").physics("ht").feature("bhs1").selection().set(8); model.component("comp1").physics("ht").create("ge1", "GlobalEquations", -1); model.component("comp1").physics("ht").create("temp1", "TemperatureBoundary", 1); model.component("comp1").physics("ht").feature("temp1").selection().set(13, 14, 15, 16, 17, 18, 19); model.component("comp1").multiphysics().create("te1", "ThermalExpansion", 2); model.component("comp1").multiphysics("te1").selection().all(); model.component("comp1").mesh("mesh1").autoMeshSize(1); model.component("comp1").probe().create("pdom1", "DomainPoint"); model.thermodynamics().label("Thermodynamics Package"); model.component("comp1").view("view1").set("showmaterial", true); model.component("comp1").view("view1").axis().set("xmin", -597.51611328125); model.component("comp1").view("view1").axis().set("xmax", 675.8519287109375); model.component("comp1").view("view1").axis().set("ymin", -674.7786254882812); model.component("comp1").view("view1").axis().set("ymax", 606.3302612304688); model.view("view5").axis().set("xmin", -604.835205078125); model.view("view5").axis().set("xmax", 605.1168212890625); model.view("view5").axis().set("ymin", -359.79486083984375); model.view("view5").axis().set("ymax", 653.5201416015625); model.view("view5").axis().set("manualgrid", true); 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("mat6").label("Borosilicate"); model.component("comp1").material("mat6").set("family", "glass"); model.component("comp1").material("mat6").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("mat6").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.component("comp1").material("mat6").propertyGroup("def").set("heatcapacity", "754[J/(kg*K)]"); model.component("comp1").material("mat6").propertyGroup("def") .set("relpermittivity", new String[]{"4.8", "0", "0", "0", "4.8", "0", "0", "0", "4.8"}); model.component("comp1").material("mat6").propertyGroup("def").set("density", "2230[kg/m^3]"); model.component("comp1").material("mat6").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.component("comp1").material("mat6").propertyGroup("Enu").set("youngsmodulus", "63e9[Pa]"); model.component("comp1").material("mat6").propertyGroup("Enu").set("poissonsratio", "0.20"); model.component("comp1").material("mat8").label("PDMS - Polydimethylsiloxane RT"); model.component("comp1").material("mat8").set("family", "custom"); model.component("comp1").material("mat8") .set("customspecular", new double[]{0.9803921580314636, 0.686274528503418, 0.48235294222831726}); model.component("comp1").material("mat8").set("diffuse", "custom"); model.component("comp1").material("mat8") .set("customdiffuse", new double[]{1, 0.7647058963775635, 0.43921568989753723}); model.component("comp1").material("mat8").propertyGroup("def") .set("thermalexpansioncoefficient", new String[]{"286e-6[1/K]", "0", "0", "0", "286e-6[1/K]", "0", "0", "0", "286e-6[1/K]"}); model.component("comp1").material("mat8").propertyGroup("def").set("heatcapacity", "1600[J/(kg*K)]"); model.component("comp1").material("mat8").propertyGroup("def") .set("relpermittivity", new String[]{"2.75", "0", "0", "0", "2.75", "0", "0", "0", "2.75"}); model.component("comp1").material("mat8").propertyGroup("def").set("density", "970[kg/m^3]"); model.component("comp1").material("mat8").propertyGroup("def") .set("thermalconductivity", new String[]{"0.1754[W/(m*K)]", "0", "0", "0", "0.1754[W/(m*K)]", "0", "0", "0", "0.1754[W/(m*K)]"}); model.component("comp1").material("mat8").propertyGroup("Enu").set("youngsmodulus", "1.3e6"); model.component("comp1").material("mat8").propertyGroup("Enu").set("poissonsratio", "0.49"); model.component("comp1").material("mat9").label("Air Simple"); model.component("comp1").material("mat9").set("family", "air"); model.component("comp1").material("mat9").propertyGroup("def").func("eta").set("arg", "T"); model.component("comp1").material("mat9").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("mat9").propertyGroup("def").func("eta").set("argunit", "K"); model.component("comp1").material("mat9").propertyGroup("def").func("eta").set("fununit", "Pa*s"); model.component("comp1").material("mat9").propertyGroup("def").func("Cp").set("arg", "T"); model.component("comp1").material("mat9").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("mat9").propertyGroup("def").func("Cp").set("argunit", "K"); model.component("comp1").material("mat9").propertyGroup("def").func("Cp").set("fununit", "J/(kg*K)"); model.component("comp1").material("mat9").propertyGroup("def").func("rho") .set("expr", "pA*0.02897/R_const[K*mol/J]/T"); model.component("comp1").material("mat9").propertyGroup("def").func("rho").set("args", new String[]{"pA", "T"}); model.component("comp1").material("mat9").propertyGroup("def").func("rho").set("dermethod", "manual"); model.component("comp1").material("mat9").propertyGroup("def").func("rho") .set("argders", new String[][]{{"pA", "d(pA*0.02897/R_const/T,pA)"}, {"T", "d(pA*0.02897/R_const/T,T)"}}); model.component("comp1").material("mat9").propertyGroup("def").func("rho").set("argunit", "Pa,K"); model.component("comp1").material("mat9").propertyGroup("def").func("rho").set("fununit", "kg/m^3"); model.component("comp1").material("mat9").propertyGroup("def").func("rho") .set("plotargs", new String[][]{{"pA", "0", "1"}, {"T", "0", "1"}}); model.component("comp1").material("mat9").propertyGroup("def").func("k").set("arg", "T"); model.component("comp1").material("mat9").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("mat9").propertyGroup("def").func("k").set("argunit", "K"); model.component("comp1").material("mat9").propertyGroup("def").func("k").set("fununit", "W/(m*K)"); model.component("comp1").material("mat9").propertyGroup("def").func("cs") .set("expr", "sqrt(1.4*R_const[K*mol/J]/0.02897*T)"); model.component("comp1").material("mat9").propertyGroup("def").func("cs").set("args", new String[]{"T"}); model.component("comp1").material("mat9").propertyGroup("def").func("cs").set("dermethod", "manual"); model.component("comp1").material("mat9").propertyGroup("def").func("cs").set("argunit", "K"); model.component("comp1").material("mat9").propertyGroup("def").func("cs").set("fununit", "m/s"); model.component("comp1").material("mat9").propertyGroup("def").func("cs") .set("plotargs", new String[][]{{"T", "273.15", "373.15"}}); model.component("comp1").material("mat9").propertyGroup("def").func("an1").set("funcname", "alpha_p"); model.component("comp1").material("mat9").propertyGroup("def").func("an1") .set("expr", "-1/rho(pA,T)*d(rho(pA,T),T)"); model.component("comp1").material("mat9").propertyGroup("def").func("an1").set("args", new String[]{"pA", "T"}); model.component("comp1").material("mat9").propertyGroup("def").func("an1").set("argunit", "Pa,K"); model.component("comp1").material("mat9").propertyGroup("def").func("an1").set("fununit", "1/K"); model.component("comp1").material("mat9").propertyGroup("def").func("an1") .set("plotargs", new String[][]{{"pA", "101325", "101325"}, {"T", "273.15", "373.15"}}); model.component("comp1").material("mat9").propertyGroup("def").func("an2").set("funcname", "muB"); model.component("comp1").material("mat9").propertyGroup("def").func("an2").set("expr", "0.6*eta(T)"); model.component("comp1").material("mat9").propertyGroup("def").func("an2").set("args", new String[]{"T"}); model.component("comp1").material("mat9").propertyGroup("def").func("an2").set("argunit", "K"); model.component("comp1").material("mat9").propertyGroup("def").func("an2").set("fununit", "Pa*s"); model.component("comp1").material("mat9").propertyGroup("def").func("an2") .set("plotargs", new String[][]{{"T", "200", "1600"}}); model.component("comp1").material("mat9").propertyGroup("def").set("thermalexpansioncoefficient", ""); model.component("comp1").material("mat9").propertyGroup("def").set("molarmass", ""); model.component("comp1").material("mat9").propertyGroup("def").set("bulkviscosity", ""); model.component("comp1").material("mat9").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("mat9").propertyGroup("def").set("molarmass", "0.02897[kg/mol]"); model.component("comp1").material("mat9").propertyGroup("def").set("bulkviscosity", "muB(T)"); model.component("comp1").material("mat9").propertyGroup("def") .set("relpermeability", new String[]{"1", "0", "0", "0", "1", "0", "0", "0", "1"}); model.component("comp1").material("mat9").propertyGroup("def") .set("relpermittivity", new String[]{"1", "0", "0", "0", "1", "0", "0", "0", "1"}); model.component("comp1").material("mat9").propertyGroup("def").set("dynamicviscosity", "eta(T)"); model.component("comp1").material("mat9").propertyGroup("def").set("ratioofspecificheat", "1.4"); model.component("comp1").material("mat9").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("mat9").propertyGroup("def").set("heatcapacity", "1006"); model.component("comp1").material("mat9").propertyGroup("def").set("density", "1.204"); model.component("comp1").material("mat9").propertyGroup("def") .set("thermalconductivity", new String[]{"25.87e-3", "0", "0", "0", "25.87e-3", "0", "0", "0", "25.87e-3"}); model.component("comp1").material("mat9").propertyGroup("def").set("soundspeed", "cs(T)"); model.component("comp1").material("mat9").propertyGroup("def").addInput("temperature"); model.component("comp1").material("mat9").propertyGroup("def").addInput("pressure"); model.component("comp1").material("mat9").propertyGroup("RefractiveIndex").set("n", ""); model.component("comp1").material("mat9").propertyGroup("RefractiveIndex").set("ki", ""); model.component("comp1").material("mat9").propertyGroup("RefractiveIndex").set("n", ""); model.component("comp1").material("mat9").propertyGroup("RefractiveIndex").set("ki", ""); model.component("comp1").material("mat9").propertyGroup("RefractiveIndex").set("n", ""); model.component("comp1").material("mat9").propertyGroup("RefractiveIndex").set("ki", ""); model.component("comp1").material("mat9").propertyGroup("RefractiveIndex") .set("n", new String[]{"1", "0", "0", "0", "1", "0", "0", "0", "1"}); model.component("comp1").material("mat9").propertyGroup("RefractiveIndex") .set("ki", new String[]{"0", "0", "0", "0", "0", "0", "0", "0", "0"}); model.component("comp1").material("mat9").propertyGroup("NonlinearModel").set("BA", "(def.gamma+1)/2"); 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("solid").prop("StructuralTransientBehavior") .set("StructuralTransientBehavior", "Quasistatic"); model.component("comp1").physics("solid").feature("lemm1") .set("minput_strainreferencetemperature_src", "userdef"); model.component("comp1").physics("ht").feature("solid1").set("editModelInputs", true); model.component("comp1").physics("ht").feature("hs1") .set("Q0", "alphaRPE*exp(-alphaRPE*(P3LayerTop-z))*IdealBeamIrrad"); model.component("comp1").physics("ht").feature("hs1").active(false); model.component("comp1").physics("ht").feature("hs1").label("Heat Source - RPE"); model.component("comp1").physics("ht").feature("bhs1").set("Qb", "IdealBeamIrrad*(1-exp(-AbsCoeff*L3Thickness))"); model.component("comp1").multiphysics("te1").set("IncludeTed", false); model.component("comp1").multiphysics("te1").set("minput_strainreferencetemperature_src", "userdef"); model.component("comp1").probe("pdom1").active(false); model.component("comp1").probe("pdom1").label("Domain Point Probe 1 Displacement"); model.component("comp1").probe("pdom1").set("coords2", new int[]{0, -150}); model.component("comp1").probe("pdom1").set("bndsnap2", true); model.component("comp1").probe("pdom1").feature("ppb1").set("descr", "Total displacement"); model.component("comp1").probe("pdom1").feature("ppb1").set("window", "window2"); 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("mir1", "Mirror2D"); model.result().dataset().create("rev1", "Revolve2D"); model.result().dataset().create("grid1", "Grid2D"); model.result().dataset().create("cpl1", "CutPlane"); model.result().dataset().create("cpt1", "CutPoint2D"); model.result().dataset().create("cpt2", "CutPoint2D"); model.result().create("pg3", "PlotGroup2D"); model.result().create("pg14", "PlotGroup1D"); model.result().create("pg15", "PlotGroup1D"); model.result("pg3").create("surf1", "Surface"); model.result("pg3").feature("surf1").set("expr", "T"); model.result("pg14").create("ptgr1", "PointGraph"); model.result("pg14").feature("ptgr1").set("expr", "T"); model.result("pg15").create("ptgr1", "PointGraph"); 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)", "1.9999999999999998E-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("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("mir1").set("genpoints", new String[][]{{"0.0", "0.0"}, {"0.0", "1.0"}}); model.result().dataset("grid1").set("source", "data"); model.result().dataset("grid1").set("parmax1", 200); model.result().dataset("grid1").set("parmax2", -155); model.result().dataset("cpl1").set("planetype", "general"); model.result().dataset("cpl1") .set("genpoints", new double[][]{{0, 0, -77.5}, {0.8000000000000002, -0.6000000000000001, -77.5}, {0.308696, 0.41159700000000005, -76.6425}}); model.result().dataset("cpt1").label("Top Layer Top"); model.result().dataset("cpt1").set("pointx", 0); model.result().dataset("cpt1").set("pointy", "L1Top-0.01"); model.result().dataset("cpt2").label("Top Abs Laye"); model.result().dataset("cpt2").set("pointx", 0); model.result().dataset("cpt2").set("pointy", "L3Top"); model.result().dataset("cpt2").set("pointvar", "cpt1n"); model.result("pg3").label("Temperature Map"); model.result("pg3").set("looplevel", new int[]{101}); model.result("pg3").set("titletype", "none"); model.result("pg3").feature("surf1").label("Temperature Surface Plot"); model.result("pg3").feature("surf1").set("data", "mir1"); model.result("pg3").feature("surf1").set("looplevel", new int[]{21}); model.result("pg3").feature("surf1").set("unit", "degC"); model.result("pg3").feature("surf1") .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("pg3").feature("surf1").set("titletype", "manual"); model.result("pg3").feature("surf1").set("title", "Temperature Surface Plot (degC)"); model.result("pg3").feature("surf1").set("smooth", "internal"); model.result("pg3").feature("surf1").set("resolution", "normal"); model.result("pg14").label("Temperature Abs Layer Top"); model.result("pg14").set("xlabel", "Time (s)"); model.result("pg14").set("ylabel", "Temperature (degC)"); model.result("pg14").set("xlabelactive", false); model.result("pg14").set("ylabelactive", false); model.result("pg14").feature("ptgr1").set("data", "cpt2"); model.result("pg14").feature("ptgr1").set("looplevelinput", new String[]{"all"}); model.result("pg14").feature("ptgr1").set("unit", "degC"); model.result("pg14").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("pg15").label("Displacements Top TP"); model.result("pg15").set("data", "cpt1"); model.result("pg15").set("xlabel", "Time (s)"); model.result("pg15").set("ylabel", "Displacement magnitude (nm)"); model.result("pg15").set("xlabelactive", false); model.result("pg15").set("ylabelactive", false); model.result("pg15").feature("ptgr1").set("data", "cpt1"); model.result("pg15").feature("ptgr1").set("looplevelinput", new String[]{"all"}); model.result("pg15").feature("ptgr1").set("unit", "nm"); model.result("pg15").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"}}); return model; } public static void main(String[] args) { run(); } }