[...] It is possible to skip this section and continue with the discretization stage and make use of the initialized data structures
ProcessEquationscreates. With this it is possible to useProcessEquationsas an equation preprocessor, for example, for a new numerical discretization method.
[...]
Currently, the only discretization method available in this framework is the finite element method. Thus, by default, InitializePDEMethodData generates a FEMMethodData object.
1
It is possible to implement a new spatial discretization method to plug in the NDSolve framework? Does anyone tried/succeded in that? There is some reference/tutorial/skeleton implementation like the ones for time integration?
2
Second, related, question. Before the advent of Finite Element Framework in Mathematica 10, how Mathematica solved steady-state, boundary value problems? It is still possible to use the old method?
I know that, under NDSolve's Method option, "PDEDiscretization" only supports "MethodOfLines" and "FiniteElement". With "MethodOfLines" we can apparently enable something like a finite difference discretization with "SpatialDiscretization" -> "TensorProductGrid" but the whole "MethodOfLines" it's unsuitable for steady state, elliptic problems.
FiniteDifferenceDerivativewhich I used in my answer to Finding the eigenfunctions of one and two dimensional Harmonic Oscillator and the previous post linked therein. Since much of the necessary functionality was missing, I ended up hand-rolling things like the relaxation method, e.g., here: Poisson solver using Mathematica – Jens Dec 25 '14 at 04:35NDSolveas a preprocessor, that means parse the PDE coefficients and boundary conditions. See the Finite Element programming tutorial. You'd then write your ownDiscretizePDEandDiscretizeBoundaryConditionsfunction and useLinearSolvedirectly. There is, however, no way to link them intoNDSolveas can be done for the time integration. Would such a feature be helpful for you? If enough people request this I could think about making it available. – user21 Jan 14 '15 at 08:14ProcessEquationsas a preprocessor is indeed an option; after that we can useNDSolvefor time integration as shown in the tutorial (or LinearSolve for steady-state). Currently, I need to compare different spatial discretization and time integration methods for some kind of PDE, so having more than one builtin spatial discretization method and/or the option to plug in NDSolve framework custom dicretization methods in an easy and elegant way like for time integration would be useful. We can then easily switch between methods in an easy to do and easy to understand way. – unlikely Jan 16 '15 at 10:39