Passer au contenu principal
SciNet
  • Accueil
  • Tous les cours
  • Calendrier
  • Certificats
  • SciNet
    Site principal Documentation my.SciNet
  • CCDB
  • Plus
Fermer
Activer/désactiver la saisie de recherche
Français
English Français
Vous êtes connecté anonymement
Connexion
SciNet
Accueil Tous les cours Calendrier Certificats SciNet Replier Déplier
Site principal Documentation my.SciNet
CCDB
Tout déplier Tout replier
  1. Tableau de bord
  2. PHY1610 - Winter 2023
  3. Assignment 3: Modularize with make and git

Assignment 3: Modularize with make and git

Conditions d’achèvement
Ouvert le : vendredi 27 janvier 2023, 00:00
À rendre : vendredi 3 février 2023, 23:59

The program wave1d.cpp (available below) solves the damped 1-dim wave equation:
$$\frac{\partial^2u}{\partial t^2} - c^2 \frac{\partial^2u}{\partial x^2} + \frac{1}{\tau} \frac{\partial u}{\partial t} = 0$$

with boundary conditions
$$u(x_1)=0 $$ $$u(x_2)=0$$
and initial conditions of a triangle form:
$$u(x,0)=\begin{cases}0&\mbox{if}\quad{}x<x_1+L/4\\(x-x_1-L/4)/L&\mbox{if}\quad{}x_1+L/4<x<(x_1+x_2)/2\\\frac{1}{2}-(x-x_1-L/4)/L&\mbox{if}\quad{}(x_1+x_2)/2<x<x_2-L/4\\0&\mbox{if}\quad{}x>x_2-L/4\end{cases}$$
where $$L=x_2-x_1$$.

Compilation of the code can be done with the command

 g++ -std=c++17 -O2 wave1d.cpp -o wave1d

or using the make command, which requires the Makefile supplied below.  On the Teach cluster, this code requires loading the "gcc/12" module.

Running the code should be done with the command 

 ./wave1d waveparams.txt

or with the command "make run", which will run the simulation with the parameters in the file waveparams.txt (also available below).  

The source code (wave1d.cpp), makefile (Makefile) and parameter file (waveparams.txt) should all be saved in the same folder.

ASSIGNMENT:

Modify this code into a new, modularized version:

  • First, create a local git repository and put in the existing code, Makefile, and input file.
  • Ensure the program runs and then save its output under a new name. You will be modifying the code and this saved output will be your check that the program's output has not changed.
  • Create as many functions (headers and implementation files, do not forget preprocessor guards) as you find reasonable/necessary (e.g., input,output,parameters,single-step solver, driver, etc. -- you should at least have three modules!)
  • Update the Makefile to compile this modular project. Remember to include rules for each module, compilation and optimization flags, a clean rule, etc...
  • You can do this step by step.
  • We expect you to have detailed git commits during this refactoring exercise, with meaning full comments.

The original file should in the end only contain the main function, which solves the same problem as the original code by calling functions in the modules.

Please submit to this web site:

  • A zip file or tar file with the most recently committed working source tree including the .git subdirectory.  See https://education.scinet.utoronto.ca/mod/page/view.php?id=2170 for tips on how to do that.
  • The output file generated after running your implemented modular version of the code.

Deadline: Friday February 3, 2023, at 11:59pm.

Late penalty policy: as usual, you can submit up to seven days late, but you will get 5% taken off for each day you submitted late. Also note that if you submit the different parts of your work at different times, the last submission date is taken as the submission of the whole.


  • Makefile Makefile
    27 janvier 2023, 11:19
  • wave1d.cpp wave1d.cpp
    27 janvier 2023, 11:19
  • waveparams.txt waveparams.txt
    27 janvier 2023, 11:19
Contacter l’assistance du site
Vous êtes connecté anonymement (Connexion)
Résumé de conservation de données


All content on this website is made available under the Creative Commons Attribution 4.0 International licence, with the exception of all videos which are released under the Creative Commons Attribution-NoDerivatives 4.0 International licence.
Fourni par Moodle