Comments (3)
In commit 4a77258 I have introduced a first multi field driver. However, much of refactoring needs to be done:
Thinks to change in the public API:
- Smarter way of defining bilinear and linear forms. When solving this, one also wants to solve the fact that up to now we have to use
varinner
instead ofinner
(both in single-field and multi-field drivers) - Do not expose the name
LinearMultiFESolver
(related with the changes to be done in the backend)
In the back-end:
- For the moment, a lot of code duplication is taking place between
FEOperators
andMultiFEOperators
modules. In order to solve this, we have to introduce some extra abstract types that serve as umbrella of the single field types (FESpace
,FEFunction
, ...) and the multi-field ones (MultiFESpace
,MultiFEFunction
). ThenFEOperator
andFESolver
should be written in tems of the umbrella types, avoiding code duplicaiton. The umbrella types can be named, e.g., (FESpaceLike
,FEFunctionLike
, ...) as I have seen in some julia packages. The other option, would be to delete single field types and consider only multi-field ones as single field is a degenerated case. However, I would not follow this approach at all. Multi-field types are only very simple wrappers around the single field ones. The complex part is in the single field types, and I don't want to increase the complexity of this (already complex) code exposing the fact that we have several fields. I prefer to grow the code layer by layer and keep things as separated as possible.
from gridap.jl.
The tasks above have been accomplished in commit 3c71346
However, we have not adopted the option of introducing the umbrella types commented above. This does not work since we don't have multiple inheritance. (FEFunction already inherits from IterCellField
). To circumvent, this we have used duck typing for implementing FEOpertors
and FESolvers
in a generic way.
from gridap.jl.
With commit 9ebdf55, Gridap supports (volume-coupled) multi field problems both linear and non-linear.
Enhancements can be done in the underlying implementation, but the public API is not likely to change.
Enhancements can be done in other issues labeled as enhancement
.
Closing issue.
from gridap.jl.
Related Issues (20)
- Visualization of the solution of a multifield time dependant problem
- non-deterministic matrix assembly for multiple domains HOT 6
- Extraction of Neumann boundary
- Runge Kutta methods for linear operators only HOT 4
- Normal displacement boundary condition in linear elasticity problems HOT 3
- To-think: a less restrictive type for the type of the operator in `LinearSolver` abstract interface?
- Eigen-values and vectors of SymTensorValue HOT 3
- Refactoring of the ODE module
- Solving non-linear coupled PDEs HOT 2
- Gridap and solvers from DifferentialEquations.jl HOT 7
- Neumann boundary conditions and different geometries HOT 3
- Computing gradient wrt Dirichlet data
- confusion about vectors sizes HOT 4
- `MultiFieldFESpace` with complex numbers HOT 2
- Error with the function `_point_to_cell ` when using a triangular mesh
- Wrong result when multiplying integrand with scalar when using `InterfaceTriangulation`
- Incorrect Assertion on boundary faces integral HOT 3
- ode_start() in Generalized_Alpha results into singular system HOT 2
- Leftover ideas for ODEs
- `mean` operator + `SkeletonPair`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gridap.jl.