{"id":22357267,"url":"https://github.com/mdh266/distributed_poisson_solver","last_synced_at":"2025-06-26T01:03:44.703Z","repository":{"id":93022723,"uuid":"84356471","full_name":"mdh266/Distributed_Poisson_Solver","owner":"mdh266","description":"Distributed Poisson Equation Solver Using The Local Discontinuous Galerkin Method","archived":false,"fork":false,"pushed_at":"2017-04-24T21:04:56.000Z","size":344,"stargazers_count":9,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-06T06:35:11.861Z","etag":null,"topics":["c-plus-plus","dealii","discontinuous-galerkin","distributed-computing","finite-element-methods","high-performance-computing"],"latest_commit_sha":null,"homepage":"https://dealii.org/developer/doxygen/deal.II/code_gallery_Distributed_LDG_Method.html","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mdh266.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-03-08T19:07:55.000Z","updated_at":"2024-11-21T10:55:02.000Z","dependencies_parsed_at":"2023-03-08T11:00:37.180Z","dependency_job_id":null,"html_url":"https://github.com/mdh266/Distributed_Poisson_Solver","commit_stats":{"total_commits":6,"total_committers":1,"mean_commits":6.0,"dds":0.0,"last_synced_commit":"d69840a45c09b727337863e7fc1f1aa97845f648"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mdh266/Distributed_Poisson_Solver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdh266%2FDistributed_Poisson_Solver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdh266%2FDistributed_Poisson_Solver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdh266%2FDistributed_Poisson_Solver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdh266%2FDistributed_Poisson_Solver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdh266","download_url":"https://codeload.github.com/mdh266/Distributed_Poisson_Solver/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdh266%2FDistributed_Poisson_Solver/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261978910,"owners_count":23239417,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-plus-plus","dealii","discontinuous-galerkin","distributed-computing","finite-element-methods","high-performance-computing"],"created_at":"2024-12-04T14:13:45.000Z","updated_at":"2025-06-26T01:03:44.654Z","avatar_url":"https://github.com/mdh266.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Large Scale Distributed Poisson Equation Solver\n\n## Introduction\nThis code is designed to numerically solve the \u003ca href=\"https://en.wikipedia.org/wiki/Poisson's_equation\"\u003ePoisson equation\u003c/a\u003e,\n\n![PoissonEquation](doc/images/Poisson_Eq.png)\n\n\nin 2D and 3D using the \u003ca href=\"http://www.sciencedirect.com/science/article/pii/S0168927406000651\"\u003elocal discontinuous Galerkin (LDG) method\u003c/a\u003e from scratch. \n\n## Why I Wrote This\nThe tutorial codes in the \u003ca href=\"http://dealii.org/\"\u003edeal.ii library\u003c/a\u003e (step-12 and step-39) use the MeshWorker interface to build discontinuous Galerkin (DG) methods. While this is very convenient, I could not use this framework for solving my research roblem and I needed write the LDG method from scratch. I thought it would help for others to have access to this example that goes through writing a discontinuous Galerkin method from scatch and also shows how to do it in a distributed setting using the \u003ca href=\"https://www.trilinos.org\"\u003eTrilinos\u003c/a\u003e library. Therefore, I submitted this code to the \u003ca href=\"http://dealii.org/code-gallery.html\"\u003edeal.II code-gallery\u003c/a\u003e, you can find it \u003ca href=\"https://dealii.org/developer/doxygen/deal.II/code_gallery_Distributed_LDG_Method.html\"\u003ehere\u003c/a\u003e. This example may also be of interest to users that wish to use the LDG method, as the method is distinctly different from the \u003ca href=\"http://www3.nd.edu/~zxu2/acms60790S14/unified-analy-dg-elliptic-eq.pdf\"\u003eInterior Penalty Discontinuous Galerkin (IPDG)\u003c/a\u003e methods and was not covered in other tutorials on DG methods.  \n\n## Why Local Discontinuous Galerkin Methods?\nThe LDG method is very useful when one is working with a differential equation and desires both approximations to the scalar unknown function as well as its flux. The mixed method a method where one can obtain both the scalar unknown function as we as its flux, however, the LDG method has less unknowns to solve for compared to the \u003ca href=\"https://en.wikipedia.org/wiki/Mixed_finite_element_method\"\u003e\nmixed finite element method\u003c/a\u003e when using the \u003ca href=\"https://en.wikipedia.org/wiki/Raviart%E2%80%93Thomas_basis_functions\"\u003eRaviart-Thomas element\u003c/a\u003e. The LDG method also approximates the scalar unknown function and its flux using discontinous polynomial basis function. This makes it much more suitable when one wishes to use local mesh refinement as \u003ca href=\"http://scicomp.stackexchange.com/questions/21372/what-is-a-hanging-node-in-the-finite-element-meshing\"\u003ehanging nodes\u003c/a\u003e are not an issue as they are in the mixed method or other finite element methods. For an introduction do the LDG method, see the write-up [here](doc/Intro.pdf).\n\n\n## Requirements\nThe requirements for this software are,\n1. \u003ca href=\"https://www.dealii.org\"\u003edeal.ii library\u003c/a\u003e version 8.3.0 or higher,\n2. \u003ca href=\"https://www.cmake.org\"\u003eCMake\u003c/a\u003e version 2.8 or higher,\n3. \u003ca href=\"https://www.mpich.org\"\u003eMPI\u003c/a\u003e version 2/3.1.4,\n4. \u003ca href=\"https://www.trilinos.org\"\u003eTrilinos\u003ca/\u003e version 11.12,\n5. \u003ca href=\"http://www.p4est.org\"\u003ep4est\u003ca/\u003e version 1.1,\n6. \u003ca href=\"http://www.paraview.org/\"\u003eParaView\u003c/a\u003e for visualization.\n\n\n## Installation\nFirst obtain and install a copy of the dealii\n\u003ca href=\"https://www.dealii.org\"\u003edeal.ii library\u003c/a\u003e version 8.3.0 or higher as well as the other dependencies.\nSee the dealii library for installation \u003ca href=\"http://dealii.org/8.4.1/index.html\"\u003einstructions\u003c/a\u003e and installation instructions for Trilinos and p4est.\n\n## Compiling\nTo generate a makefile for this code using CMake, type the following command into the terminal from the main directory:\n\n\tcmake . -DDEAL_II_DIR=/path_to_deal.ii\n\nTo compile the code in debug mode use:\n\n\tmake\n\nTo compile the code in release mode use:\n\n\tmake release\t\n\nEither of these commands will create the executable, \u003ccode\u003emain\u003c/code\u003e, however the release mode will make a faster executable.\n\n## Using the code\nTo run the code on \u003ccode\u003eN\u003c/code\u003e processor type the following command into ther terminal from the main directory,\n\n\tmpirun -np N ./main\n\nThe output of the code will be \u003ccode\u003e.vtu\u003c/code\u003e and \u003ccode\u003e.pvtu\u003c/code\u003e and be written to disk in parallel.  The results can be viewed using \u003ca href=\"http://www.paraview.org/\"\u003eParaView\u003c/a\u003e.  An example of the results for a 3D problem are shown below,\n\n![Poisson](doc/images/Poisson.png)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdh266%2Fdistributed_poisson_solver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmdh266%2Fdistributed_poisson_solver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdh266%2Fdistributed_poisson_solver/lists"}