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

Richards and material models #2188

Merged
merged 6 commits into from Aug 20, 2018

Conversation

Projects
None yet
3 participants
@endJunction
Copy link
Member

endJunction commented Aug 19, 2018

A set of smaller fixes and extension of the unsaturated material model by permeability derivative and second derivative of capillary pressure wrt saturation. The derivatives are used in the RichardsMechanics process implementation in the following PR.

(capillary_pressure < 0.0) ? _minor_offset : capillary_pressure;
double Se = std::pow(pc / _pb, 1.0 / (1.0 - _m)) + 1.0;
Se = std::pow(Se, -_m);
const double pc = std::max(_minor_offset, capillary_pressure);

This comment has been minimized.

@TomFischer

TomFischer Aug 20, 2018

Member

The previous expression and the new one are not equal. For instance if capillary_pressure = 0.1 and _minor_offset = 0.5 the previous expression set pc to 0.1 while the new expression results in pc = 0.5. Is this intended?

This comment has been minimized.

@endJunction

endJunction Aug 20, 2018

Author Member

Intended. This moves the cutoff to correct point; the pc value is set to "minor_offset" not only for non-positive values, but for pc < minor_offset.
With capillary_pressure(x) = x, minor_offset = 0.1, the pc(x = 0.05) = 0.05 in the previous implementation, now it is does not have this "negative tooth" between x = 0 and 0.1.

@@ -77,6 +76,11 @@ double VanGenuchtenCapillaryPressureSaturation::getdPcdS(

return -getdPcdSvGBar(1 - _saturation_r);
}
if (saturation < _saturation_r)
return 0;

This comment has been minimized.

@TomFischer

TomFischer Aug 20, 2018

Member

Is _saturation_r a lower bound? Then I would expect to set the saturation to _saturation_r.

This comment has been minimized.

@endJunction

endJunction Aug 20, 2018

Author Member

This one is indeed correct: there is a cut-off in the function for s < s_r, so the derivative (this function) is 0.

if (saturation < _saturation_r)
return 0;
if (saturation > _saturation_max)
return 0;

This comment has been minimized.

@TomFischer

TomFischer Aug 20, 2018

Member

Why not _saturation_max?

This comment has been minimized.

@endJunction

endJunction Aug 20, 2018

Author Member

Same cut-off in function => derivative = 0

if (_has_regularized)
{
OGS_FATAL("Not implemented.");
/*

This comment has been minimized.

@TomFischer

TomFischer Aug 20, 2018

Member

What is the plan for the commented code? Is it a suggestion for the implementation?

This comment has been minimized.

@endJunction

endJunction Aug 20, 2018

Author Member

Fixing... Added a descriptive error message. Removed the commented section.

@endJunction endJunction force-pushed the endJunction:RichardsAndMaterialModels branch 3 times, most recently from 3ba68e8 to 2dc97b7 Aug 20, 2018

@TomFischer
Copy link
Member

TomFischer left a comment

Thanks for answering questions.

@endJunction endJunction force-pushed the endJunction:RichardsAndMaterialModels branch from 2dc97b7 to 9cecfe4 Aug 20, 2018

@endJunction endJunction merged commit f422073 into ufz:master Aug 20, 2018

3 checks passed

continuous-integration/appveyor/pr AppVeyor build succeeded
Details
continuous-integration/jenkins/pr-merge This commit looks good
Details
deploy/netlify Deploy preview ready!
Details

@endJunction endJunction deleted the endJunction:RichardsAndMaterialModels branch Aug 20, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.