Commit df76563e authored by Asutosh Padhy's avatar Asutosh Padhy
Browse files

Lagoudas file created

parent bd1ba7a1
Loading
Loading
Loading
Loading
+12.3 KiB (15.2 KiB)

File changed.

No diff preview for this file type.

+294 −6
Original line number Diff line number Diff line
@@ -8,8 +8,7 @@ public class Lag {

          model.modelPath("/home/apadhy/projects/PhD/COMSOL");
          model.label("Lag.mph");
// Global Definitions
// Parameter block
// Global Definitions block

          model.param().set("t1", "0.01 [s]");
          model.param().set("t2", "0.19 [s]");
@@ -18,16 +17,15 @@ public class Lag {
          model.param().set("t5", "0.56[s]");
          model.param().set("dt", "0.001 [s]");

          model.param().set("T", "297[K]", "Applied Temperature");
          model.param().set("T_ref", "297[K]", "Applied Temperature");
          model.param().set("para", "0", "Continuation paramater");
          model.param().set("width", "15.1[mm]", "Length");
          model.param().set("height", "1.67[mm]", "width");
          model.param().set("alpha", "0");
          model.param().set("d", "0.034[mm]", "thickness");

          model.param().set("maxdisp", "0.85 [mm]", "Strain dependent");

// Function creation
// Function Piecewise

          model.func().create("pw1", "Piecewise");
          model.func("pw1").label("pw1");
@@ -42,11 +40,301 @@ public class Lag {
              {"t3", "t4", "maxdisp/(t3-t4)*(t-t4)"},
              {"t4", "t5", "1e-8"}});

// Function Random normal distribution
          
          model.func().create("rn1", "Random");
          model.func("rn1").set("nargs", 2);
          model.func("rn1").set("type", "normal");
          model.func("rn1").set("funcname", "rn");

          
// Component block
          model.component().create("comp1", true);
          model.component("comp1").geom().create("geom1", 2);
 
//Geometry block
          model.component("comp1").geom("geom1").lengthUnit("mm");
          model.component("comp1").geom("geom1").create("r1", "Rectangle");
          model.component("comp1").geom("geom1").feature("r1").set("size", new String[]{"width", "height"});
          model.component("comp1").geom("geom1").feature("fin").label("Form Union1");
          model.component("comp1").geom("geom1").feature("fin").set("action", "union");
          model.component("comp1").geom("geom1").run();
          // model.component("comp1").geom("geom1").run("fin");

          
// Definitions          
          model.component("comp1").cpl().create("aveop1", "Average");        
          model.component("comp1").cpl("aveop1").selection().set(1);
           
          
          model.component("comp1").coordSystem("sys1").setIndex("coord", "t1", 0, 0);
          model.component("comp1").coordSystem("sys1").setIndex("coord", "n", 0, 1);
          model.component("comp1").coordSystem("sys1").setIndex("coord", "to", 0, 2);
          
          model.component("comp1").view("view1");
          model.component("comp1").view("view1").set("showgrid", true);
          model.component("comp1").view("view1").set("rendermesh", true);
          model.component("comp1").view("view1").set("showunits", true);
          model.component("comp1").view("view1").set("showselection", true);
          

          
		  model.component("comp1").cpl().create("aveop2", "Average");
		  model.component("comp1").cpl("aveop2").selection().geom("geom1", 1);
		  model.component("comp1").cpl("aveop2").selection().set(4);
		  model.component("comp1").cpl("aveop2").label("AverageBoundary");
		 
          
 //Material block Austenite
          model.component("comp1").material().create("mat1", "Common");        
          model.component("comp1").material("mat1").label("Austenite");
          model.component("comp1").material("mat1").propertyGroup("def").set("poissonsratio", "0.33");
          model.component("comp1").material("mat1").propertyGroup("def").set("density", "6500");
          model.component("comp1").material("mat1").propertyGroup("def").set("youngsmodulus", "41.2e9");
          model.component("comp1").material("mat1").propertyGroup("def").set("heatcapacity", "400");
          model.component("comp1").material("mat1").propertyGroup("def").set("thermalconductivity", "18.00");
          
//Material block Martensite    
          model.component("comp1").material().create("mat2", "Common");
          model.component("comp1").material("mat2").label("Martensite");
          model.component("comp1").material("mat2").propertyGroup("def").set("poissonsratio", "0.33");
          model.component("comp1").material("mat2").propertyGroup("def").set("density", "6500");
          model.component("comp1").material("mat2").propertyGroup("def").set("youngsmodulus", "32.9e9");
          model.component("comp1").material("mat2").propertyGroup("def").set("heatcapacity", "400");
          model.component("comp1").material("mat2").propertyGroup("def").set("thermalconductivity","8.6");
          model.component("comp1").material("mat2").selection().all();
                
// Heat transfer
          model.component("comp1").physics().create("ht", "HeatTransfer", "geom1");
          model.component("comp1").physics("ht").selection().set(1);

          model.component("comp1").physics("ht").prop("EquationForm").setIndex("form", "Automatic", 0);
          
          model.component("comp1").physics("ht").prop("PhysicalModelProperty").set("dz", "d"); 
          model.component("comp1").physics("ht").prop("PhysicalModelProperty").set("Tref", "T_ref");
          model.component("comp1").physics("ht").prop("PhysicalModelProperty").set("HeatTransferInAlloys", true);        

          // sma1
          model.component("comp1").physics("ht").create("sma1", "ShapeMemoryAlloy", 2);
          model.component("comp1").physics("ht").feature("sma1").selection().set(1);
          model.component("comp1").physics("ht").feature("sma1").set("EffectiveConductivity", "PowerLaw");

          // temp1
          model.component("comp1").physics("ht").create("temp1", "TemperatureBoundary", 1);
          model.component("comp1").physics("ht").feature("temp1").selection().set(1, 4);
          model.component("comp1").physics("ht").feature("temp1").set("T0", "T_ref");
                     
//          //init1
          model.component("comp1").physics("ht").feature("init1").set("Tinit", "T_ref");       
          
          // hf1
          model.component("comp1").physics("ht").create("hf1", "HeatFluxBoundary", 1);
          
          model.component("comp1").physics("ht").feature("hf1").selection().set(2, 3);
          model.component("comp1").physics("ht").feature("hf1").set("materialType", "solid");
          model.component("comp1").physics("ht").feature("hf1").set("HeatFluxType", "ConvectiveHeatFlux");
          model.component("comp1").physics("ht").feature("hf1").set("h", 40);
          model.component("comp1").physics("ht").feature("hf1").set("Text", "T_ref");

          //ophf1
          model.component("comp1").physics("ht").create("ophf1", "OutOfPlaneHeatFlux", 2);
          model.component("comp1").physics("ht").feature("ophf1").selection().set(1);
          
          model.component("comp1").physics("ht").feature("ophf1").set("UpsideHeatFluxType", "ConvectiveHeatFlux");
          model.component("comp1").physics("ht").feature("ophf1").set("h_u", 40);
          model.component("comp1").physics("ht").feature("ophf1").set("Text_u", "T_ref");
          
          model.component("comp1").physics("ht").feature("ophf1").set("DownsideHeatFluxType", "ConvectiveHeatFlux");
          model.component("comp1").physics("ht").feature("ophf1").set("h_d", 40);
          model.component("comp1").physics("ht").feature("ophf1").set("Text_d", "T_ref");
                    
          // hs1
          model.component("comp1").physics("ht").create("hs1", "HeatSource", 2);
          model.component("comp1").physics("ht").feature("hs1").selection().set(1);
          
          model.component("comp1").physics("ht").feature("hs1").set("materialType", "from_mat");
          model.component("comp1").physics("ht").feature("hs1").set("heatSourceType", "GeneralSource");
          
// Solid creation 
          model.component("comp1").physics().create("solid", "SolidMechanics", "geom1");
          model.component("comp1").physics("solid").selection().set(1);
          
          model.component("comp1").physics("solid").prop("EquationForm").setIndex("form", "Automatic", 0);
          
          model.component("comp1").physics("solid").prop("Type2D").set("Type2D", "PlaneStress");
          model.component("comp1").physics("solid").prop("d").set("d", "d");
          model.component("comp1").physics("solid").prop("ShapeProperty").set("order_displacement", 2);
          model.component("comp1").physics("solid").prop("StructuralTransientBehavior")
          .set("StructuralTransientBehavior", "IncludeInertia");
          model.component("comp1").physics("solid").field("displacement").field("UD");

          
          /* Displacement order 1
           model.component("comp1").physics("solid").prop("ShapeProperty").set("order_displacement", 1);
          *
           * Static Simulation      
          model.component("comp1").physics("solid").prop("StructuralTransientBehavior")
         .set("StructuralTransientBehavior", "Quasistatic");
           *
           *Reference point for Moment Computation       
           *    
  		model.component("comp1").physics("solid").prop("refpnt").set("refpnt", new double[]{0.1, 0.1, 0});
  	          * Auricchio Model
  	          model.component("comp1").physics("solid").feature("sma1").set("ShapeMemoryAlloyModel", "SouzaAuricchio");
           * Cosine
             model.component("comp1").physics("solid").feature("sma1").set("TransformationFunction", "Cosine");
           *Initial martensite fraction
               model.component("comp1").physics("solid").feature("sma1").set("xi0", 0.1);
               *Changing variables in equation view
              model.component("comp1").physics("solid").feature("sma1").featureInfo("info")
              .set("solid.eYZ", 0, new String[]{"0.1"});
           */ 
          
          
          // sma1   
          model.component("comp1").physics("solid").create("sma1", "ShapeMemoryAlloy", 2);
          model.component("comp1").physics("solid").feature("sma1").set("minput_temperature_src", "root.comp1.T");
          model.component("comp1").physics("solid").feature("sma1").selection().set(1);
          
          model.component("comp1").physics("solid").feature("sma1").set("ShapeMemoryAlloyModel", "Lagoudas");
          model.component("comp1").physics("solid").feature("sma1").set("T0", "T_ref");
          model.component("comp1").physics("solid").feature("sma1").set("AusteniteMaterial", "mat1");
          model.component("comp1").physics("solid").feature("sma1").set("MartensiteMaterial", "mat2");
          
          model.component("comp1").physics("solid").feature("sma1").set("TMs", "208.25+rn(x,y)");
          model.component("comp1").physics("solid").feature("sma1").set("TMf", "207.5+rn(x,y)");
          model.component("comp1").physics("solid").feature("sma1").set("CM", "4e6");
          
          model.component("comp1").physics("solid").feature("sma1").set("TAs", "254+rn(x,y)");
          model.component("comp1").physics("solid").feature("sma1").set("TAf", "255.5+rn(x,y)");
          model.component("comp1").physics("solid").feature("sma1").set("CA", "4e6");
          
          model.component("comp1").physics("solid").feature("sma1").set("etrmax", 0.04);
          
          model.component("comp1").physics("solid").feature("sma1").set("TransformationFunction", "Quadratic");
          
          model.component("comp1").physics("solid").feature("sma1").set("TransformationDirectionType", "UserDefined");
          model.component("comp1").physics("solid").feature("sma1").set("trdir", "if(t<t3,1,-1)");
          
          model.component("comp1").physics("solid").feature("sma1").set("CalculateDissipatedEnergy", true);

          // Initial values 
          

          // fix1
//          model.component("comp1").physics("solid").create("fix1", "Fixed", 1);
//          model.component("comp1").physics("solid").feature("fix1").selection().set(1);
//          model.component("comp1").physics("solid").feature("fix1").active(false);
          
          // disp1
          model.component("comp1").physics("solid").create("disp1", "Displacement1", 1);
          model.component("comp1").physics("solid").feature("disp1").selection().set(1);
          
          model.component("comp1").physics("solid").feature("disp1").setIndex("Direction", true, 0);
          model.component("comp1").physics("solid").feature("disp1").setIndex("Direction", true, 1);

          
          // disp2                
          model.component("comp1").physics("solid").create("disp2", "Displacement1", 1);
          model.component("comp1").physics("solid").feature("disp2").selection().set(4);
          
          model.component("comp1").physics("solid").feature("disp2").setIndex("Direction", true, 0);
          model.component("comp1").physics("solid").feature("disp2").setIndex("Direction", true, 1);
          model.component("comp1").physics("solid").feature("disp2").setIndex("U0", "pw1(t)", 0);

          
          //free2
          model.component("comp1").physics("solid").create("free2", "Free", 1);
          model.component("comp1").physics("solid").feature("free2").selection().set(2, 3);
          
          
          // Displacements activated
          model.component("comp1").physics("solid").feature("disp1").active(true);
          model.component("comp1").physics("solid").feature("disp2").active(true);
          
          // Total power dissipation density Heat transfer in Solids
          model.component("comp1").physics("ht").feature("hs1").set("Q0_src", "root.comp1.solid.Qh");
          

//  Mesh
          model.component("comp1").mesh().create("mesh1");
          model.component("comp1").mesh("mesh1").create("map1", "Map");        
          model.component("comp1").mesh("mesh1").feature("size").set("hauto", 1);
          model.component("comp1").mesh("mesh1").run();
          
            
// Study
          model.study().create("std1");
          model.study("std1").create("time", "Transient");
          
          model.study("std1").feature("time").set("tlist", "range(0,dt,t5)");
          model.study("std1").feature("time").set("usertol", true);
          model.study("std1").feature("time").set("plot", true);
          
          model.study("std1").feature("time").set("useadvanceddisable", true);          
          model.study("std1").feature("time").activate("solid", true);

          
// Solution
          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");
          
          // Dependent variables v1
          model.sol("sol1").feature("v1").set("resscalemethod", "auto");
          model.sol("sol1").feature("v1").set("clist", new String[]{"range(0,dt,t5)", "0.0017[s]"});

          // Time dependent solver t1
          model.sol("sol1").feature("t1").set("control", "user");
          model.sol("sol1").feature("t1").set("tlist", "range(0,dt,t5)");
          model.sol("sol1").feature("t1").set("atolglobalfactor", 0.001);
          model.sol("sol1").feature("t1").feature().remove("fcDef");  
          
          model.sol("sol1").feature("t1").set("timemethod", "bdf");
          model.sol("sol1").feature("t1").set("tstepsbdf", "strict");
          
          model.sol("sol1").feature("t1").create("fc1", "FullyCoupled");        
          model.sol("sol1").feature("t1").feature("fc1").set("dtech", "hnlin");
          model.sol("sol1").feature("t1").feature("fc1").set("maxiter", 20);
          model.sol("sol1").feature("t1").feature("fc1").set("dtech", "auto");
          
                    
          model.sol("sol1").feature("t1").set("plot", true);
                    
          //model.sol("sol1").runAll();
          


          
          


          

          
 


          


          
          


  
          
          

          

          

          
          
          


+4 −4

File changed.

Contains only whitespace changes.