{"id":1986,"date":"2014-01-19T21:10:00","date_gmt":"2014-01-19T21:10:00","guid":{"rendered":"http:\/\/www.amzsaki.com\/?page_id=1986"},"modified":"2020-09-01T02:53:42","modified_gmt":"2020-09-01T02:53:42","slug":"simfem-a-finite-element-package-for-geomechanics","status":"publish","type":"page","link":"https:\/\/www.amzsaki.com\/?page_id=1986","title":{"rendered":"sim|FEM, a finite element package for geomechanics analysis"},"content":{"rendered":"<figure id=\"attachment_1992\" aria-describedby=\"caption-attachment-1992\" style=\"width: 850px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/transitionalmesh.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-1992\" alt=\"transitionalmesh\" src=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/transitionalmesh-1024x844.jpg\" width=\"850\" height=\"515\"><\/a><figcaption id=\"caption-attachment-1992\" class=\"wp-caption-text\">Use of transitional elements reduces computation time while preserving solution accuracy where it matters the most.<\/figcaption><\/figure>\n<p style=\"text-align: justify;\">The development of sim|FEM grew out of the need to analyze problems in geomechanics as part of my research at Concordia University. The program is mainly written by me with the aid of some of my students as part of their research projects. The program is based on finite element theories specifically to analyze displacements and stresses occurring in geologic media. The goal of the program is the computation of displacements and stresses occurring in soils or rocks when subjected to self-weight (gravity) or some form of disturbance, such as the process of excavation, mining or tunnelling. In addition to stress analysis, sim|FEM can compute flow through porous medium as modelled using Laplace&#8217;s equation to represent groundwater flow.&nbsp;Both 2D and 3D elements are implemented in sim|FEM for stress analysis, while thus far only 2D elements exist for groundwater flow.<\/p>\n<p style=\"text-align: justify;\">sim|FEM was conceived to fill the gap existing in commercial software offerings with regard to the ease of expandability and adding new features, while having a full control over the source code. Some of my work is related to the development and use of so called transitional elements. These elements connect meshes with first order (e.g. 4-noded quadrilaterals) to second order (e.g. 8-noded quadrilaterals) using elements that on one of their sides (or faces) have first order interpolation (2 nodes per edge) and on the adjacent side (or face in 3D), second order interpolation (3 nodes per edge). To learn more about the topic, see some of my <a href=\"https:\/\/www.amzsaki.com\/?page_id=37\">papers<\/a>.<\/p>\n<p style=\"text-align: justify;\">Since one of my interests is software optimization for performance, sim|FEM serves as a testbed for the development of efficient solvers arising in the solution of finite element problems. The use of both algorithmic acceleration and software libraries such as Apple&#8217;s Accelerate framework, Nvidia&#8217;s CUDA or OpenCL results is considerable speedups achieved. Some effort has been made to develop parallel solvers using OpenMP and MPI within sim|FEM, but those are not &#8216;officially&#8217; avaliable.<\/p>\n<p style=\"text-align: justify;\">The development environment for sim|FEM is C++ using Apple&#8217;s Xcode environment. Since only pure C++ is used, sim|FEM can be compiled on almost everything, even a coffee grinder, if it supports a C++ compiler. Seriously, it was successfully compiled, in addition to a Mac, under Windows&#8217; Visual Studio, SGI&#8217;s MIPSpro compilers and gcc in Linux.<\/p>\n<p style=\"text-align: justify;\">The following short sections illustrate the current, and ever evolving, capabilities of sim|FEM.<\/p>\n<figure id=\"attachment_2026\" aria-describedby=\"caption-attachment-2026\" style=\"width: 850px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/case02-8noded_quadrilateralsB-04.sfi_s1_contour_plot_mesh.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2026\" alt=\"Principal stresses around two circular excavations.\" src=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/case02-8noded_quadrilateralsB-04.sfi_s1_contour_plot_mesh-794x1024.jpg\" width=\"850\" height=\"806\"><\/a><figcaption id=\"caption-attachment-2026\" class=\"wp-caption-text\">Principal stresses around two circular excavations.<\/figcaption><\/figure>\n<h2 style=\"text-align: justify;\"><\/h2>\n<h2 style=\"text-align: justify;\">Element library<\/h2>\n<p style=\"text-align: justify;\">For groundwater flow analysis the following elements are currently implemented in 2D:<\/p>\n<ul style=\"text-align: justify;\">\n<li>4-noded rectangle<\/li>\n<li>3-noded triangle<\/li>\n<li>6-noded triangle<\/li>\n<li>4-noded quadrilateral<\/li>\n<li>8-noded serendipidity quadrilateral<\/li>\n<li>4-noded transitional triangle<\/li>\n<li>5-noded transitional triangle<\/li>\n<li>5-noded&nbsp;transitional&nbsp;quadrilateral<\/li>\n<li>7-noded&nbsp;transitional&nbsp;quadrilateral<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">For displacement and stress analysis, the following elements are currently implemented in 2D:<\/p>\n<ul style=\"text-align: justify;\">\n<li>3-noded triangle<\/li>\n<li>6-noded triangle<\/li>\n<li>4-noded quadrilateral<\/li>\n<li>8-noded serendipidity quadrilateral<\/li>\n<li>4-noded transitional triangle<\/li>\n<li>5-noded transitional triangle<\/li>\n<li>5-noded&nbsp;transitional&nbsp;quadrilateral<\/li>\n<li>7-noded&nbsp;transitional&nbsp;quadrilateral<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">For displacement and stress analysis&nbsp;<span style=\"font-size: 1rem;\">in 3D,&nbsp;<\/span><span style=\"line-height: 1.714285714; font-size: 1rem;\">the following elements are currently implemented:<\/span><\/p>\n<ul style=\"text-align: justify;\">\n<li>8-noded hexahedron<\/li>\n<li>20-noded hexahedron<\/li>\n<li>12-noded transitional&nbsp;hexahedron<\/li>\n<li>16-noded transitional&nbsp;hexahedron<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">All elements can be used in full or reduced integration mode where applicable for the element.<\/p>\n<figure id=\"attachment_2028\" aria-describedby=\"caption-attachment-2028\" style=\"width: 850px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/case02-8noded_quadrilateralsB-04.sfi_undeformed_mesh.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2028\" alt=\"Mesh comprised of quadrilateral elements discretizing a model of two circular excavations.\" src=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/case02-8noded_quadrilateralsB-04.sfi_undeformed_mesh-1000x1024.jpg\" width=\"850\" height=\"640\"><\/a><figcaption id=\"caption-attachment-2028\" class=\"wp-caption-text\">Mesh comprised of quadrilateral elements discretizing a model of two circular excavations.<\/figcaption><\/figure>\n<h2><\/h2>\n<h2 style=\"text-align: justify;\">Material library<\/h2>\n<p style=\"text-align: justify;\">The material models in sim|FEM can model anisotropic groundwater flow, elastic material model for stress analysis and soil plasticity using a Mohr-Colulomb material model. I am aware that the number of material models is quite limited, but constitutive modelling is not one of my current research priorities. More material models will be implemented as need arises in the future.<\/p>\n<figure id=\"attachment_2030\" aria-describedby=\"caption-attachment-2030\" style=\"width: 850px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/GOLDEN_FlowLeftRight1D.sfi_initial_model.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2030\" alt=\"Mesh for a 1D groundwater flow problem.\" src=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/GOLDEN_FlowLeftRight1D.sfi_initial_model-1024x555.jpg\" width=\"850\" height=\"338\"><\/a><figcaption id=\"caption-attachment-2030\" class=\"wp-caption-text\">Mesh for a 1D groundwater flow problem.<\/figcaption><\/figure>\n<h2>Loading and boundary conditions<\/h2>\n<p style=\"text-align: justify;\">The usual loading and boundary conditions exist in sim|FEM. Groundwater flow can be defined as total heads or fluxes applied at any node of the model. For stress analysis in both 2D and 3D any of the displacements can be restrained or be specified along with nodal loads at any node. Specific to geomechanics, material self-weight acting as a body load can be specified as well. In situ stresses can be applied to the model using a stress block specifying the principal stresses in both 2D and 3D.<\/p>\n<figure id=\"attachment_2041\" aria-describedby=\"caption-attachment-2041\" style=\"width: 850px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/GOLDEN_Rushton_Redshaw_Fig4.8_IrregularTriMesh.sfi_total_head_contour_plot_mesh.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2041\" alt=\"Equipotential contours for a groundwater flow problem for a case of flow under an embankment.\" src=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/GOLDEN_Rushton_Redshaw_Fig4.8_IrregularTriMesh.sfi_total_head_contour_plot_mesh-1024x639.jpg\" width=\"850\" height=\"390\"><\/a><figcaption id=\"caption-attachment-2041\" class=\"wp-caption-text\">Equipotential contours for a groundwater flow problem for a case of flow under an embankment.<\/figcaption><\/figure>\n<h2>Solvers<\/h2>\n<p style=\"text-align: justify;\">Thus far the following solvers exist in sim|FEM. Each of these solution methods were implemented in C++ without relying on third party libraries. However, since I am an Apple guy, there exists a platform optimized version of each method using Apple&#8217;s Accelerate framework, which is based on various BLAS routines. The speedup is admirable, well done Apple!<\/p>\n<ul>\n<li>Gaussian elimination (using full matrix storage)<\/li>\n<li>Gauss-Seidel method&nbsp;(using full matrix storage)<\/li>\n<li>Gauss-Seidel method (using banded matrix storage)<\/li>\n<li>Conjugate Gradient&nbsp;method&nbsp;(using full matrix storage)<\/li>\n<li>Conjugate Gradient&nbsp;method&nbsp;(using banded matrix storage)<\/li>\n<li>Conjugate Gradient&nbsp;method&nbsp;(without assembling the global stiffness matrix)<\/li>\n<\/ul>\n<figure id=\"attachment_2033\" aria-describedby=\"caption-attachment-2033\" style=\"width: 850px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/GOLDEN_FlowLeftRight1D.sfi_total_head_contour_plot_mesh.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2033\" alt=\"Total head contours for the 1D groundwater flow problem.\" src=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/GOLDEN_FlowLeftRight1D.sfi_total_head_contour_plot_mesh-1024x649.jpg\" width=\"850\" height=\"396\"><\/a><figcaption id=\"caption-attachment-2033\" class=\"wp-caption-text\">Total head contours for the 1D groundwater flow problem.<\/figcaption><\/figure>\n<h2>Output<\/h2>\n<p style=\"text-align: justify;\">The philosophy regarding outputs generated by sim|FEM is simple; since it is an academic research code geared toward computation, the time to develop a graphical front end and visualization package cannot be justified at this point. Maybe if I have some free time and don&#8217;t know what else to do&#8230; In addition, results obtained from the program often illustrate some principle or point that has a high likelihood to appear in a publication. There is a strong pressure from publisher to include only high quality figures. Thus, sim|FEM outputs its results as PostScript files. The vector nature of PostScript enables resizing and changing the output images without any loss of quality. What appears on each page is completely scriptable, so the placement of a legend or font sizes for node and element numbering can be changed at will. sim|FEM is capable of generating plots of undeformed and deformed meshes, contour plots and vector plots of the following quantities;<\/p>\n<ul>\n<li>pressure and total head for groundwater flow<\/li>\n<li>displacements and stresses (principal and along any cartesian axis, both normal and shear), and strains (principal and along any cartesian axis, both normal and shear)<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">In addition to graphical output, sim|FEM can produce textual output for all variables along arbitrary lines across a model enabling the creation of plots in various other software packages.<\/p>\n<figure id=\"attachment_2043\" aria-describedby=\"caption-attachment-2043\" style=\"width: 850px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/groundwater002.sfi_total_head_contour_plot_mesh.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2043\" alt=\"Total head contours for the case of flow around a cylinder.\" src=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/groundwater002.sfi_total_head_contour_plot_mesh-1024x859.jpg\" width=\"850\" height=\"524\"><\/a><figcaption id=\"caption-attachment-2043\" class=\"wp-caption-text\">Total head contours for the case of flow around a cylinder.<\/figcaption><\/figure>\n<h2>Gallery of models<\/h2>\n<p style=\"text-align: justify;\">The following few representative examples illustrate the type of problems that can be analyzed using sim|FEM and the potential for graphical output.<\/p>\n<figure id=\"attachment_2045\" aria-describedby=\"caption-attachment-2045\" style=\"width: 850px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/pressurized_cavity_QUAD4L.sfi_displacement_vector_mesh.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2045\" alt=\"Vector plot of displacements around a pressurized cavity.\" src=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/pressurized_cavity_QUAD4L.sfi_displacement_vector_mesh-900x1024.jpg\" width=\"850\" height=\"711\"><\/a><figcaption id=\"caption-attachment-2045\" class=\"wp-caption-text\">Vector plot of displacements around a pressurized cavity.<\/figcaption><\/figure>\n<figure id=\"attachment_2046\" aria-describedby=\"caption-attachment-2046\" style=\"width: 850px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/pressurized_cavity_QUAD4L.sfi_s1_contour_plot_mesh.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2046\" alt=\"Major principal stress contours around a pressurized cavity.\" src=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/pressurized_cavity_QUAD4L.sfi_s1_contour_plot_mesh-794x1024.jpg\" width=\"850\" height=\"806\"><\/a><figcaption id=\"caption-attachment-2046\" class=\"wp-caption-text\">Major principal stress contours around a pressurized cavity.<\/figcaption><\/figure>\n<figure id=\"attachment_2048\" aria-describedby=\"caption-attachment-2048\" style=\"width: 850px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/pressurized_cavity_QUAD8Q.sfi_undeformed_mesh.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2048\" alt=\"undeformed mesh of a pressurized cavity problem discretized using 8-boded quadrilateral elements.\" src=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/pressurized_cavity_QUAD8Q.sfi_undeformed_mesh-794x1024.jpg\" width=\"850\" height=\"806\"><\/a><figcaption id=\"caption-attachment-2048\" class=\"wp-caption-text\">Undeformed mesh of a pressurized cavity problem discretized using 8-noded quadrilateral elements.<\/figcaption><\/figure>\n<figure id=\"attachment_2051\" aria-describedby=\"caption-attachment-2051\" style=\"width: 850px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/pressurized_cavity_QUAD8Q.sfi_ut_contour_plot_mesh.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2051\" alt=\"Contours of total displacement around a pressurized cavity.\" src=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/pressurized_cavity_QUAD8Q.sfi_ut_contour_plot_mesh-794x1024.jpg\" width=\"850\" height=\"806\"><\/a><figcaption id=\"caption-attachment-2051\" class=\"wp-caption-text\">Contours of total displacement around a pressurized cavity.<\/figcaption><\/figure>\n<figure id=\"attachment_2052\" aria-describedby=\"caption-attachment-2052\" style=\"width: 850px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/pressurized_cavity_TRI6Q.sfi_ut_contour_plot_mesh.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2052\" alt=\"The pressurized cavity problem meshed with 6-boded triangle elements showing the displacement contours.\" src=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/pressurized_cavity_TRI6Q.sfi_ut_contour_plot_mesh-794x1024.jpg\" width=\"850\" height=\"806\"><\/a><figcaption id=\"caption-attachment-2052\" class=\"wp-caption-text\">The pressurized cavity problem meshed with 6-noded triangle elements showing the displacement contours.<\/figcaption><\/figure>\n<figure id=\"attachment_2053\" aria-describedby=\"caption-attachment-2053\" style=\"width: 850px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/TRI_TRANS3.sfi_ut_contour_plot_mesh.res_.jpeg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2053\" alt=\"The use of transitional elements, in this case 4-nopded triangles, reduces the number of degrees of freedom and the solution time. Compare the contour plot with the previous ones. No loss of quality, yet considerably shorter solution time.\" src=\"https:\/\/www.amzsaki.com\/wp-content\/uploads\/2014\/01\/TRI_TRANS3.sfi_ut_contour_plot_mesh.res_-794x1024.jpeg\" width=\"850\" height=\"806\"><\/a><figcaption id=\"caption-attachment-2053\" class=\"wp-caption-text\">The use of transitional elements, in this case 4-noded triangles, reduces the number of degrees of freedom and the solution time. Compare the contour plot with the previous ones. No loss of solution accuracy, yet considerably shorter solution time.<\/figcaption><\/figure>\n<p>All text and images copyright of A.M. Zsaki, 2014.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The development of sim|FEM grew out of the need to analyze problems in geomechanics as part of my research at<\/p>\n<p><a href=\"https:\/\/www.amzsaki.com\/?page_id=1986\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\">sim|FEM, a finite element package for geomechanics analysis<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":298,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1986","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.amzsaki.com\/index.php?rest_route=\/wp\/v2\/pages\/1986","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.amzsaki.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.amzsaki.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.amzsaki.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.amzsaki.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1986"}],"version-history":[{"count":58,"href":"https:\/\/www.amzsaki.com\/index.php?rest_route=\/wp\/v2\/pages\/1986\/revisions"}],"predecessor-version":[{"id":3322,"href":"https:\/\/www.amzsaki.com\/index.php?rest_route=\/wp\/v2\/pages\/1986\/revisions\/3322"}],"up":[{"embeddable":true,"href":"https:\/\/www.amzsaki.com\/index.php?rest_route=\/wp\/v2\/pages\/298"}],"wp:attachment":[{"href":"https:\/\/www.amzsaki.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1986"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}