private static void CreateModelFromComsolMeshFile() { string comsolMeshFile = @"C:\Users\Ody\Documents\MSolve\ISAAR.MSolve.SamplesConsole\ComsolInput\mesh.mphtxt"; ComsolMeshReader cr = new ComsolMeshReader(comsolMeshFile); cr.CreateModelFromFile(); }
private static Tuple <Model, ComsolMeshReader> CreateModel() { string filename = Path.Combine(Directory.GetCurrentDirectory(), "InputFiles", "TumorGrowthModel", "mesh1.mphtxt"); ComsolMeshReader modelReader = new ComsolMeshReader(filename); Model model = modelReader.CreateModelFromFile(); //Boundary Conditions var flux = new FluxLoad(10); var dir1 = new DirichletDistribution(list => { return(Vector.CreateWithValue(list.Count, 0)); }); var dir2 = new DirichletDistribution(list => { return(Vector.CreateWithValue(list.Count, 1)); }); var weakDirichlet1 = new WeakDirichlet(dir1, modelReader.diffusionCeoff); var weakDirichlet2 = new WeakDirichlet(dir2, modelReader.diffusionCeoff); var dirichletFactory1 = new SurfaceLoadElementFactory(weakDirichlet1); var dirichletFactory2 = new SurfaceLoadElementFactory(weakDirichlet2); var fluxFactory = new SurfaceLoadElementFactory(flux); int[] boundaryIDs = new int[] { 2, 7, 8, 9 }; foreach (int boundaryID in boundaryIDs) { foreach (Element element in modelReader.elementBoundaries[boundaryID]) { IReadOnlyList <Node> nodes = (IReadOnlyList <Node>)element.Nodes; var dirichletElement1 = dirichletFactory1.CreateElement(CellType.Tri3, nodes); model.SurfaceLoads.Add(dirichletElement1); //var surfaceElement = new SurfaceLoadElement(); //element.ID = TriID; //surfaceElement.ElementType = DirichletElement1; //model.SubdomainsDictionary[0].Elements.Add(dirichletElement1); //model.ElementsDictionary.Add(TriID, surfaceElement); //model.NodesDictionary[surfaceElement.ID].Constraints.Add(new Constraint() { DOF = ThermalDof.Temperature, Amount = 100 }); } } boundaryIDs = new int[] { 0, 1, 3, 4, 6 }; foreach (int boundaryID in boundaryIDs) { foreach (Element element in modelReader.elementBoundaries[boundaryID]) { IReadOnlyList <Node> nodes = (IReadOnlyList <Node>)element.Nodes; var dirichletElement2 = dirichletFactory2.CreateElement(CellType.Tri3, nodes); model.SurfaceLoads.Add(dirichletElement2); } } return(new Tuple <Model, ComsolMeshReader>(model, modelReader)); }
private static Model CreateModel() { string filename = Path.Combine(Directory.GetCurrentDirectory(), "InputFiles", "TumorGrowthModel", "mesh.mphtxt"); ComsolMeshReader modelReader = new ComsolMeshReader(filename); Model model = modelReader.CreateModelFromFile(); //int[] boundaryIDs = new int[] { 0, 1, 2 }; //foreach (int boundaryID in boundaryIDs) //{ // foreach (Node node in modelReader.nodeBoundaries[boundaryID]) // { // model.Loads.Add(new Load() { DOF = ThermalDof.Temperature, Amount = 100, Node = node }); // } //} int[] boundaryIDs = new int[] { 7, 8, 9 }; foreach (int boundaryID in boundaryIDs) { foreach (Node node in modelReader.nodeBoundaries[boundaryID]) { model.NodesDictionary[node.ID].Constraints.Add(new Constraint() { DOF = ThermalDof.Temperature, Amount = 100 }); } } boundaryIDs = new int[] { 3, 4, 6 }; foreach (int boundaryID in boundaryIDs) { foreach (Node node in modelReader.nodeBoundaries[boundaryID]) { model.NodesDictionary[node.ID].Constraints.Add(new Constraint() { DOF = ThermalDof.Temperature, Amount = 1 }); } } return(model); }