Chi-Tech
test_modules_Diffusion_Diffusion2D_2Unstructured_IP_lua.h
Go to the documentation of this file.
1/** \page test_modules_Diffusion_Diffusion2D_2Unstructured_IP_lua test/modules/Diffusion/Diffusion2D_2Unstructured_IP.lua
2\ingroup LuaInputExamples
3
4\code
5-- 2D Diffusion test with Dirichlet BCs.
6-- SDM: PWLD
7-- Test: Max-value=0.29685
8num_procs = 4
9
10
11
12
13
14--############################################### Check num_procs
15if (check_num_procs==nil and chi_number_of_processes ~= num_procs) then
16 chiLog(LOG_0ERROR,"Incorrect amount of processors. " ..
17 "Expected "..tostring(num_procs)..
18 ". Pass check_num_procs=false to override if possible.")
19 os.exit(false)
20end
21
22--############################################### Setup mesh
23meshgen1 = chi_mesh.MeshGenerator.Create
24({
25 inputs =
26 {
27 chi_mesh.FromFileMeshGenerator.Create
28 ({
29 filename = "../../../resources/TestMeshes/TriangleMesh2x2.obj"
30 })
31 }
32})
33chi_mesh.MeshGenerator.Execute(meshgen1)
34
35--############################################### Set Material IDs
36vol0 = chi_mesh.RPPLogicalVolume.Create({infx=true, infy=true, infz=true})
37chiVolumeMesherSetProperty(MATID_FROMLOGICAL,vol0,0)
38chiVolumeMesherSetupOrthogonalBoundaries()
39
40
41--############################################### Add materials
42materials = {}
43materials[0] = chiPhysicsAddMaterial("Test Material");
44
45chiPhysicsMaterialAddProperty(materials[0],SCALAR_VALUE)
46chiPhysicsMaterialSetProperty(materials[0],SCALAR_VALUE,SINGLE_VALUE,1.0)
47
48--############################################### Setup Physics
49phys1 = chiDiffusionCreateSolver()
50chiSolverSetBasicOption(phys1,"discretization_method","PWLD_MIP")
51chiSolverSetBasicOption(phys1,"residual_tolerance",1.0e-6)
52
53--############################################### Set boundary conditions
54--chiDiffusionSetProperty(phys1,"boundary_type",0,"reflecting",1.0)
55--chiDiffusionSetProperty(phys1,"boundary_type",1,"vacuum",2.0)
56--chiDiffusionSetProperty(phys1,"boundary_type",2,"reflecting",3.0)
57--chiDiffusionSetProperty(phys1,"boundary_type",3,"vacuum",4.0)
58
59--############################################### Initialize and Execute Solver
60chiDiffusionInitialize(phys1)
61chiDiffusionExecute(phys1)
62
63--############################################### Get field functions
64fftemp,count = chiSolverGetFieldFunctionList(phys1)
65
66--############################################### Slice plot
67slice2 = chiFFInterpolationCreate(SLICE)
68chiFFInterpolationSetProperty(slice2,SLICE_POINT,0.0,0.0,0.025)
69chiFFInterpolationSetProperty(slice2,ADD_FIELDFUNCTION,fftemp[1])
70
71chiFFInterpolationInitialize(slice2)
72chiFFInterpolationExecute(slice2)
73
74--############################################### Line plot
75line0 = chiFFInterpolationCreate(LINE)
76chiFFInterpolationSetProperty(line0,LINE_FIRSTPOINT,-1.0,0.01,0.0)
77chiFFInterpolationSetProperty(line0,LINE_SECONDPOINT, 1.0,0.01,0.0)
78chiFFInterpolationSetProperty(line0,LINE_NUMBEROFPOINTS, 100)
79chiFFInterpolationSetProperty(line0,ADD_FIELDFUNCTION,fftemp[1])
80
81chiFFInterpolationInitialize(line0)
82chiFFInterpolationExecute(line0)
83
84--############################################### Volume integrations
85ffi1 = chiFFInterpolationCreate(VOLUME)
86curffi = ffi1
87chiFFInterpolationSetProperty(curffi,OPERATION,OP_MAX)
88chiFFInterpolationSetProperty(curffi,LOGICAL_VOLUME,vol0)
89chiFFInterpolationSetProperty(curffi,ADD_FIELDFUNCTION,fftemp[1])
90
91chiFFInterpolationInitialize(curffi)
92chiFFInterpolationExecute(curffi)
93maxval = chiFFInterpolationGetValue(curffi)
94
95chiLog(LOG_0,string.format("Max-value=%.5f", maxval))
96
97--############################################### Exports
98if (master_export == nil) then
99 chiFFInterpolationExportPython(slice2)
100 chiFFInterpolationExportPython(line0)
101
102 chiExportFieldFunctionToVTK(fftemp,"ZPhi")
103end
104
105--############################################### Plots
106if ((master_export == nil) and (chi_location_id == 0)) then
107 local handle = io.popen("python3 ZPFFI00.py")
108 local handle = io.popen("python3 ZLFFI10.py")
109end
110\endcode
111*/
112
113