Skip to content

Draft: Resolve "Implement a PML in curvilinear coordinates for AcousticPDE"

Description

I want to implement a PML in curvilinear coordinates for the AcousticPDE, corresponding to issue #330.

Here is what I think I have to change so far: I want to implement a PML in curvilinear coordinates for the AcousticPDE, corresponding to issue #330.

Here is what I think I have to change so far:

Notes on the implementation in CFS

  • The new Jakobian and its determinant in form of matrices (tensors), vectors, scalars will be computed in a new class CoefFunctionCurvilinearPML, derived from CoefFunctionPML. This new class must take account for the determination of the layer thickness, the current positions, and it must retrieve the geometry data from the grid class.
    • I will have to get rid of the dependence on the boundinbox function, as this will not work for non-cuboidal shapes.
  • The computation of the geometry parameters (principal directions and curvatures, principal tangential vectors and the normal vector) will be computed somewhere within the Grid class. The quantities should be computed for each node within the layer, starting from the interface and propagating the computation iteratively for each individual layer. The geometry could be computed exploiting CGAL's algorithms. Also, a self implementation would be possible if CGAL is not feasible.
    • The idea is to compute the geometry data on each node and later interpolate the quantities to each integration point. It is not clear yet how this will happen.
  • in AcousticPDE: create new function DefineCurvilinearPMLIntegrators to define the necessary integrators and call the functions for computing the required factors, as well as the Jakobian matrix and its determinant.
    • maybe, by the way, I could outsource the definition of the standard kartesian PML integrators into a separate function DefineKartesianPMLIntegrators...
  • I will need to define an additional attribute in the xml scheme that clarifies that the curvilinear PML should be computed....
    • where do I find the definition of the damping function?
    • where can I set attributes to the PML definition, such as the type of geometry computation?
    • it would be good if it is possible to switch between two modes: automatic computation of the geometry parameters and specifying the known geometry data... maybe via reading a separate parameter file, such as the material file... Maybe even embed the specification into the .mat file?
      • in CFS_PDEbasic.xsd: - here I found the definition of the damping schemes in general, but also a specific one for the PML... -
      • in CFS_PDEacoustic.xsd:
  • I need to build one or more testcases for validation

( mention associated Testsuite merge request by pasting a link )

Check before assigning to a maintainer for review

  • the history is clean
  • code is well documented and understandable
  • there is a testcase (in case of new functionality)
  • every commit passes the pipeline

Maintainer checks before merge

  • Review is approved, and all comments are resolved
  • Check for Testsuite changes, if yes check
    • Testsuite merge request merges fast-forward
    • Testsuite-submodule SHA of every CFS commit references a commit in Testsuite Merge Request
    • Testsuite-submodule SHA of last CFS commit points to HEAD of corresponding Testsuite branch
  • Pipeline passes for every commit
    • all stable tests pass
    • testsuite tests run
    • new tests are actually running (e.g. check if they appear on CDash)

Closes #54 (closed)

Merge request reports

Loading