Book Recommendation for Differential Forms

If anyone is seeking a more formal treatment of differential forms than the (admittedly informal!) description given in class, a good reference is

Abraham, Marsden, Ratiu, “Manifolds, Tensor Analysis, and Applications

Note that an electronic version of this book is available for free for CMU students through the library webpage.

A big difference from the treatment we’ve seen in class is that this book first spends several chapters defining and studying manifolds before introducing differential forms. We instead started with differential forms in \(\mathbb{R}^n\), and will later talk about how to work with them on curves and surfaces. Interestingly enough, however, differential forms in \(\mathbb{R}^n\) is essentially all we need to define discrete differential forms, which in turn are sufficiet to work with “curved” polyhedral surfaces. (The joys of being piecewise Euclidean…)

Assignment 1 (Written): Exterior Calculus (due 2/22)

The written portion of assignment 1 is now available, which covers some of the fundamental tools we’ll be using in our class. Initially this assignment may look a bit intimidating, but the homework is not as long as it might seem: all the text in the big gray blocks contains supplementary, formal definitions that you do not need to know in order to complete the assignments.

Don’t be shy about asking us questions here in the comments, via email, or during office hours.  We want to help you succeed on this assignment, so that you can enjoy all the adventures yet to come…
A1Written

The assignment is due on February 22, 2022 at 5:59:59pm Eastern (not at midnight!).

Reading 4: Exterior Calculus (due 2/17)

The next reading assignment will wrap up our discussion of exterior calculus, both smooth and discrete. In particular, it will explore how to differentiate and integrate \(k\)-forms, and how an important relationship between differentiation and integration (Stokes’ theorem) enables us to turn derivatives into discrete operations on meshes. In particular, the basic data we will work with in the computational setting are “integrals of derivatives,” which amount to simple scalar quantities we can associate with the vertices, edges, faces, etc. of a simplicial mesh. These tools will provide the basis for the algorithms we’ll explore throughout the rest of the semester.

The reading is the remainder of Chapter 4 from the course notes, “A Quick and Dirty Introduction to Exterior Calculus”, Sections 4.6 through 4.8 (pages 67–83). Note that you just have to read these sections; you do not have to do the written exercises; a different set of written problems will be posted later on. The reading is due Thursday, March 11 at 10am. See the assignments page for handin instructions.

Your short 2-3 sentence summary is due by 10am Eastern on February 17, 2022.  Handin instructions can be found on the assignment page.

Assignment 1 (Coding): Exterior Calculus (due 2/22)

For the coding portion of your first assignment, you will implement the discrete exterior calculus (DEC) operators $\star_0, \star_1, \star_2, d_0$ and $d_1$. Once implemented, you will be able to apply these operators to a scalar function (as depicted above) by pressing the “$\star$” and “$d$” button in the viewer. The diagram shown above will be updated to indicate what kind of differential k-form is currently displayed. These basic operations will be the starting point for many of the algorithms we will implement throughout the rest of the class; the visualization (and implementation!) should help you build further intuition about what these operators mean and how they work

Getting Started

  • For this assignment, you need to implement the following routines:
    1. in core/geometry.[js|cpp]
      1. cotan
      2. barycentricDualArea
    2. in core/discrete-exterior-calculus.[js|cpp]
      1. buildHodgeStar0Form
      2. buildHodgeStar1Form
      3. buildHodgeStar2Form
      4. buildExteriorDerivative0Form
      5. buildExteriorDerivative1Form

In practice, a simple and efficient way to compute the cotangent of the angle $\theta$ between two vectors $u$ and $v$ is to use the cross product and the dot product rather than calling any trigonometric functions directly; we ask that you implement your solution this way. (Hint: how are the dot and cross product of two vectors related to the cosine and sine of the angle between them?)

In case we have not yet covered it in class, the barycentric dual area associated with a vertex $i$ is equal to one-third the area of all triangles $ijk$ touching $i$.

EDIT: You can compute the ratio of dual edge lengths to primal edge lengths using the cotan formula, which can be found on Slide 28 of the Discrete Exterior Calculus lecture, or in exercise 36 of the notes (you don’t have to do the exercise for this homework).

Submission Instructions

Please submit your geometry.[js|cpp] and discrete-exterior-calculus.[js|cpp] files to Gradescope.  You should not submit any other source files (and therefore, should not edit any other source files to get your code working!).

The assignment is due on February 22, 2022 at 5:59:59pm Eastern (not at midnight!).

Lecture 4: \(k\)-Forms

Today we continue our journey toward building up (discrete) exterior calculus by talking about how to measure little k-dimensional volumes. Just like rulers measure length, and cups measure volume, k-forms will be used to take measurements of the little k-dimensional volumes or k-vectors that we built up using exterior algebra in our previous lecture. Such measurements will ultimately allow us to talk about integration over curved spaces; in the discrete setting, these measurements will be the basic data we associate with the elements of mesh.