First commit of branch performance:
Bugs fixed: - Solved an issue with particles being injected with infinite velocity resulting in Inf velocity in some cells of the output files. - Particles are now equally distributed in cylindrical geometry along the radial direction. New features: - Particles now have their own weight that is recalculated when the particle moves to a new cell. This avoid the reduction of density at r = 0. Cases: - Added a case of Argon flow around a cylinder to measure performance and future improvements.
This commit is contained in:
parent
bd7e8b040b
commit
05f5adcfe1
10 changed files with 5003 additions and 28 deletions
42
runs/cylFlow/input.json
Normal file
42
runs/cylFlow/input.json
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
"output": {
|
||||
"path": "./runs/cylFlow/",
|
||||
"trigger": 100,
|
||||
"cpuTime": false,
|
||||
"numColl": false
|
||||
},
|
||||
"geometry": {
|
||||
"type": "2DCyl",
|
||||
"meshType": "gmsh",
|
||||
"meshFile": "mesh.msh"
|
||||
},
|
||||
"species": [
|
||||
{"name": "Argon", "type": "neutral", "mass": 6.633e-26, "weight": 5.0e6}
|
||||
],
|
||||
"boundary": [
|
||||
{"name": "Injection", "type": "absorption", "physicalSurface": 1},
|
||||
{"name": "Chamber Walls", "type": "reflection", "physicalSurface": 2},
|
||||
{"name": "Exterior", "type": "absorption", "physicalSurface": 3},
|
||||
{"name": "Cylinder Walls", "type": "reflection", "physicalSurface": 4},
|
||||
{"name": "Axis", "type": "axis", "physicalSurface": 5}
|
||||
],
|
||||
"inject": [
|
||||
{"name": "Nozzle", "species": "Argon", "flow": 1.0, "units": "sccm", "v": 300.0, "T": [300.0, 300.0, 300.0], "n": [1, 0, 0], "physicalSurface": 1}
|
||||
],
|
||||
"reference": {
|
||||
"density": 1.0e19,
|
||||
"mass": 6.633e-26,
|
||||
"temperature": 300.0,
|
||||
"radius": 1.88e-10
|
||||
},
|
||||
"case": {
|
||||
"tau": 6.e-7,
|
||||
"time": 3.e-4
|
||||
},
|
||||
"interactions": {
|
||||
"folderCollisions": "./data/collisions/",
|
||||
"collisions": [
|
||||
{"species_i": "Argon", "species_j": "Argon", "crossSections": ["Ar-Ar_Elastic.dat"]}
|
||||
]
|
||||
}
|
||||
}
|
||||
79
runs/cylFlow/mesh.geo
Normal file
79
runs/cylFlow/mesh.geo
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
cl__1 = 1;
|
||||
cyl_h = 0.005;
|
||||
cyl_l = 0.02;
|
||||
cyl_s = 0.03;
|
||||
cyl_e = cyl_s + cyl_l;
|
||||
dom_h = 0.03;
|
||||
dom_l = 0.07;
|
||||
|
||||
Lcell = 0.001;
|
||||
|
||||
Point(1) = {0, 0, 0, cl__1};
|
||||
Point(2) = {cyl_s, 0, 0, cl__1};
|
||||
Point(3) = {cyl_s, cyl_h, 0, cl__1};
|
||||
Point(4) = {cyl_e, cyl_h, 0, cl__1};
|
||||
Point(5) = {cyl_e, 0, 0, cl__1};
|
||||
Point(6) = {dom_l, 0, 0, cl__1};
|
||||
Point(7) = {dom_l, cyl_h, 0, cl__1};
|
||||
Point(8) = {dom_l, dom_h, 0, cl__1};
|
||||
Point(9) = {cyl_e, dom_h, 0, cl__1};
|
||||
Point(10) = {cyl_s, dom_h, 0, cl__1};
|
||||
Point(11) = {0, dom_h, 0, cl__1};
|
||||
Point(12) = {0, cyl_h, 0, cl__1};
|
||||
|
||||
Line(1) = {1, 2};
|
||||
Line(2) = {2, 3};
|
||||
Line(3) = {3, 4};
|
||||
Line(4) = {4, 5};
|
||||
Line(5) = {5, 6};
|
||||
Line(6) = {6, 7};
|
||||
Line(7) = {7, 8};
|
||||
Line(8) = {8, 9};
|
||||
Line(9) = {9, 10};
|
||||
Line(10) = {10, 11};
|
||||
Line(11) = {11, 12};
|
||||
Line(12) = {12, 1};
|
||||
Line(13) = {12, 3};
|
||||
Line(14) = {4, 7};
|
||||
Line(15) = {4, 9};
|
||||
Line(16) = {10, 3};
|
||||
|
||||
Line Loop(1) = {1, 2, -13, 12};
|
||||
Plane Surface(1) = {1};
|
||||
Line Loop(2) = {13, -16, 10, 11};
|
||||
Plane Surface(2) = {2};
|
||||
Line Loop(3) = {3, 15, 9, 16};
|
||||
Plane Surface(3) = {3};
|
||||
Line Loop(4) = {5, 6, -14, 4};
|
||||
Plane Surface(4) = {4};
|
||||
Line Loop(5) = {14, 7, 8, -15};
|
||||
Plane Surface(5) = {5};
|
||||
|
||||
Physical Line(1) = {12, 11};
|
||||
Physical Line(2) = {10, 9, 8};
|
||||
Physical Line(3) = {7, 6};
|
||||
Physical Line(4) = {2, 3, 4};
|
||||
Physical Line(5) = {1, 5};
|
||||
|
||||
Physical Surface(1) = {1};
|
||||
Physical Surface(2) = {2};
|
||||
Physical Surface(3) = {3};
|
||||
Physical Surface(4) = {4};
|
||||
Physical Surface(5) = {5};
|
||||
|
||||
Transfinite Line {12, 2, 4, 6} = cyl_h/Lcell + 1 Using Progression 1;
|
||||
Transfinite Line {1, 13, 10} = cyl_s/Lcell + 1 Using Progression 1;
|
||||
Transfinite Line {11, 16, 15, 7} = (dom_h - cyl_h)/Lcell + 1 Using Progression 1;
|
||||
Transfinite Line {3, 9} = cyl_l/Lcell + 1 Using Progression 1;
|
||||
Transfinite Line {5, 14, 8} = (dom_l - cyl_e)/Lcell + 1 Using Progression 1;
|
||||
|
||||
Transfinite Surface{1};
|
||||
Recombine Surface {1};
|
||||
Transfinite Surface{2};
|
||||
Recombine Surface {2};
|
||||
Transfinite Surface{3};
|
||||
Recombine Surface {3};
|
||||
Transfinite Surface{4};
|
||||
Recombine Surface {4};
|
||||
Transfinite Surface{5};
|
||||
Recombine Surface {5};
|
||||
4182
runs/cylFlow/mesh.msh
Normal file
4182
runs/cylFlow/mesh.msh
Normal file
File diff suppressed because it is too large
Load diff
629
runs/cylFlow/mesh.msh.opt
Normal file
629
runs/cylFlow/mesh.msh.opt
Normal file
|
|
@ -0,0 +1,629 @@
|
|||
General.AxesFormatX = "%.3g";
|
||||
General.AxesFormatY = "%.3g";
|
||||
General.AxesFormatZ = "%.3g";
|
||||
General.AxesLabelX = "z (m)";
|
||||
General.AxesLabelY = "r (m)";
|
||||
General.AxesLabelZ = "";
|
||||
General.BackgroundImageFileName = "";
|
||||
General.BuildOptions = " 64Bit ALGLIB Bamg Blas Blossom DIntegration Dlopen DomHex Fltk GMP Gmm[system] Hxt Hxt3D Jpeg Kbipack Lapack LinuxJoystick MathEx Mesh Metis[system] Mmg3d Mpeg NativeFileChooser Netgen ONELAB ONELABMetamodel OpenCASCADE OpenCASCADE-CAF OpenGL OpenMP OptHom Parser Plugins Png Post QuadTri Solver TetGen/BR Zlib";
|
||||
General.DefaultFileName = "untitled.geo";
|
||||
General.Display = "";
|
||||
General.ErrorFileName = ".gmsh-errors";
|
||||
General.ExecutableFileName = "/usr/bin/gmsh";
|
||||
General.FileName = "/home/jorge/PPartiC/runs/cylFlow/mesh.msh";
|
||||
General.FltkTheme = "";
|
||||
General.GraphicsFont = "Helvetica";
|
||||
General.GraphicsFontEngine = "Native";
|
||||
General.GraphicsFontTitle = "Helvetica";
|
||||
General.OptionsFileName = ".gmsh-options";
|
||||
General.RecentFile0 = "/home/jorge/PPartiC/runs/cylFlow/mesh.msh";
|
||||
General.RecentFile1 = "untitled.geo";
|
||||
General.RecentFile2 = "mesh/Neutral_Expansion_Div.geo";
|
||||
General.RecentFile3 = "mesh/Neutral_Expansion_Div.msh";
|
||||
General.RecentFile4 = "Neutral_Expansion_Div.msh";
|
||||
General.RecentFile5 = "Neutral_Expansion.geo";
|
||||
General.RecentFile6 = "Neutral_Expansion_Div.geo";
|
||||
General.RecentFile7 = "/home/jorge/Dropbox/UPMPlasmaLab/Post-Doc/Codes/PICCIL2D/PIC-FEM/Neutral_Expansion_Div.msh";
|
||||
General.RecentFile8 = "Neutral_Expansion.msh";
|
||||
General.RecentFile9 = "/home/jorge/Dropbox/UPMPlasmaLab/Post-Doc/Codes/PICCIL2D/PIC-FEM/Neutral_Expansion.msh";
|
||||
General.TextEditor = "gedit '%s'";
|
||||
General.TmpFileName = ".gmsh-tmp";
|
||||
General.Version = "4.4.1";
|
||||
General.WatchFilePattern = "";
|
||||
General.AlphaBlending = 1;
|
||||
General.Antialiasing = 0;
|
||||
General.ArrowHeadRadius = 0.12;
|
||||
General.ArrowStemLength = 0.5600000000000001;
|
||||
General.ArrowStemRadius = 0.02;
|
||||
General.Axes = 1;
|
||||
General.AxesMikado = 0;
|
||||
General.AxesAutoPosition = 1;
|
||||
General.AxesForceValue = 0;
|
||||
General.AxesMaxX = 1;
|
||||
General.AxesMaxY = 1;
|
||||
General.AxesMaxZ = 1;
|
||||
General.AxesMinX = 0;
|
||||
General.AxesMinY = 0;
|
||||
General.AxesMinZ = 0;
|
||||
General.AxesTicsX = 8;
|
||||
General.AxesTicsY = 4;
|
||||
General.AxesTicsZ = 5;
|
||||
General.AxesValueMaxX = 1;
|
||||
General.AxesValueMaxY = 1;
|
||||
General.AxesValueMaxZ = 1;
|
||||
General.AxesValueMinX = 0;
|
||||
General.AxesValueMinY = 0;
|
||||
General.AxesValueMinZ = 0;
|
||||
General.BackgroundGradient = 1;
|
||||
General.BackgroundImage3D = 0;
|
||||
General.BackgroundImagePage = 0;
|
||||
General.BackgroundImagePositionX = 0;
|
||||
General.BackgroundImagePositionY = 0;
|
||||
General.BackgroundImageWidth = -1;
|
||||
General.BackgroundImageHeight = -1;
|
||||
General.BoundingBoxSize = 0.07615773105863909;
|
||||
General.Camera = 0;
|
||||
General.CameraAperture = 40;
|
||||
General.CameraEyeSeparationRatio = 1.5;
|
||||
General.CameraFocalLengthRatio = 1;
|
||||
General.Clip0A = 1;
|
||||
General.Clip0B = 0;
|
||||
General.Clip0C = 0;
|
||||
General.Clip0D = 0;
|
||||
General.Clip1A = 0;
|
||||
General.Clip1B = 1;
|
||||
General.Clip1C = 0;
|
||||
General.Clip1D = 0;
|
||||
General.Clip2A = 0;
|
||||
General.Clip2B = 0;
|
||||
General.Clip2C = 1;
|
||||
General.Clip2D = 0;
|
||||
General.Clip3A = -1;
|
||||
General.Clip3B = 0;
|
||||
General.Clip3C = 0;
|
||||
General.Clip3D = 1;
|
||||
General.Clip4A = 0;
|
||||
General.Clip4B = -1;
|
||||
General.Clip4C = 0;
|
||||
General.Clip4D = 1;
|
||||
General.Clip5A = 0;
|
||||
General.Clip5B = 0;
|
||||
General.Clip5C = -1;
|
||||
General.Clip5D = 1;
|
||||
General.ClipFactor = 5;
|
||||
General.ClipOnlyDrawIntersectingVolume = 0;
|
||||
General.ClipOnlyVolume = 0;
|
||||
General.ClipPositionX = 650;
|
||||
General.ClipPositionY = 150;
|
||||
General.ClipWholeElements = 0;
|
||||
General.ColorScheme = 1;
|
||||
General.ConfirmOverwrite = 1;
|
||||
General.ContextPositionX = 235;
|
||||
General.ContextPositionY = 962;
|
||||
General.DetachedMenu = 0;
|
||||
General.DisplayBorderFactor = 0.2;
|
||||
General.DoubleBuffer = 1;
|
||||
General.DrawBoundingBoxes = 0;
|
||||
General.ExpertMode = 0;
|
||||
General.ExtraPositionX = 650;
|
||||
General.ExtraPositionY = 350;
|
||||
General.ExtraHeight = 100;
|
||||
General.ExtraWidth = 100;
|
||||
General.FastRedraw = 0;
|
||||
General.FieldPositionX = 650;
|
||||
General.FieldPositionY = 550;
|
||||
General.FieldHeight = 488;
|
||||
General.FieldWidth = 651;
|
||||
General.FileChooserPositionX = 200;
|
||||
General.FileChooserPositionY = 200;
|
||||
General.FltkColorScheme = 0;
|
||||
General.FontSize = -1;
|
||||
General.GraphicsFontSize = 15;
|
||||
General.GraphicsFontSizeTitle = 18;
|
||||
General.GraphicsHeight = 1003;
|
||||
General.GraphicsPositionX = 274;
|
||||
General.GraphicsPositionY = 263;
|
||||
General.GraphicsWidth = 1920;
|
||||
General.HighOrderToolsPositionX = 650;
|
||||
General.HighOrderToolsPositionY = 150;
|
||||
General.HighResolutionGraphics = 1;
|
||||
General.HighResolutionPointSizeFactor = 2;
|
||||
General.InitialModule = 0;
|
||||
General.InputScrolling = 1;
|
||||
General.Light0 = 1;
|
||||
General.Light0X = 0.65;
|
||||
General.Light0Y = 0.65;
|
||||
General.Light0Z = 1;
|
||||
General.Light0W = 0;
|
||||
General.Light1 = 0;
|
||||
General.Light1X = 0.5;
|
||||
General.Light1Y = 0.3;
|
||||
General.Light1Z = 1;
|
||||
General.Light1W = 0;
|
||||
General.Light2 = 0;
|
||||
General.Light2X = 0.5;
|
||||
General.Light2Y = 0.3;
|
||||
General.Light2Z = 1;
|
||||
General.Light2W = 0;
|
||||
General.Light3 = 0;
|
||||
General.Light3X = 0.5;
|
||||
General.Light3Y = 0.3;
|
||||
General.Light3Z = 1;
|
||||
General.Light3W = 0;
|
||||
General.Light4 = 0;
|
||||
General.Light4X = 0.5;
|
||||
General.Light4Y = 0.3;
|
||||
General.Light4Z = 1;
|
||||
General.Light4W = 0;
|
||||
General.Light5 = 0;
|
||||
General.Light5X = 0.5;
|
||||
General.Light5Y = 0.3;
|
||||
General.Light5Z = 1;
|
||||
General.Light5W = 0;
|
||||
General.LineWidth = 1;
|
||||
General.ManipulatorPositionX = 650;
|
||||
General.ManipulatorPositionY = 150;
|
||||
General.MaxX = 0.07000000000000001;
|
||||
General.MaxY = 0.03;
|
||||
General.MaxZ = 0;
|
||||
General.MenuWidth = 219;
|
||||
General.MenuHeight = 200;
|
||||
General.MenuPositionX = 400;
|
||||
General.MenuPositionY = 400;
|
||||
General.MessageFontSize = -1;
|
||||
General.MessageHeight = 300;
|
||||
General.MinX = 0;
|
||||
General.MinY = 0;
|
||||
General.MinZ = 0;
|
||||
General.MouseHoverMeshes = 0;
|
||||
General.MouseSelection = 1;
|
||||
General.MouseInvertZoom = 0;
|
||||
General.NonModalWindows = 1;
|
||||
General.NoPopup = 0;
|
||||
General.NumThreads = 1;
|
||||
General.OptionsPositionX = 827;
|
||||
General.OptionsPositionY = 541;
|
||||
General.Orthographic = 1;
|
||||
General.PluginPositionX = 58;
|
||||
General.PluginPositionY = 658;
|
||||
General.PluginHeight = 488;
|
||||
General.PluginWidth = 708;
|
||||
General.PointSize = 3;
|
||||
General.PolygonOffsetAlwaysOn = 0;
|
||||
General.PolygonOffsetFactor = 1;
|
||||
General.PolygonOffsetUnits = 1;
|
||||
General.ProgressMeterStep = 20;
|
||||
General.QuadricSubdivisions = 6;
|
||||
General.RotationX = -0;
|
||||
General.RotationY = 0;
|
||||
General.RotationZ = -0;
|
||||
General.RotationCenterGravity = 1;
|
||||
General.RotationCenterX = 0;
|
||||
General.RotationCenterY = 0;
|
||||
General.RotationCenterZ = 0;
|
||||
General.SaveOptions = 0;
|
||||
General.SaveSession = 1;
|
||||
General.ScaleX = 1;
|
||||
General.ScaleY = 1;
|
||||
General.ScaleZ = 1;
|
||||
General.Shininess = 0.4;
|
||||
General.ShininessExponent = 40;
|
||||
General.ShowModuleMenu = 1;
|
||||
General.ShowOptionsOnStartup = 0;
|
||||
General.ShowMessagesOnStartup = 0;
|
||||
General.SmallAxes = 1;
|
||||
General.SmallAxesPositionX = -60;
|
||||
General.SmallAxesPositionY = -40;
|
||||
General.SmallAxesSize = 30;
|
||||
General.StatisticsPositionX = 650;
|
||||
General.StatisticsPositionY = 150;
|
||||
General.Stereo = 0;
|
||||
General.SystemMenuBar = 1;
|
||||
General.Terminal = 0;
|
||||
General.Tooltips = 1;
|
||||
General.Trackball = 1;
|
||||
General.TrackballHyperbolicSheet = 1;
|
||||
General.TrackballQuaternion0 = 0;
|
||||
General.TrackballQuaternion1 = 0;
|
||||
General.TrackballQuaternion2 = 0;
|
||||
General.TrackballQuaternion3 = 1;
|
||||
General.TranslationX = 0;
|
||||
General.TranslationY = 0;
|
||||
General.TranslationZ = 0;
|
||||
General.VectorType = 4;
|
||||
General.Verbosity = 5;
|
||||
General.VisibilityPositionX = 1118;
|
||||
General.VisibilityPositionY = 464;
|
||||
General.ZoomFactor = 4;
|
||||
General.Color.Background = {255,255,255};
|
||||
General.Color.BackgroundGradient = {208,215,255};
|
||||
General.Color.Foreground = {85,85,85};
|
||||
General.Color.Text = {0,0,0};
|
||||
General.Color.Axes = {0,0,0};
|
||||
General.Color.SmallAxes = {0,0,0};
|
||||
General.Color.AmbientLight = {25,25,25};
|
||||
General.Color.DiffuseLight = {255,255,255};
|
||||
General.Color.SpecularLight = {255,255,255};
|
||||
Geometry.DoubleClickedPointCommand = "";
|
||||
Geometry.DoubleClickedLineCommand = "";
|
||||
Geometry.DoubleClickedSurfaceCommand = "";
|
||||
Geometry.DoubleClickedVolumeCommand = "";
|
||||
Geometry.OCCTargetUnit = "";
|
||||
Geometry.AutoCoherence = 1;
|
||||
Geometry.Clip = 0;
|
||||
Geometry.CopyMeshingMethod = 0;
|
||||
Geometry.DoubleClickedEntityTag = 0;
|
||||
Geometry.ExactExtrusion = 1;
|
||||
Geometry.ExtrudeReturnLateralEntities = 1;
|
||||
Geometry.ExtrudeSplinePoints = 5;
|
||||
Geometry.HighlightOrphans = 0;
|
||||
Geometry.LabelType = 0;
|
||||
Geometry.Light = 1;
|
||||
Geometry.LightTwoSide = 1;
|
||||
Geometry.Lines = 1;
|
||||
Geometry.LineNumbers = 0;
|
||||
Geometry.LineSelectWidth = 3;
|
||||
Geometry.LineType = 0;
|
||||
Geometry.LineWidth = 2;
|
||||
Geometry.MatchGeomAndMesh = 0;
|
||||
Geometry.MatchMeshScaleFactor = 1;
|
||||
Geometry.MatchMeshTolerance = 1e-06;
|
||||
Geometry.Normals = 0;
|
||||
Geometry.NumSubEdges = 40;
|
||||
Geometry.OCCAutoFix = 1;
|
||||
Geometry.OCCBooleanPreserveNumbering = 1;
|
||||
Geometry.OCCDisableSTL = 0;
|
||||
Geometry.OCCFixDegenerated = 0;
|
||||
Geometry.OCCFixSmallEdges = 0;
|
||||
Geometry.OCCFixSmallFaces = 0;
|
||||
Geometry.OCCImportLabels = 1;
|
||||
Geometry.OCCParallel = 0;
|
||||
Geometry.OCCScaling = 1;
|
||||
Geometry.OCCSewFaces = 0;
|
||||
Geometry.OffsetX = 0;
|
||||
Geometry.OffsetY = 0;
|
||||
Geometry.OffsetZ = 0;
|
||||
Geometry.OldCircle = 0;
|
||||
Geometry.OldRuledSurface = 0;
|
||||
Geometry.OldNewReg = 1;
|
||||
Geometry.Points = 1;
|
||||
Geometry.PointNumbers = 0;
|
||||
Geometry.PointSelectSize = 6;
|
||||
Geometry.PointSize = 4;
|
||||
Geometry.PointType = 0;
|
||||
Geometry.ReparamOnFaceRobust = 0;
|
||||
Geometry.ScalingFactor = 1;
|
||||
Geometry.OrientedPhysicals = 1;
|
||||
Geometry.SnapX = 0.1;
|
||||
Geometry.SnapY = 0.1;
|
||||
Geometry.SnapZ = 0.1;
|
||||
Geometry.Surfaces = 0;
|
||||
Geometry.SurfaceNumbers = 0;
|
||||
Geometry.SurfaceType = 0;
|
||||
Geometry.Tangents = 0;
|
||||
Geometry.Tolerance = 1e-08;
|
||||
Geometry.ToleranceBoolean = 0;
|
||||
Geometry.Transform = 0;
|
||||
Geometry.TransformXX = 1;
|
||||
Geometry.TransformXY = 0;
|
||||
Geometry.TransformXZ = 0;
|
||||
Geometry.TransformYX = 0;
|
||||
Geometry.TransformYY = 1;
|
||||
Geometry.TransformYZ = 0;
|
||||
Geometry.TransformZX = 0;
|
||||
Geometry.TransformZY = 0;
|
||||
Geometry.TransformZZ = 1;
|
||||
Geometry.Volumes = 0;
|
||||
Geometry.VolumeNumbers = 0;
|
||||
Geometry.Color.Points = {90,90,90};
|
||||
Geometry.Color.Lines = {0,0,255};
|
||||
Geometry.Color.Surfaces = {128,128,128};
|
||||
Geometry.Color.Volumes = {255,255,0};
|
||||
Geometry.Color.Selection = {255,0,0};
|
||||
Geometry.Color.HighlightZero = {255,0,0};
|
||||
Geometry.Color.HighlightOne = {255,150,0};
|
||||
Geometry.Color.HighlightTwo = {255,255,0};
|
||||
Geometry.Color.Tangents = {255,255,0};
|
||||
Geometry.Color.Normals = {255,0,0};
|
||||
Geometry.Color.Projection = {0,255,0};
|
||||
Mesh.Algorithm = 2;
|
||||
Mesh.Algorithm3D = 1;
|
||||
Mesh.AngleSmoothNormals = 30;
|
||||
Mesh.AngleToleranceFacetOverlap = 0.1;
|
||||
Mesh.AnisoMax = 9.999999999999999e+32;
|
||||
Mesh.AllowSwapAngle = 10;
|
||||
Mesh.BdfFieldFormat = 1;
|
||||
Mesh.Binary = 0;
|
||||
Mesh.BoundaryLayerFanPoints = 5;
|
||||
Mesh.CgnsImportOrder = 1;
|
||||
Mesh.CgnsConstructTopology = 0;
|
||||
Mesh.CharacteristicLengthExtendFromBoundary = 1;
|
||||
Mesh.CharacteristicLengthFactor = 1;
|
||||
Mesh.CharacteristicLengthMin = 0;
|
||||
Mesh.CharacteristicLengthMax = 1e+22;
|
||||
Mesh.CharacteristicLengthFromCurvature = 0;
|
||||
Mesh.CharacteristicLengthFromPoints = 1;
|
||||
Mesh.Clip = 0;
|
||||
Mesh.ColorCarousel = 0;
|
||||
Mesh.CompoundClassify = 1;
|
||||
Mesh.CompoundCharacteristicLengthFactor = 0.5;
|
||||
Mesh.CpuTime = 0;
|
||||
Mesh.DrawSkinOnly = 0;
|
||||
Mesh.Dual = 0;
|
||||
Mesh.ElementOrder = 1;
|
||||
Mesh.Explode = 1;
|
||||
Mesh.FlexibleTransfinite = 0;
|
||||
Mesh.NewtonConvergenceTestXYZ = 0;
|
||||
Mesh.Format = 10;
|
||||
Mesh.Hexahedra = 1;
|
||||
Mesh.HighOrderIterMax = 100;
|
||||
Mesh.HighOrderNumLayers = 6;
|
||||
Mesh.HighOrderOptimize = 0;
|
||||
Mesh.HighOrderPassMax = 25;
|
||||
Mesh.HighOrderPeriodic = 0;
|
||||
Mesh.HighOrderPoissonRatio = 0.33;
|
||||
Mesh.HighOrderPrimSurfMesh = 0;
|
||||
Mesh.HighOrderDistCAD = 0;
|
||||
Mesh.HighOrderThresholdMin = 0.1;
|
||||
Mesh.HighOrderThresholdMax = 2;
|
||||
Mesh.LabelSampling = 1;
|
||||
Mesh.LabelType = 0;
|
||||
Mesh.LcIntegrationPrecision = 1e-09;
|
||||
Mesh.Light = 1;
|
||||
Mesh.LightLines = 2;
|
||||
Mesh.LightTwoSide = 1;
|
||||
Mesh.Lines = 1;
|
||||
Mesh.LineNumbers = 0;
|
||||
Mesh.LineWidth = 1;
|
||||
Mesh.MaxNumThreads1D = 0;
|
||||
Mesh.MaxNumThreads2D = 0;
|
||||
Mesh.MaxNumThreads3D = 0;
|
||||
Mesh.MeshOnlyVisible = 0;
|
||||
Mesh.MetisAlgorithm = 1;
|
||||
Mesh.MetisEdgeMatching = 2;
|
||||
Mesh.MetisMaxLoadImbalance = -1;
|
||||
Mesh.MetisObjective = 1;
|
||||
Mesh.MetisMinConn = -1;
|
||||
Mesh.MetisRefinementAlgorithm = 2;
|
||||
Mesh.MinimumCirclePoints = 7;
|
||||
Mesh.MinimumCurvePoints = 3;
|
||||
Mesh.MshFileVersion = 4.1;
|
||||
Mesh.MedFileMinorVersion = -1;
|
||||
Mesh.MedImportGroupsOfNodes = 0;
|
||||
Mesh.MedSingleModel = 0;
|
||||
Mesh.PartitionHexWeight = -1;
|
||||
Mesh.PartitionLineWeight = -1;
|
||||
Mesh.PartitionPrismWeight = -1;
|
||||
Mesh.PartitionPyramidWeight = -1;
|
||||
Mesh.PartitionQuadWeight = -1;
|
||||
Mesh.PartitionTrihedronWeight = 0;
|
||||
Mesh.PartitionTetWeight = -1;
|
||||
Mesh.PartitionTriWeight = -1;
|
||||
Mesh.PartitionCreateTopology = 1;
|
||||
Mesh.PartitionCreatePhysicals = 1;
|
||||
Mesh.PartitionCreateGhostCells = 0;
|
||||
Mesh.PartitionSplitMeshFiles = 0;
|
||||
Mesh.PartitionTopologyFile = 0;
|
||||
Mesh.PartitionOldStyleMsh2 = 1;
|
||||
Mesh.NbHexahedra = 0;
|
||||
Mesh.NbNodes = 27248;
|
||||
Mesh.NbPartitions = 0;
|
||||
Mesh.NbPrisms = 0;
|
||||
Mesh.NbPyramids = 0;
|
||||
Mesh.NbTrihedra = 0;
|
||||
Mesh.NbQuadrangles = 26877;
|
||||
Mesh.NbTetrahedra = 0;
|
||||
Mesh.NbTriangles = 0;
|
||||
Mesh.Normals = 0;
|
||||
Mesh.NumSubEdges = 2;
|
||||
Mesh.Optimize = 1;
|
||||
Mesh.OptimizeThreshold = 0.3;
|
||||
Mesh.OptimizeNetgen = 0;
|
||||
Mesh.Points = 0;
|
||||
Mesh.PointNumbers = 0;
|
||||
Mesh.PointSize = 4;
|
||||
Mesh.PointType = 0;
|
||||
Mesh.Prisms = 1;
|
||||
Mesh.Pyramids = 1;
|
||||
Mesh.Trihedra = 1;
|
||||
Mesh.Quadrangles = 1;
|
||||
Mesh.QualityInf = 0;
|
||||
Mesh.QualitySup = 0;
|
||||
Mesh.QualityType = 2;
|
||||
Mesh.RadiusInf = 0;
|
||||
Mesh.RadiusSup = 0;
|
||||
Mesh.RandomFactor = 1e-09;
|
||||
Mesh.RandomFactor3D = 1e-12;
|
||||
Mesh.RandomSeed = 1;
|
||||
Mesh.PreserveNumberingMsh2 = 0;
|
||||
Mesh.IgnorePeriodicity = 0;
|
||||
Mesh.RecombinationAlgorithm = 1;
|
||||
Mesh.RecombineAll = 0;
|
||||
Mesh.RecombineOptimizeTopology = 5;
|
||||
Mesh.Recombine3DAll = 0;
|
||||
Mesh.Recombine3DLevel = 0;
|
||||
Mesh.Recombine3DConformity = 0;
|
||||
Mesh.RefineSteps = 10;
|
||||
Mesh.Renumber = 1;
|
||||
Mesh.SaveAll = 0;
|
||||
Mesh.SaveElementTagType = 1;
|
||||
Mesh.SaveTopology = 0;
|
||||
Mesh.SaveParametric = 0;
|
||||
Mesh.SaveGroupsOfNodes = 0;
|
||||
Mesh.ScalingFactor = 1;
|
||||
Mesh.SecondOrderExperimental = 0;
|
||||
Mesh.SecondOrderIncomplete = 0;
|
||||
Mesh.SecondOrderLinear = 0;
|
||||
Mesh.Smoothing = 1;
|
||||
Mesh.SmoothCrossField = 0;
|
||||
Mesh.CrossFieldClosestPoint = 1;
|
||||
Mesh.SmoothNormals = 0;
|
||||
Mesh.SmoothRatio = 1.8;
|
||||
Mesh.StlOneSolidPerSurface = 0;
|
||||
Mesh.StlRemoveDuplicateTriangles = 0;
|
||||
Mesh.SubdivisionAlgorithm = 0;
|
||||
Mesh.SurfaceEdges = 0;
|
||||
Mesh.SurfaceFaces = 0;
|
||||
Mesh.SurfaceNumbers = 0;
|
||||
Mesh.SwitchElementTags = 0;
|
||||
Mesh.Tangents = 0;
|
||||
Mesh.Tetrahedra = 1;
|
||||
Mesh.ToleranceEdgeLength = 0;
|
||||
Mesh.ToleranceInitialDelaunay = 1e-08;
|
||||
Mesh.Triangles = 1;
|
||||
Mesh.UnvStrictFormat = 1;
|
||||
Mesh.VolumeEdges = 1;
|
||||
Mesh.VolumeFaces = 0;
|
||||
Mesh.VolumeNumbers = 0;
|
||||
Mesh.Voronoi = 0;
|
||||
Mesh.ZoneDefinition = 0;
|
||||
Mesh.Color.Points = {0,0,255};
|
||||
Mesh.Color.PointsSup = {255,0,255};
|
||||
Mesh.Color.Lines = {0,0,0};
|
||||
Mesh.Color.Triangles = {160,150,255};
|
||||
Mesh.Color.Quadrangles = {130,120,225};
|
||||
Mesh.Color.Tetrahedra = {160,150,255};
|
||||
Mesh.Color.Hexahedra = {130,120,225};
|
||||
Mesh.Color.Prisms = {232,210,23};
|
||||
Mesh.Color.Pyramids = {217,113,38};
|
||||
Mesh.Color.Trihedra = {20,255,0};
|
||||
Mesh.Color.Tangents = {255,255,0};
|
||||
Mesh.Color.Normals = {255,0,0};
|
||||
Mesh.Color.Zero = {255,120,0};
|
||||
Mesh.Color.One = {0,255,132};
|
||||
Mesh.Color.Two = {255,160,0};
|
||||
Mesh.Color.Three = {0,255,192};
|
||||
Mesh.Color.Four = {255,200,0};
|
||||
Mesh.Color.Five = {0,216,255};
|
||||
Mesh.Color.Six = {255,240,0};
|
||||
Mesh.Color.Seven = {0,176,255};
|
||||
Mesh.Color.Eight = {228,255,0};
|
||||
Mesh.Color.Nine = {0,116,255};
|
||||
Mesh.Color.Ten = {188,255,0};
|
||||
Mesh.Color.Eleven = {0,76,255};
|
||||
Mesh.Color.Twelve = {148,255,0};
|
||||
Mesh.Color.Thirteen = {24,0,255};
|
||||
Mesh.Color.Fourteen = {108,255,0};
|
||||
Mesh.Color.Fifteen = {84,0,255};
|
||||
Mesh.Color.Sixteen = {68,255,0};
|
||||
Mesh.Color.Seventeen = {104,0,255};
|
||||
Mesh.Color.Eighteen = {0,255,52};
|
||||
Mesh.Color.Nineteen = {184,0,255};
|
||||
Solver.Executable0 = "";
|
||||
Solver.Executable1 = "";
|
||||
Solver.Executable2 = "";
|
||||
Solver.Executable3 = "";
|
||||
Solver.Executable4 = "";
|
||||
Solver.Executable5 = "";
|
||||
Solver.Executable6 = "";
|
||||
Solver.Executable7 = "";
|
||||
Solver.Executable8 = "";
|
||||
Solver.Executable9 = "";
|
||||
Solver.Name0 = "GetDP";
|
||||
Solver.Name1 = "";
|
||||
Solver.Name2 = "";
|
||||
Solver.Name3 = "";
|
||||
Solver.Name4 = "";
|
||||
Solver.Name5 = "";
|
||||
Solver.Name6 = "";
|
||||
Solver.Name7 = "";
|
||||
Solver.Name8 = "";
|
||||
Solver.Name9 = "";
|
||||
Solver.Extension0 = ".pro";
|
||||
Solver.Extension1 = "";
|
||||
Solver.Extension2 = "";
|
||||
Solver.Extension3 = "";
|
||||
Solver.Extension4 = "";
|
||||
Solver.Extension5 = "";
|
||||
Solver.Extension6 = "";
|
||||
Solver.Extension7 = "";
|
||||
Solver.Extension8 = "";
|
||||
Solver.Extension9 = "";
|
||||
Solver.OctaveInterpreter = "octave";
|
||||
Solver.PythonInterpreter = "python";
|
||||
Solver.RemoteLogin0 = "";
|
||||
Solver.RemoteLogin1 = "";
|
||||
Solver.RemoteLogin2 = "";
|
||||
Solver.RemoteLogin3 = "";
|
||||
Solver.RemoteLogin4 = "";
|
||||
Solver.RemoteLogin5 = "";
|
||||
Solver.RemoteLogin6 = "";
|
||||
Solver.RemoteLogin7 = "";
|
||||
Solver.RemoteLogin8 = "";
|
||||
Solver.RemoteLogin9 = "";
|
||||
Solver.SocketName = ".gmshsock";
|
||||
Solver.AlwaysListen = 0;
|
||||
Solver.AutoArchiveOutputFiles = 0;
|
||||
Solver.AutoCheck = 1;
|
||||
Solver.AutoLoadDatabase = 0;
|
||||
Solver.AutoSaveDatabase = 1;
|
||||
Solver.AutoMesh = 2;
|
||||
Solver.AutoMergeFile = 1;
|
||||
Solver.AutoShowViews = 2;
|
||||
Solver.AutoShowLastStep = 1;
|
||||
Solver.Plugins = 0;
|
||||
Solver.ShowInvisibleParameters = 0;
|
||||
Solver.Timeout = 5;
|
||||
PostProcessing.DoubleClickedGraphPointCommand = "";
|
||||
PostProcessing.GraphPointCommand = "";
|
||||
PostProcessing.AnimationDelay = 0.1;
|
||||
PostProcessing.AnimationCycle = 0;
|
||||
PostProcessing.AnimationStep = 1;
|
||||
PostProcessing.CombineRemoveOriginal = 1;
|
||||
PostProcessing.DoubleClickedGraphPointX = 0;
|
||||
PostProcessing.DoubleClickedGraphPointY = 0;
|
||||
PostProcessing.DoubleClickedView = 0;
|
||||
PostProcessing.ForceElementData = 0;
|
||||
PostProcessing.ForceNodeData = 0;
|
||||
PostProcessing.Format = 10;
|
||||
PostProcessing.GraphPointX = 0;
|
||||
PostProcessing.GraphPointY = 0;
|
||||
PostProcessing.HorizontalScales = 1;
|
||||
PostProcessing.Link = 0;
|
||||
PostProcessing.NbViews = 0;
|
||||
PostProcessing.Plugins = 1;
|
||||
PostProcessing.SaveInterpolationMatrices = 1;
|
||||
PostProcessing.SaveMesh = 1;
|
||||
PostProcessing.Smoothing = 0;
|
||||
Print.ParameterCommand = "Mesh.Clip=1; View.Clip=1; General.ClipWholeElements=1; General.Clip0D=Print.Parameter; SetChanged;";
|
||||
Print.Parameter = 0;
|
||||
Print.ParameterFirst = -1;
|
||||
Print.ParameterLast = 1;
|
||||
Print.ParameterSteps = 10;
|
||||
Print.Background = 0;
|
||||
Print.CompositeWindows = 0;
|
||||
Print.PgfTwoDim = 1;
|
||||
Print.PgfExportAxis = 0;
|
||||
Print.PgfHorizontalBar = 0;
|
||||
Print.DeleteTemporaryFiles = 1;
|
||||
Print.EpsBestRoot = 1;
|
||||
Print.EpsCompress = 0;
|
||||
Print.EpsLineWidthFactor = 1;
|
||||
Print.EpsOcclusionCulling = 1;
|
||||
Print.EpsPointSizeFactor = 1;
|
||||
Print.EpsPS3Shading = 0;
|
||||
Print.EpsQuality = 1;
|
||||
Print.Format = 10;
|
||||
Print.GeoLabels = 1;
|
||||
Print.GeoOnlyPhysicals = 0;
|
||||
Print.GifDither = 0;
|
||||
Print.GifInterlace = 0;
|
||||
Print.GifSort = 1;
|
||||
Print.GifTransparent = 0;
|
||||
Print.Height = -1;
|
||||
Print.JpegQuality = 100;
|
||||
Print.JpegSmoothing = 0;
|
||||
Print.PostElementary = 1;
|
||||
Print.PostElement = 0;
|
||||
Print.PostGamma = 0;
|
||||
Print.PostEta = 0;
|
||||
Print.PostSICN = 0;
|
||||
Print.PostSIGE = 0;
|
||||
Print.PostDisto = 0;
|
||||
Print.TexAsEquation = 0;
|
||||
Print.Text = 1;
|
||||
Print.X3dCompatibility = 0;
|
||||
Print.X3dPrecision = 1e-09;
|
||||
Print.X3dRemoveInnerBorders = 0;
|
||||
Print.X3dTransparency = 0;
|
||||
Print.Width = -1;
|
||||
|
|
@ -9,7 +9,10 @@ MODULE moduleInject
|
|||
REAL(8):: n(1:3) !Direction of injection
|
||||
INTEGER:: nParticles !Number of particles to introduce each time step
|
||||
INTEGER:: pt !Species of injection
|
||||
INTEGER:: nEdges
|
||||
INTEGER, ALLOCATABLE:: edges(:) !Array with edges
|
||||
REAL(8), ALLOCATABLE:: weight(:) !weight of cells for injection
|
||||
REAL(8):: sumWeight
|
||||
CONTAINS
|
||||
PROCEDURE, PASS:: init => initInject
|
||||
PROCEDURE, PASS:: addParticles => addParticlesMaxwellian
|
||||
|
|
@ -22,6 +25,7 @@ MODULE moduleInject
|
|||
CONTAINS
|
||||
SUBROUTINE initInject(self, i, v, n, T, flow, pt, physicalSurface)
|
||||
USE moduleMesh
|
||||
USE moduleMeshCyl
|
||||
USE moduleRefParam
|
||||
USE moduleConstParam
|
||||
USE moduleSpecies
|
||||
|
|
@ -32,7 +36,7 @@ MODULE moduleInject
|
|||
REAL(8), INTENT(in):: v, n(1:3), T(1:3)
|
||||
INTEGER, INTENT(in):: pt, physicalSurface
|
||||
REAL(8), INTENT(in):: flow
|
||||
INTEGER:: nEdges, e, et
|
||||
INTEGER:: e, et
|
||||
INTEGER:: phSurface(1:mesh%numEdges)
|
||||
|
||||
self%id = i
|
||||
|
|
@ -49,17 +53,24 @@ MODULE moduleInject
|
|||
|
||||
END DO
|
||||
|
||||
nEdges = COUNT(phSurface == physicalSurface)
|
||||
ALLOCATE(inject(i)%edges(1:nEdges))
|
||||
self%nEdges = COUNT(phSurface == physicalSurface)
|
||||
ALLOCATE(inject(i)%edges(1:self%nEdges))
|
||||
ALLOCATE(inject(i)%weight(1:self%nEdges))
|
||||
et = 0
|
||||
DO e=1, mesh%numEdges
|
||||
IF (mesh%edges(e)%obj%physicalSurface == physicalSurface) THEN
|
||||
et = et + 1
|
||||
self%edges(et) = mesh%edges(e)%obj%n
|
||||
self%edges(et) = mesh%edges(e)%obj%n
|
||||
SELECT TYPE(edge => mesh%edges(e)%obj)
|
||||
CLASS IS (meshEdgeCyl)
|
||||
self%weight(et) = (edge%r(1)+edge%r(2))/2.D0
|
||||
|
||||
END SELECT
|
||||
|
||||
END IF
|
||||
|
||||
END DO
|
||||
self%sumWeight = SUM(self%weight)
|
||||
nPartInj = nPartInj + self%nParticles
|
||||
|
||||
END SUBROUTINE
|
||||
|
|
@ -70,8 +81,11 @@ MODULE moduleInject
|
|||
REAL(8), INTENT (in):: u, vth
|
||||
REAL(8):: x, y
|
||||
vBC=0.D0
|
||||
x = 0.D0
|
||||
|
||||
x=RAND()
|
||||
DO WHILE (x == 0.D0)
|
||||
x=RAND()
|
||||
END DO
|
||||
y=RAND()
|
||||
|
||||
vBC = u + vth*DSQRT(-2.D0*DLOG(x))*DCOS(2.D0*PI*y)
|
||||
|
|
@ -86,6 +100,8 @@ MODULE moduleInject
|
|||
IMPLICIT NONE
|
||||
|
||||
CLASS(injectGeneric), INTENT(in):: self
|
||||
REAL(8):: randomX
|
||||
INTEGER:: j
|
||||
INTEGER:: randomEdge
|
||||
REAL(8):: randomPos
|
||||
REAL(8):: vVec(1:3), vTh(1:3)
|
||||
|
|
@ -93,15 +109,31 @@ MODULE moduleInject
|
|||
INTEGER:: n1 = 0, n2 = 0
|
||||
!Edge nodes coordinates
|
||||
REAL(8):: p1(1:3) = 0.D0, p2(1:3) = 0.D0
|
||||
INTEGER:: nMin, nMax !Min and Max index in part_inj array
|
||||
INTEGER:: n
|
||||
|
||||
vVec = self%v * self%n
|
||||
vTh = DSQRT(self%T/species(self%pt)%obj%m)
|
||||
|
||||
!Insert particles
|
||||
DO n = 1, self%nParticles
|
||||
!TODO: Adjust for multiple injections
|
||||
nMin = 1
|
||||
nMax = self%nParticles
|
||||
!Assign particle type
|
||||
part_inj(nMin:nMax)%pt = self%pt
|
||||
!Assign weight to particle.
|
||||
part_inj(nMin:nMax)%weight = species(self%pt)%obj%weight
|
||||
part_inj(nMin:nMax)%n_in = .TRUE.
|
||||
DO n = nMin, nMax
|
||||
!Select edge randomly from which inject particle
|
||||
randomEdge = self%edges(INT(RAND()*(SIZE(self%edges)-1)+1))
|
||||
randomX = RAND()*self%sumWeight
|
||||
DO j = 1, self%nEdges
|
||||
IF (randomX < self%weight(j)) EXIT
|
||||
randomX = randomX - self%weight(j)
|
||||
|
||||
END DO
|
||||
|
||||
randomEdge = self%edges(j)
|
||||
|
||||
!Get coordinates of edge nodes
|
||||
SELECT TYPE(edge => mesh%edges(randomEdge)%obj)
|
||||
|
|
@ -132,8 +164,6 @@ MODULE moduleInject
|
|||
|
||||
END IF
|
||||
|
||||
part_inj(n)%pt = self%pt
|
||||
part_inj(n)%n_in = .TRUE.
|
||||
part_inj(n)%v = (/ vBC(vVec(1), vTh(1)), &
|
||||
vBC(vVec(2), vTh(2)), &
|
||||
vBC(vVec(3), vTh(3)) /)
|
||||
|
|
@ -145,6 +175,7 @@ MODULE moduleInject
|
|||
part_inj(n)%r(2) = p1(2) + randomPos*(p2(2) - p1(2))
|
||||
part_inj(n)%r(3) = p1(3) + randomPos*(p2(3) - p1(3))
|
||||
|
||||
|
||||
!Push new particle
|
||||
CALL push(part_inj(n))
|
||||
|
||||
|
|
|
|||
|
|
@ -74,11 +74,11 @@ MODULE moduleInput
|
|||
IF (.NOT. found) CALL criticalError('Reference radius not found','readReference')
|
||||
|
||||
!Derived parameters
|
||||
v_ref = DSQRT(kb*T_ref/m_ref) !reference velocity
|
||||
sigma_ref = PI*(r_ref+r_ref)**2 !reference cross section
|
||||
L_ref = 1.D0/(sigma_ref*n_ref) !mean free path
|
||||
ti_ref = L_ref/v_ref !reference time
|
||||
Vol_ref = L_ref**3 !reference volume
|
||||
v_ref = DSQRT(kb*T_ref/m_ref) !reference velocity
|
||||
|
||||
END SUBROUTINE readReference
|
||||
|
||||
|
|
@ -104,7 +104,10 @@ MODULE moduleInput
|
|||
IF (.NOT. found) CALL criticalError('Required parameter time not found','readCase')
|
||||
|
||||
!Convert simulation time to number of iterations
|
||||
tmax = INT(time/(ti_ref*tau))
|
||||
tmax = INT(time/tau)
|
||||
|
||||
!Makes tau non-dimensional
|
||||
tau = tau / ti_ref
|
||||
|
||||
END SUBROUTINE readCase
|
||||
|
||||
|
|
|
|||
|
|
@ -124,11 +124,12 @@ MODULE moduleMesh
|
|||
|
||||
END SUBROUTINE collision_interface
|
||||
|
||||
SUBROUTINE findCell_interface(self, part)
|
||||
SUBROUTINE findCell_interface(self, part, oldCell)
|
||||
USE moduleSpecies
|
||||
|
||||
IMPORT:: meshVol
|
||||
CLASS(meshVol), INTENT(in):: self
|
||||
CLASS(meshVol), OPTIONAL, INTENT(in):: oldCell
|
||||
CLASS(particle), INTENT(inout):: part
|
||||
|
||||
END SUBROUTINE findCell_interface
|
||||
|
|
|
|||
|
|
@ -404,43 +404,47 @@ MODULE moduleMeshCyl
|
|||
tensorS = outerProduct(part%v, part%v)
|
||||
|
||||
vertex => self%n1%output(part%pt)
|
||||
vertex%den = vertex%den + w_p(1)
|
||||
vertex%mom(:) = vertex%mom(:) + w_p(1)*part%v(:)
|
||||
vertex%tensorS(:,:) = vertex%tensorS(:,:) + w_p(1)*tensorS
|
||||
vertex%den = vertex%den + part%weight*w_p(1)
|
||||
vertex%mom(:) = vertex%mom(:) + part%weight*w_p(1)*part%v(:)
|
||||
vertex%tensorS(:,:) = vertex%tensorS(:,:) + part%weight*w_p(1)*tensorS
|
||||
|
||||
vertex => self%n2%output(part%pt)
|
||||
vertex%den = vertex%den + w_p(2)
|
||||
vertex%mom(:) = vertex%mom(:) + w_p(2)*part%v(:)
|
||||
vertex%tensorS(:,:) = vertex%tensorS(:,:) + w_p(2)*tensorS
|
||||
vertex%den = vertex%den + part%weight*w_p(2)
|
||||
vertex%mom(:) = vertex%mom(:) + part%weight*w_p(2)*part%v(:)
|
||||
vertex%tensorS(:,:) = vertex%tensorS(:,:) + part%weight*w_p(2)*tensorS
|
||||
|
||||
vertex => self%n3%output(part%pt)
|
||||
vertex%den = vertex%den + w_p(3)
|
||||
vertex%mom(:) = vertex%mom(:) + w_p(3)*part%v(:)
|
||||
vertex%tensorS(:,:) = vertex%tensorS(:,:) + w_p(3)*tensorS
|
||||
vertex%den = vertex%den + part%weight*w_p(3)
|
||||
vertex%mom(:) = vertex%mom(:) + part%weight*w_p(3)*part%v(:)
|
||||
vertex%tensorS(:,:) = vertex%tensorS(:,:) + part%weight*w_p(3)*tensorS
|
||||
|
||||
vertex => self%n4%output(part%pt)
|
||||
vertex%den = vertex%den + w_p(4)
|
||||
vertex%mom(:) = vertex%mom(:) + w_p(4)*part%v(:)
|
||||
vertex%tensorS(:,:) = vertex%tensorS(:,:) + w_p(4)*tensorS
|
||||
vertex%den = vertex%den + part%weight*w_p(4)
|
||||
vertex%mom(:) = vertex%mom(:) + part%weight*w_p(4)*part%v(:)
|
||||
vertex%tensorS(:,:) = vertex%tensorS(:,:) + part%weight*w_p(4)*tensorS
|
||||
|
||||
|
||||
END SUBROUTINE scatterQuad
|
||||
|
||||
RECURSIVE SUBROUTINE findCellCylQuad(self, part)
|
||||
RECURSIVE SUBROUTINE findCellCylQuad(self, part, oldCell)
|
||||
USE moduleSpecies
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVolCylQuad), INTENT(in):: self
|
||||
CLASS(meshVol), OPTIONAL, INTENT(in):: oldCell
|
||||
CLASS(particle), INTENT(inout):: part
|
||||
REAL(8):: xLog(1:2)
|
||||
REAL(8):: xLogArray(1:4)
|
||||
CLASS(*), POINTER:: nextElement
|
||||
INTEGER:: nextInt
|
||||
|
||||
|
||||
xLog = self%phy2log(part%r(1:2))
|
||||
IF (self%inside(xLog(1), xLog(2))) THEN
|
||||
!Checks if particle is inside of current cell
|
||||
IF (PRESENT(oldCell)) THEN
|
||||
!If oldCell, recalculate particle weight, as particle has entered a new cell.
|
||||
part%weight = part%weight*oldCell%volume/self%volume
|
||||
END IF
|
||||
part%e_p = self%n
|
||||
part%xLog = xLog
|
||||
ELSE
|
||||
|
|
@ -464,7 +468,7 @@ MODULE moduleMeshCyl
|
|||
SELECT TYPE(nextElement)
|
||||
CLASS IS(meshVolCyl)
|
||||
!Particle moved to new cell, repeat find procedure
|
||||
CALL nextElement%findCell(part)
|
||||
CALL nextElement%findCell(part, self)
|
||||
|
||||
CLASS IS (meshEdgeCyl)
|
||||
!Particle encountered an edge, execute boundary
|
||||
|
|
|
|||
|
|
@ -60,9 +60,12 @@ MODULE moduleOutput
|
|||
formatValues%velocity = 0.D0
|
||||
formatValues%pressure = 0.D0
|
||||
formatValues%temperature = 0.D0
|
||||
tempVol = speciesIn%weight/(nodeVol*Vol_ref)
|
||||
tempVol = 1.D0/(nodeVol*Vol_ref)
|
||||
IF (rawValues%den > 0.D0) THEN
|
||||
tempVel = rawValues%mom(:)/rawValues%den
|
||||
IF ((tempVel(1) - 1.D0) .EQ. tempVel(1)) THEN
|
||||
PRINT *, rawValues%mom
|
||||
END IF
|
||||
tensorTemp = (rawValues%tensorS(:,:) - rawValues%den*outerProduct(tempVel,tempVel))
|
||||
formatValues%density = rawValues%den*tempVol
|
||||
formatValues%velocity(:) = tempVel
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ MODULE moduleSpecies
|
|||
INTEGER:: e_p !Index of element in which the particle is located
|
||||
REAL(8):: xLog(1:2) !Logical coordinates of particle in element e_p.
|
||||
LOGICAL:: n_in !Flag that indicates if a particle is in the domain
|
||||
REAL(8):: weight=0.D0
|
||||
|
||||
END TYPE particle
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue