-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreport.tex
86 lines (66 loc) · 3.35 KB
/
report.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
\documentclass[english,10pt,a4paper]{article}
\usepackage{geometry}
\geometry{top=3cm, bottom=3cm, left=3cm , right=3cm}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath, amssymb}
\usepackage{graphicx}
\usepackage{booktabs}
\usepackage{hyperref}
\hypersetup{
colorlinks=true,
linkcolor=blue,
filecolor=magenta,
urlcolor=cyan,
}
\title{Project Report: Solving a Poisson-type PDE using FEM in 2D}
\author{Student Name}
\date{\today}
\begin{document}
\maketitle
\tableofcontents
\section{Introduction}
\label{sec:introduction}
This report presents the development of a C++ program to solve a Poisson-type partial differential equation (PDE) using the finite element method (FEM). The project is completed as part of two courses: \textit{C++ for Scientific Computing} and \textit{Project Development and Management}. The objective is to provide a practical implementation combining scientific computing with modern software development practices.
\section{Formulation of the problem}
\label{sec:mathematical_formulation}
The PDE we aim to solve is given by:
\[
-\Delta u = f \quad \text{in} \ \Omega, \quad u = g \quad \text{on} \ \Gamma
\]
where $\Omega \subset \mathbb{R}^2$ is the domain, and $\Gamma$ represents the boundary.
Explain the mathematical formulation of the problem, including the meaning of each term and the boundary conditions.
\section{C++ Code Implementation}
\label{sec:cpp_implementation}
The code implements FEM for solving the PDE. The mesh is generated using \textsc{Gmsh}, and \textsc{Eigen} is used for solving the resulting linear system. Key components include:
\begin{itemize}
\item Mesh reading and storage
\item Assembly of stiffness matrix and load vector
\item Application of boundary conditions
\item Solving the sparse linear system using \textsc{Eigen}
\end{itemize}
Explain the classes and functions used in the code, highlighting the key algorithms and data structures.
Explain your usage of the Eigen library and STL.
\section{CMake}
\section{Software Engineering Practices}
\label{sec:software_practices}
\subsection{Version Control with GitHub}
All code and documentation are tracked in a GitHub repository. Version control ensures proper project management, including:
\begin{itemize}
\item Branching for feature development
\item Commit history for tracking changes
\item Pull requests for code reviews
\end{itemize}
\subsection{Continuous Integration (CI)}
Continuous integration is implemented using GitHub Actions. Upon each push to the repository, the code is automatically built and tested.
\subsection{Dockerization}
A Dockerfile is included in the repository to containerize the project, allowing reproducible builds across different environments.
\section{Numerical Results}
\label{sec:numerical_results}
Results for solving the PDE are obtained using various mesh sizes. Visualizations are generated in \textsc{ParaView}, and numerical integration is validated using quadrature formulas.
\section{Project Conclusion}
\label{sec:conclusion}
The project successfully demonstrates the integration of scientific computing techniques with software engineering practices. The combination of C++ and project management tools allows for reproducible and efficient project execution.
\section*{Appendices}
\subsection*{Source Code}
The source code is available at: \url{https://github.com/your-repository-link}
\end{document}