# A 3D Two-Phase Landslide Dynamical Model on GIS Platform
## 3 Experimental Verification
As a 3D CAD modeling tool, FreeCAD is a versatile program compatible with Windows, Linux/Unix, and macOS systems. Notably, FreeCAD can be imported as a Python module into other software applications or within a dedicated standalone Python console, accompanied by its full spectrum of modules and components. So, we integrated FreeCAD as a module into the previously mentioned Python script. Within this script, the \"Mesh\" module of FreeCAD was utilized to import the two three-dimensional geometric models generated earlier. Subsequently, by utilizing functions within the \"Part\" module, we established geometric tolerance for the sewing shape, setting it at 0.1 for this study. Then, we transformed the models into solid entities. These operations correspond to the \"Create shape from mesh\" and \"Convert to solid\" tools available within the Part workbench of the FreeCAD software. Through these sequential steps, we achieved the establishment of geometric model shapes, forming the foundation for subsequent mesh generation. Ultimately, to obtain the geometric model of the landslide, body functions within the \"Part\" module were employed to execute a three-dimensional Boolean operation on the two previously defined geometric models (landslide surface and landslide) (Figure 4). This operation calculated their difference set, resulting in a geometric model of the landslide body with a well-defined shape for subsequent initialization of conditions. Figure 3: The three-dimensional landslide surface and landslide. In the end, we performed numerical simulations on the three-dimensional models using OpenFOAM. OpenFOAM incorporates a suite of mesh generation tools readily available for direct utilization, offering flexibility in accommodating diverse requisites by adjusting distinct dictionary files. In this context, we employ the blockMesh tool to create a hexahedral background grid capable of encompassing the entirety of the landslide. Notably, in this study, the boundary condition assigned to each face is designated as \"wall\", and no unit scaling is applied. Subsequently, we employed the snappyHexMesh tool to generate a mesh for the landslide model by modifying parameters within the snappyHexMeshDict dictionary file. We then used the topoSet and setfields tools to extract grid cells from the area defined by the landslide body's geometric model and set initial conditions. To account for the influence of air during the landslide movement, here we assign \(\alpha=1\) to the extracted grid cells mentioned above, denoting them as representing the landslide body. For the remaining cells, we set \(\alpha=0\), indicating their classification as air. These two fluids were treated as Newtonian fluids. Based on previous studies [48; 49], we designate the mass density of the landslide body as 2150 kg/m\({}^{3}\), viscosity as 100 Pa-s, and kinematic viscosity as 0.0465 m\({}^{2}\)/s. Simultaneously, we designated the mass density of air as 1 kg/m\({}^{3}\) and kinematic viscosity as 1.48 \(\times\) 10\({}^{-5}\) m\({}^{2}\)/s. Furthermore, a surface tension of 0.7 N/m was assigned between the two phases (Table 2). For three-dimensional models, numerical stability issues must be taken into consideration during the solving process. To enhance the stability and accuracy of the computational process, we employed adaptive mesh refinement (AMR) technology. This functionality was implemented by modifying parameters within the dynamicMeshDict dictionary file. Finally we employed the interFoam solver from the multiphase flow solvers to solve the model and generate a comprehensive simulation of the landslide process. In this study, all boundary conditions are designated as \"wall\". The initial field conditions are uniform fields. Within the background field, the four boundary conditions are set to \"zeroGradient\". In the pressure field, four boundary conditions are defined as \"fixedFluxPressure\". For the velocity field, four boundary conditions are specified as \"noSlip\". All other parameters remain at their default values.