Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CellIpData B-Matrix memoization #258

Open
pmueller2 opened this issue May 15, 2018 · 3 comments
Open

CellIpData B-Matrix memoization #258

pmueller2 opened this issue May 15, 2018 · 3 comments

Comments

@pmueller2
Copy link
Collaborator

pmueller2 commented May 15, 2018

Problem:
Using different differential operators with given cellIpData is not possible because the second will not be evaluated but returns the memoized copy of the first.

Possible solution:
Remove the memoization at this point. This is done in removeMemoAtCellIPData.

Maybe this is also the right time to introduce memoization at the interpolations with the NaturalCoordinateMemoizerMap?

@Psirus
Copy link
Contributor

Psirus commented May 16, 2018

I agree on removing this DofType-wise memoization there.

I'm not sure how to implement the reference coordinate memoization. One option would be to stick two NaturalCoordinateMemoizers into the InterpolationSimple base class, and memoize calls to GetB and GetN. However, this would mean that the base class has data and is no longer a pure interface - I don't like it.

Another option would be to add another class, that saves a reference to an InterpolationSimple, two memoizers and forwards the respective calls, but this would mean saving MemoziedInterpolation at the element, and seems too intrusive as well. Any ideas?

@TTitscher
Copy link
Collaborator

TTitscher commented May 17, 2018 via email

@pmueller2
Copy link
Collaborator Author

The reason why this problem showed up was the implementation of an example of the scaled boundary element method. There the differential operator/B-Matrix is splitted into a sum B1+B2 where the first operates on one coordinate that is handled differently than the other.

While for this specific case there are also other solutions I do not know why this restriction to only one differential operator is necessary - performance? I doubt it.

The whole idea of this differential operator class was imho to make adding other types of nablas easier.
The 2nd order electromagnetic wave equations for anisotropic media or for inhomogeneous media contain rotation and vector gradient for one single dof (e.g. E-field) in one equation (although I do not know if they are also present in the weak form - but thats not the point here).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants