doc:user:elements:volumes:fluid_iso_hypo_materials
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
doc:user:elements:volumes:fluid_iso_hypo_materials [2016/04/01 15:32] – [FluidHypoMaterial] carretta | doc:user:elements:volumes:fluid_iso_hypo_materials [2017/12/01 12:11] (current) – [NortonHoffHypoMaterial] boemer | ||
---|---|---|---|
Line 10: | Line 10: | ||
$$ | $$ | ||
- | \sigma_{ij} = s_{ij} + \delta_{ij} | + | \sigma_{ij} = s_{ij} + p\delta_{ij} |
$$ | $$ | ||
+ | |||
with sij=0 in a non viscous fluid. | with sij=0 in a non viscous fluid. | ||
The equation which associates pressure and volume is | The equation which associates pressure and volume is | ||
+ | |||
$$ | $$ | ||
- | dP = K \frac{dV}{V} | + | dp = K \frac{dV}{V} |
$$ | $$ | ||
+ | |||
where K is the bulk modulus. | where K is the bulk modulus. | ||
<note warning> | <note warning> | ||
- | Convergence when using this law may be difficult to achieve since there is no stiffness when shearing the material. If you encounter this kind of isssues, you may used **NortonHoffHypoMaterial** discussed below with a low viscosity parameter. | + | Convergence when using this law may be difficult to achieve since there is no stiffness when shearing the material. If you encounter this kind of issue, you may use **NortonHoffHypoMaterial** discussed below with a low viscosity parameter |
</ | </ | ||
Line 35: | Line 38: | ||
=== Description === | === Description === | ||
- | Norton-Hoff law descriding | + | Norton-Hoff law describing |
Stresses are computed with | Stresses are computed with | ||
Line 72: | Line 75: | ||
<note warning> | <note warning> | ||
- | To model low viscosity | + | To model Newtonian fluid with low viscosity (0.3 Pa.s for instance) it is important to use SRI elements instead of SRIPR. Indeed, SRIPR elements might induce oscillations in pressure and velocity fields. This seems to come from the different pressure |
</ | </ | ||
<note important> | <note important> | ||
- | Boundary conditions might also have a huge impact on the convergence and the validity of the results. It is therefore crucial to check the way the elements deform along the boundaries and the corners. | + | Boundary conditions might also have a huge impact on the convergence and the validity of the results. It is therefore crucial to check the way the elements deform along the boundaries and the corners. From these observations, |
</ | </ | ||
<note warning> | <note warning> | ||
- | A good compromise must be reached between the elements size and the time step value. If elements are too small, low viscous fluid elements may reach configurations where Negative | + | A good compromise must be reached between the elements size and the time step value. If elements are too small, low viscous fluid elements may reach configurations where the Jacobian |
</ | </ | ||
Line 114: | Line 117: | ||
- | === Accounting for bulk modulus variation with pressure === | + | === Accounting for bulk modulus |
- | self.p[' | + | As mentionned above, the bulk modulus dependance with pressure must be linear. |
+ | |||
+ | $$ | ||
+ | K(p) = K_0 + \frac{dK}{dp} p | ||
+ | $$ | ||
+ | |||
+ | Therefore two parameters must be provided by the user: the bulk modulus at atmospheric pressure and the derivative dKdp | ||
+ | |||
+ | <note warning> | ||
+ | With Metafor, the pressure is negative in compression. Therefore, the value of dKdp has to be negative (otherwise the bulk modulus would decrease in compression which has no physical meaning). | ||
+ | </ | ||
+ | |||
+ | The function $K(p)$ is provided by the user through a **PythonDirectorOneParameterFunction**: | ||
< | < | ||
Line 144: | Line 159: | ||
</ | </ | ||
+ | The user has more freedom for the viscosity evolution with pressure. The viscosity variation and its derivative have to be provided trough a class similar to the one below | ||
< | < | ||
- | bulkLaw | + | class MyViscoPFunction(PythonDirectorOneParameterFunction): |
- | | + | |
+ | | ||
+ | PythonDirectorOneParameterFunction.__init__(self) | ||
+ | self.debugRefs() | ||
+ | self.p | ||
+ | print "MyViscoPFunction : __init__ finished" | ||
+ | def __del__(self): | ||
+ | print " | ||
+ | print " | ||
+ | exit(1) | ||
+ | def evaluate(self,pres): | ||
+ | if pres> | ||
+ | return self.p[' | ||
+ | else : # pression négative en compression ! | ||
+ | return self.p[' | ||
+ | def computeDerivation(self, | ||
+ | if pres> | ||
+ | return 0.0 | ||
+ | else : | ||
+ | return -self.p[' | ||
+ | </ | ||
+ | |||
+ | The instances of MyBulkFunction and MyViscoPFunction are passed to the Norton-Hoff material law through the commands below | ||
+ | |||
+ | < | ||
+ | bulkLaw | ||
+ | viscoLaw = MyViscoPFunction(p) # <- " | ||
+ | # for parameters dictionnary and not pressure | ||
+ | | ||
materset = domain.getMaterialSet() | materset = domain.getMaterialSet() | ||
materset.define(1, | materset.define(1, | ||
- | materset(1).put(BULK_MODULUS | + | materset(1).put |
- | materset(1).depend(BULK_MODULUS | + | materset(1).depend(BULK_MODULUS , bulkLaw |
+ | materset(1).put | ||
+ | materset(1).depend(NORTON_MU | ||
+ | materset(1).put | ||
+ | materset(1).put | ||
</ | </ | ||
doc/user/elements/volumes/fluid_iso_hypo_materials.1459517575.txt.gz · Last modified: 2016/04/01 15:32 by carretta