Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
gmsh
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Larry Price
gmsh
Commits
17a2f2d3
Commit
17a2f2d3
authored
15 years ago
by
Christophe Geuzaine
Browse files
Options
Downloads
Patches
Plain Diff
some ideas for DG
parent
671d9015
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
contrib/arc/DG.cpp
+72
-0
72 additions, 0 deletions
contrib/arc/DG.cpp
with
72 additions
and
0 deletions
contrib/arc/DG.cpp
0 → 100644
+
72
−
0
View file @
17a2f2d3
class
groupOfElements
{
// tous les elements ont le meme nombre de points de gauss et le
// meme nombre de noeuds
vector
<
MElement
*>
elements
;
// 1) general case
// store Jacobian + det at all gauss points
// or 2) quadrature free
// nothinto store
};
class
MFaceWithAdditionalInfo
:
MFace
{
MElement
*
left
,
*
right
;
// normales pointent vers extérieur du left
// ordre
};
class
groupOfFaces
{
// toutes les faces ont le meme nombre de points points de gauss et
// le meme nombre de noeuds
vector
<
MFaceWithAdditionalInfo
*>
faces
;
//
// stockage normales à tous les points d'intégration
};
class
DG
{
DG
(
vector
<
groupOfElements
*>
&
groups
)
{
// if need to, loop over all elements and store gradients at nodes
}
void
volumeResidual
(
vector
<
groupOfElements
*>
&
groups
,
dofManager
&
dofs
,
conservationLaw
&
law
,
vecteur
&
residual
)
{
// pour chaque groupe:
// 1) calculer aux points de gauss toutes les variables (et leurs
// derivees si besoin est, using node gradients)
// 2) boucler sur les elements, calculer les flux et les stocker
// dans un gros vecteur fx, fy, fz (lineaire en #pts de gauss)
// 3) integrer (sommer) via blas 3 (quadratique)
// 4) premultiplier par inverse de matrice de masse
}
void
boundaryResidual
(
vector
<
groupOfFaces
*>
&
groups
,
dofManager
&
dofs
,
conservationLaw
&
law
,
vecteur
&
residual
)
{
// pour chaque groupe:
// 1) boucler sur les faces et evaluer les variables left et right
// aux points de colloc et stocker dans un gros vecteur
// 2) push sur les points de gauss
// 3) calculer les flux aux points de gauss
// 4) appeler riemanFlux avec left/right
// 5) integrer tout d'un coup via blas
}
// pour l'implicite:
void
assemble
()
{
}
};
class
conservationLaw
{
void
diffusionTerm
(
MElement
*
,
integrationPoints
,
dataVec
in
[
4
],
dataVec
out
[
3
]);
void
convectionTerm
(
MElement
*
,
integrationPoints
,
dataVec
in
,
dataVec
out
[
3
]);
void
massTerm
(
MElement
*
,
integrationPoints
,
dataVec
in
,
dataVec
out
);
void
rhs
(
MElement
*
,
integrationPoints
,
dataVec
in
,
dataVec
out
);
void
riemanFlux
(
MElement
*
ele
[
2
],
dataVec
in
[
2
],
dataVec
out
);
void
maxEigenValue
(
MElement
*
);
// pour le non-linéaire si linearisation sans differences finies
void
linearizeDiffusionFlux
();
void
linearizeConvectionFlux
();
};
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment