proteus.richards.Richards module

class proteus.richards.Richards.ThetaScheme(transport, integrateInterpolationPoints=False)[source]

Bases: BackwardEuler

Set flags that indicate that all terms are implicit.

updateTimeHistory(resetFromDOF=False)[source]

Push necessary information into time history arrays

class proteus.richards.Richards.RKEV(transport, timeOrder=1, runCFL=0.1, integrateInterpolationPoints=False)[source]

Bases: SSP

Set flags that indicate that all terms are implicit.

TimeIntegration = <module 'proteus.TimeIntegration' from '/work/cekees/proteus/proteus/TimeIntegration.py'>[source]
choose_dt()[source]

Modify self.dt

initialize_dt(t0, tOut, q)[source]

Modify self.dt

setCoefficients()[source]

beta are all 1’s here mwf not used right now

updateStage()[source]

Need to switch to use coefficients

initializeTimeHistory(resetFromDOF=True)[source]

Push necessary information into time history arrays

updateTimeHistory(resetFromDOF=False)[source]

assumes successful step has been taken

generateSubsteps(tList)[source]

create list of substeps over time values given in tList. These correspond to stages

resetOrder(order)[source]

initialize data structures for stage updges

setFromOptions(nOptions)[source]

allow classes to set various numerical parameters

class proteus.richards.Richards.Coefficients(nd, Ksw_types, vgm_n_types, vgm_alpha_types, thetaR_types, thetaSR_types, gravity, density, beta, PSK_type='VG', diagonal_conductivity=True, getSeepageFace=None, penalty_constant=None, penalty_power=None, density_model=None, DENSITY_MODEL=None, STABILIZATION_TYPE='Implicit_FCT', ENTROPY_TYPE=2, LUMPED_MASS_MATRIX=False, MONOLITHIC=False, VMS=0.0, SC=0.0, FCT=True, num_fct_iter=1, cE=1.0, uL=0.0, uR=1.0, cK=1.0, outputQuantDOFs=False, forceStrongConditions=False)[source]

Bases: TC_base

version of Re where element material type id’s used in evals

Set the number of components (equations) of the PDE and initialize the dicitionaries describing the form of the coefficients. Strings naming each component (used for viewing and archiving) and a structure defining the sparsity pattern of diffusion tensors may also be provided.

conservativeHeadRichardsMualemVanGenuchtenHetEvaluateV2(rho, beta, gravity, alpha, n, thetaR, thetaSR, KWs, u, mass, dmass, f, df, a, da)[source]
conservativeHeadRichardsMualemVanGenuchten_sd_het(colind, materialTypes, rho, beta, gravity, alpha, n, thetaR, thetaSR, KWs, u, mass, dmass, f, df, a, da, vol_frac, linearize_at_zero, pc_eps)[source]
attachModels(modelList)[source]

Give the TC object access to other models in a loosely coupled split operator formulation (e.g. a transport equation for concentration might get velocity from a flow equation)

preStep(t, firstStep=False)[source]

Give the TC object an opportunity to modify itself before the time step.

initializeMesh(mesh)[source]

Give the TC object access to the mesh for any mesh-dependent information.

initializeElementQuadrature(t, cq)[source]

Give the TC object access to the element quadrature storage

initializeElementBoundaryQuadrature(t, cebq, cebq_global)[source]

Give the TC object access to the element boundary quadrature storage

initializeGlobalExteriorElementBoundaryQuadrature(t, cebqe)[source]

Give the TC object access to the exterior element boundary quadrature storage

evaluate(t, c)[source]

Evaluate the coefficients at a given time, t, using the coefficient storage passed in as the dictionary c.

class proteus.richards.Richards.LevelModel(uDict, phiDict, testSpaceDict, matType, dofBoundaryConditionsDict, dofBoundaryConditionsSetterDict, coefficients, elementQuadrature, elementBoundaryQuadrature, fluxBoundaryConditionsDict=None, advectiveFluxBoundaryConditionsSetterDict=None, diffusiveFluxBoundaryConditionsSetterDictDict=None, stressTraceBoundaryConditionsSetterDict=None, stabilization=None, shockCapturing=None, conservativeFluxDict=None, numericalFluxType=None, TimeIntegrationClass=None, massLumping=False, reactionLumping=False, options=None, name='defaultName', reuse_trial_and_test_quadrature=True, sd=True, movingDomain=False, bdyNullSpace=False)[source]

