Untitled
unknown
plain_text
5 months ago
4.1 kB
3
Indexable
import com.comsol.model.*; import com.comsol.model.util.*; public class BioreactorModel { public static void main(String[] args) { Model model = ModelUtil.create("Model"); // Set up parameters double diameter = 10; // cm double wallThickness = 0.5; // cm double heightInner = 16.55; // cm double headplateThickness = 1; // cm double bottomPlateThickness = 0.8; // cm double impellerDiameter = 5; // cm double impellerBladeLength = 1; // cm double impellerBladeThickness = 0.3; // cm double lowerImpellerHeight = 10.5; // cm double upperImpellerHeight = 16.5; // cm double shaftDiameter = 0.8; // cm double baffleWidth = 1; // cm double baffleThickness = 0.3; // cm double baffleHeight = 9; // cm; // Create geometry Geometry geom = model.geom().create("geom1", 3); // Bioreactor vessel geom.feature().create("vessel", "Cylinder"); geom.feature("vessel").set("r", diameter / 2 + wallThickness); geom.feature("vessel").set("h", heightInner); // Inner hollow cylinder geom.feature().create("inner", "Cylinder"); geom.feature("inner").set("r", diameter / 2); geom.feature("inner").set("h", heightInner); // Subtract inner from outer to create walls geom.feature().create("walls", "Difference"); geom.feature("walls").selection("input").set("vessel"); geom.feature("walls").selection("input2").set("inner"); // Headplate geom.feature().create("headplate", "Cylinder"); geom.feature("headplate").set("r", diameter / 2 + wallThickness); geom.feature("headplate").set("h", headplateThickness); geom.feature("headplate").set("pos", new double[]{0, 0, heightInner}); // Bottom plate geom.feature().create("bottomplate", "Cylinder"); geom.feature("bottomplate").set("r", diameter / 2 + wallThickness); geom.feature("bottomplate").set("h", bottomPlateThickness); // Impellers createImpeller(geom, lowerImpellerHeight, impellerDiameter, impellerBladeLength, impellerBladeThickness, shaftDiameter); createImpeller(geom, upperImpellerHeight, impellerDiameter, impellerBladeLength, impellerBladeThickness, shaftDiameter); // Baffles createBaffles(geom, diameter, baffleWidth, baffleThickness, baffleHeight); // Build the geometry geom.run(); } private static void createImpeller(Geometry geom, double position, double impellerDiameter, double bladeLength, double bladeThickness, double shaftDiameter) { geom.feature().create("impeller_shaft", "Cylinder"); geom.feature("impeller_shaft").set("r", shaftDiameter / 2); geom.feature("impeller_shaft").set("h", bladeThickness); geom.feature("impeller_shaft").set("pos", new double[]{0, 0, position}); for (int i = 0; i < 6; i++) { // 6 blades double angle = i * 60; // Blades equally spaced geom.feature().create("blade" + i, "Block"); geom.feature("blade" + i).set("size", new double[]{bladeLength, bladeThickness, bladeLength}); geom.feature("blade" + i).set("rot", new double[]{0, 0, angle}); geom.feature("blade" + i).set("pos", new double[]{impellerDiameter / 2, 0, position}); } } private static void createBaffles(Geometry geom, double diameter, double baffleWidth, double baffleThickness, double baffleHeight) { for (int i = 0; i < 4; i++) { // 4 baffles double angle = i * 90; // Baffles equally spaced geom.feature().create("baffle" + i, "Block"); geom.feature("baffle" + i).set("size", new double[]{baffleWidth, baffleThickness, baffleHeight}); geom.feature("baffle" + i).set("rot", new double[]{0, 0, angle}); geom.feature("baffle" + i).set("pos", new double[]{diameter / 2 - baffleWidth / 2, 0, 0}); } } }
Editor is loading...
Leave a Comment