Class notes for week 1, first class

Tasks for today:

Getting a copy

deal.II is open source, i.e. you can download it for free from the internet. However, I also want you to learn how to do modern software development, and so I've put a copy of the software into a subversion repository that we will use collectively throughout the semester.

Subversion is a version control system (similarly to, but more modern than the better known Concurrent Version System CVS, or to git) where a program's source code is located in a central archive. Everyone who wants to work with it can check out a copy into a local directory (this is called your "working copy" since you can edit and work with it). One can then edit and improve that version, and if one is confident that the changes made are reasonable, commit this modified version back into the repository from where others can then get this improved version. Even if one doesn't make any changes, one may want to get the newest version from the repository every once in a while by "updating" one's local copy.

The repository we will use for this class is located at where you can browse the latest version at all times, file by file. Of course getting a package of several thousand files one file at a time is not practical, but this website is only a frontend for the subversion program anyway, so let's use subversion to get the entire package at once by "checking a version out". Everyone of you should create a directory under /data/math676_600 into which this will go, and then populate it with your own copy of the software:

	mkdir /data/math676_600/YOURLASTNAME
	cd  /data/math676_600/YOURLASTNAME
	svn checkout
	cd $HOME
	ln -s /data/math676_600/YOURLASTNAME/deal.II .
The last step creates an "alias" to this directory in your home directory for simplicity. After doing so, you should have a complete copy of the latest state of the library in a subdirectory called deal.II.

You will want to use the visualization program Visit at times. An older version is installed on all calclab machines, but if you want a newer version you can request it by following these steps::

	cp .bashrc bbb
	rm .bashrc
	mv bbb .bashrc
	chmod u+w .bashrc
	echo "export PATH=~bangerth/bin/bin:$PATH" >> .bashrc

For later reference: there is a book on subversion, of which to everyone's delight there is an online version with the entire content at You will probably have to consult this reference sometime in the future.

Installing the library

The next step is to get the library installed. That means, you have to compile the library, and also generate documentation -- as a matter of fact, almost all the documentation you find on the webpage is also available locally, so you can work offline and still have access to the documentation.

To get going, point a browser to the file doc/index.html that is your entry point into the documentation of the library. Select the README link at the left to get to the ReadMe file first -- it describes installation of the library. If you're adventurous, assume that you have all the right software and skip the first part by going straight to the installation instructions. Read those. Then compile the library and create the documentation. The workstations in Blocker 122 all have 4 processors, so you can do make -j4 as indicated in the README file.

From there on

Depending on how much time we will then still have, we will take a look at some parts of the documentation and where to go from there. If you already want to take a look: in the menubar at the left of the readme file (or the index.html file, for that matter), there are entries "Tutorial" and "Manual". The first takes you to a page in which you will find a list of the example programs, starting from rather simple to rather complicated. We will go through several of them in the near future, and most of you will want to take one or the other as the basis for your projects. The "Manual" link leads you to documentation automatically generated by the doxygen program from the deal.II source files. It lists all classes and functions in the library, together with their documentation. The initial "module" view presents a number of modules into which these classes have been grouped, according to their functionality. You will frequently consider this manual if you want to find out whether a certain functionality already exists, or if you have forgotten the meaning and order of arguments to some of the functions.