Bases: OneLevelTransport

Allocate storage and initialize some variables.

Parameters:
  • uDict (dict) – Dictionary of proteus.FemTools.FiniteElementFunction objects.

  • phiDict (dict) – Dictionary of proteus.FemTools.FiniteElementFunction objects.

  • testSpaceDict (dict) – Dictionary of FiniteElementSpace objects

  • dofBoundaryConditionsDict (dict) – Dictionary of DOFBoundaryConditions objects for the Dirichlet conditions.

  • coefficients (proteus.TransportCoefficients.TC_base) – Problem’s Transport Coefficients class.

  • elementQuadratureDict (dict) – Dictionary of dictionaries of quadrature rules for each element integral in each component equation.

  • elementBoundaryQuadratureDict (dict) – Dictionary of dictionaries of quadrature rules for each element boundary integral in each component equation

  • stabilization (bool)

  • shockCapturing (bool)

  • numericalFlux (bool)

  • bdyNullSpace (bool) – Indicates whether the boundary conditions create a global null space.

Notes

The constructor sets the input arguments, calculates dimensions, and allocates storage. The meanings of variable suffixes are

  • global – per physical domain

  • element – per element

  • elementBoundary – per element boundary

The prefix n means ‘number of’.

Storage is divided into quantities required at different sets of points or geometric entities. Each type of storage has a dictionary for all the quantities of that type. The names and dimensions of the storage dictionaries are

  • e – at element

  • q – at element quadrature, unique to elements

  • ebq – at element boundary quadrature, unique to elements

  • ebq_global – at element boundary quadrature, unique to element boundary

  • ebqe – at element boundary quadrature, unique to global, exterior element boundary

  • phi_ip – at the generalized interpolation points required to build a nonlinear phi

nCalls = 0[source]
ghostScatter(*arrays)[source]

Forward-insert (owner -> ghost copy) each free-DOF array. No-op in serial.

With one layer of overlap only the OWNED DOFs have their full element star and their full set of boundary faces on this rank, so anything built by a loop – mDotLow, min/max_m_bc, the Zalesak ratios – is incomplete at a ghost DOF. The edge loops read those arrays at the COLUMN j of an owned row i, and j can be a ghost, so without this the two ranks sharing a cut edge build different f_ij, the antisymmetry f_ij = -f_ji is lost and the correction manufactures mass along the partition. The owner always holds the complete value, so an insert scatter repairs every ghost.

u[0].par_dof is the only ghosted vector this module owns, so the arrays are shuttled through u[0].dof (the same idiom as mphase_co2/m_comp_co2). Integer arrays round-trip exactly: they only ever carry small whole numbers (0/1 flags, material indices).

FCTStep()[source]
kth_FCT_step()[source]
calculateCoefficients()[source]
calculateElementResidual()[source]

Calculate all the element residuals

getResidual(u, r)[source]

Calculate the element residuals and add in to the global residual

invert(u, r=None, ulow=None)[source]

Unified invert method that handles both standard and FCT modes using self.coefficients.FCT as the switching flag.

getJacobian(jacobian)[source]
calculateElementQuadrature()[source]

Calculate the physical location and weights of the quadrature rules and the shape information at the quadrature points.

This function should be called only when the mesh changes.

calculateElementBoundaryQuadrature()[source]

Calculate the physical location and weights of the quadrature rules and the shape information at the quadrature points on element boundaries.

This function should be called only when the mesh changes.

calculateExteriorElementBoundaryQuadrature()[source]

Calculate the physical location and weights of the quadrature rules and the shape information at the quadrature points on global element boundaries.

This function should be called only when the mesh changes.

estimate_mt()[source]
calculateSolutionAtQuadrature()[source]
calculateAuxiliaryQuantitiesAfterStep()[source]