esys.downunder.dcresistivityforwardmodeling Package

Classes

class esys.downunder.dcresistivityforwardmodeling.DcResistivityForward

Bases: object

This class allows for the solution of dc resistivity forward problems via the calculation of a primary and secondary potential. Conductivity values are to be provided for the primary problem which is a homogeneous half space of a chosen conductivity and for the secondary problem which typically varies it conductivity spatially across the domain. The primary potential acts as a reference point typically based of some know reference conductivity however any value will suffice. The primary potential is implemented to avoid the use of dirac delta functions.

__init__()

This is a skeleton class for all the other forward modeling classes.

checkBounds()
getApparentResistivity()
getElectrodes()

retuns the list of electrodes with locations

getPotential()
class esys.downunder.dcresistivityforwardmodeling.DipoleDipoleSurvey(domain, primaryConductivity, secondaryConductivity, current, a, n, midPoint, directionVector, numElectrodes)

Bases: esys.downunder.dcresistivityforwardmodeling.DcResistivityForward

DipoleDipoleSurvey forward modeling

__init__(domain, primaryConductivity, secondaryConductivity, current, a, n, midPoint, directionVector, numElectrodes)

This is a skeleton class for all the other forward modeling classes.

checkBounds()
getApparentResistivity()
getApparentResistivityPrimary()
getApparentResistivitySecondary()
getApparentResistivityTotal()
getElectrodes()

retuns the list of electrodes with locations

getPotential()

Returns 3 list each made up of a number of list containing primary, secondary and total potentials diferences. Each of the lists contain a list for each value of n.

class esys.downunder.dcresistivityforwardmodeling.LinearPDE(domain, numEquations=None, numSolutions=None, isComplex=False, debug=False)

Bases: esys.escriptcore.linearPDEs.LinearProblem

This class is used to define a general linear, steady, second order PDE for an unknown function u on a given domain defined through a Domain object.

For a single PDE having a solution with a single component the linear PDE is defined in the following form:

-(grad(A[j,l]+A_reduced[j,l])*grad(u)[l]+(B[j]+B_reduced[j])u)[j]+(C[l]+C_reduced[l])*grad(u)[l]+(D+D_reduced)=-grad(X+X_reduced)[j,j]+(Y+Y_reduced)

where grad(F) denotes the spatial derivative of F. Einstein’s summation convention, ie. summation over indexes appearing twice in a term of a sum performed, is used. The coefficients A, B, C, D, X and Y have to be specified through Data objects in Function and the coefficients A_reduced, B_reduced, C_reduced, D_reduced, X_reduced and Y_reduced have to be specified through Data objects in ReducedFunction. It is also allowed to use objects that can be converted into such Data objects. A and A_reduced are rank two, B, C, X, B_reduced, C_reduced and X_reduced are rank one and D, D_reduced, Y and Y_reduced are scalar.

The following natural boundary conditions are considered:

n[j]*((A[i,j]+A_reduced[i,j])*grad(u)[l]+(B+B_reduced)[j]*u)+(d+d_reduced)*u=n[j]*(X[j]+X_reduced[j])+y

where n is the outer normal field. Notice that the coefficients A, A_reduced, B, B_reduced, X and X_reduced are defined in the PDE. The coefficients d and y are each a scalar in FunctionOnBoundary and the coefficients d_reduced and y_reduced are each a scalar in ReducedFunctionOnBoundary.

Constraints for the solution prescribe the value of the solution at certain locations in the domain. They have the form

u=r where q>0

r and q are each scalar where q is the characteristic function defining where the constraint is applied. The constraints override any other condition set by the PDE or the boundary condition.

The PDE is symmetrical if

A[i,j]=A[j,i] and B[j]=C[j] and A_reduced[i,j]=A_reduced[j,i] and B_reduced[j]=C_reduced[j]

For a system of PDEs and a solution with several components the PDE has the form

-grad((A[i,j,k,l]+A_reduced[i,j,k,l])*grad(u[k])[l]+(B[i,j,k]+B_reduced[i,j,k])*u[k])[j]+(C[i,k,l]+C_reduced[i,k,l])*grad(u[k])[l]+(D[i,k]+D_reduced[i,k]*u[k] =-grad(X[i,j]+X_reduced[i,j])[j]+Y[i]+Y_reduced[i]

A and A_reduced are of rank four, B, B_reduced, C and C_reduced are each of rank three, D, D_reduced, X_reduced and X are each of rank two and Y and Y_reduced are of rank one. The natural boundary conditions take the form:

n[j]*((A[i,j,k,l]+A_reduced[i,j,k,l])*grad(u[k])[l]+(B[i,j,k]+B_reduced[i,j,k])*u[k])+(d[i,k]+d_reduced[i,k])*u[k]=n[j]*(X[i,j]+X_reduced[i,j])+y[i]+y_reduced[i]

The coefficient d is of rank two and y is of rank one both in FunctionOnBoundary. The coefficients d_reduced is of rank two and y_reduced is of rank one both in ReducedFunctionOnBoundary.

Constraints take the form

u[i]=r[i] where q[i]>0

r and q are each rank one. Notice that at some locations not necessarily all components must have a constraint.

The system of PDEs is symmetrical if

  • A[i,j,k,l]=A[k,l,i,j]
  • A_reduced[i,j,k,l]=A_reduced[k,l,i,j]
  • B[i,j,k]=C[k,i,j]
  • B_reduced[i,j,k]=C_reduced[k,i,j]
  • D[i,k]=D[i,k]
  • D_reduced[i,k]=D_reduced[i,k]
  • d[i,k]=d[k,i]
  • d_reduced[i,k]=d_reduced[k,i]

LinearPDE also supports solution discontinuities over a contact region in the domain. To specify the conditions across the discontinuity we are using the generalised flux J which, in the case of a system of PDEs and several components of the solution, is defined as

J[i,j]=(A[i,j,k,l]+A_reduced[[i,j,k,l])*grad(u[k])[l]+(B[i,j,k]+B_reduced[i,j,k])*u[k]-X[i,j]-X_reduced[i,j]

For the case of single solution component and single PDE J is defined as

J[j]=(A[i,j]+A_reduced[i,j])*grad(u)[j]+(B[i]+B_reduced[i])*u-X[i]-X_reduced[i]

In the context of discontinuities n denotes the normal on the discontinuity pointing from side 0 towards side 1 calculated from FunctionSpace.getNormal of FunctionOnContactZero. For a system of PDEs the contact condition takes the form

n[j]*J0[i,j]=n[j]*J1[i,j]=(y_contact[i]+y_contact_reduced[i])- (d_contact[i,k]+d_contact_reduced[i,k])*jump(u)[k]

where J0 and J1 are the fluxes on side 0 and side 1 of the discontinuity, respectively. jump(u), which is the difference of the solution at side 1 and at side 0, denotes the jump of u across discontinuity along the normal calculated by jump. The coefficient d_contact is of rank two and y_contact is of rank one both in FunctionOnContactZero or FunctionOnContactOne. The coefficient d_contact_reduced is of rank two and y_contact_reduced is of rank one both in ReducedFunctionOnContactZero or ReducedFunctionOnContactOne. In case of a single PDE and a single component solution the contact condition takes the form

n[j]*J0_{j}=n[j]*J1_{j}=(y_contact+y_contact_reduced)-(d_contact+y_contact_reduced)*jump(u)

In this case the coefficient d_contact and y_contact are each scalar both in FunctionOnContactZero or FunctionOnContactOne and the coefficient d_contact_reduced and y_contact_reduced are each scalar both in ReducedFunctionOnContactZero or ReducedFunctionOnContactOne.

Typical usage:

p = LinearPDE(dom)
p.setValue(A=kronecker(dom), D=1, Y=0.5)
u = p.getSolution()
__init__(domain, numEquations=None, numSolutions=None, isComplex=False, debug=False)

Initializes a new linear PDE.

Parameters:
  • domain (Domain) – domain of the PDE
  • numEquations – number of equations. If None the number of equations is extracted from the PDE coefficients.
  • numSolutions – number of solution components. If None the number of solution components is extracted from the PDE coefficients.
  • debug – if True debug information is printed
addPDEToLumpedSystem(operator, a, b, c, hrz_lumping)

adds a PDE to the lumped system, results depend on domain

Parameters:
  • mat (OperatorAdapter) –
  • rhs (Data) –
  • a (Data) –
  • b (Data) –
  • c (Data) –
  • hrz_lumping (bool) –
addPDEToRHS(righthandside, X, Y, y, y_contact, y_dirac)

adds a PDE to the right hand side, results depend on domain

Parameters:
  • mat (OperatorAdapter) –
  • righthandside (Data) –
  • X (Data) –
  • Y (Data) –
  • y (Data) –
  • y_contact (Data) –
  • y_dirac (Data) –
addPDEToSystem(operator, righthandside, A, B, C, D, X, Y, d, y, d_contact, y_contact, d_dirac, y_dirac)

adds a PDE to the system, results depend on domain

Parameters:
  • mat (OperatorAdapter) –
  • rhs (Data) –
  • A (Data) –
  • B (Data) –
  • C (Data) –
  • D (Data) –
  • X (Data) –
  • Y (Data) –
  • d (Data) –
  • y (Data) –
  • d_contact (Data) –
  • y_contact (Data) –
  • d_dirac (Data) –
  • y_dirac (Data) –
addToRHS(rhs, data)

adds a PDE to the right hand side, results depend on domain

Parameters:
  • mat (OperatorAdapter) –
  • righthandside (Data) –
  • data (list) –
addToSystem(op, rhs, data)

adds a PDE to the system, results depend on domain

Parameters:
  • mat (OperatorAdapter) –
  • rhs (Data) –
  • data (list) –
alteredCoefficient(name)

Announces that coefficient name has been changed.

Parameters:name (string) – name of the coefficient affected
Raises:IllegalCoefficient – if name is not a coefficient of the PDE
Note:if name is q or r, the method will not trigger a rebuild of the system as constraints are applied to the solved system.
checkReciprocalSymmetry(name0, name1, verbose=True)

Tests two coefficients for reciprocal symmetry.

Parameters:
  • name0 (str) – name of the first coefficient
  • name1 (str) – name of the second coefficient
  • verbose (bool) – if set to True or not present a report on coefficients which break the symmetry is printed
Returns:

True if coefficients name0 and name1 are reciprocally symmetric.

Return type:

bool

checkSymmetricTensor(name, verbose=True)

Tests a coefficient for symmetry.

Parameters:
  • name (str) – name of the coefficient
  • verbose (bool) – if set to True or not present a report on coefficients which break the symmetry is printed.
Returns:

True if coefficient name is symmetric

Return type:

bool

checkSymmetry(verbose=True)

Tests the PDE for symmetry.

Parameters:verbose (bool) – if set to True or not present a report on coefficients which break the symmetry is printed.
Returns:True if the PDE is symmetric
Return type:bool
Note:This is a very expensive operation. It should be used for degugging only! The symmetry flag is not altered.
createCoefficient(name)

Creates a Data object corresponding to coefficient name.

Returns:the coefficient name initialized to 0
Return type:Data
Raises:IllegalCoefficient – if name is not a coefficient of the PDE
createOperator()

Returns an instance of a new operator.

createRightHandSide()

Returns an instance of a new right hand side.

createSolution()

Returns an instance of a new solution.

getCoefficient(name)

Returns the value of the coefficient name.

Parameters:name (string) – name of the coefficient requested
Returns:the value of the coefficient
Return type:Data
Raises:IllegalCoefficient – if name is not a coefficient of the PDE
getCurrentOperator()

Returns the operator in its current state.

getCurrentRightHandSide()

Returns the right hand side in its current state.

getCurrentSolution()

Returns the solution in its current state.

getDim()

Returns the spatial dimension of the PDE.

Returns:the spatial dimension of the PDE domain
Return type:int
getDomain()

Returns the domain of the PDE.

Returns:the domain of the PDE
Return type:Domain
getDomainStatus()

Return the status indicator of the domain

getFlux(u=None)

Returns the flux J for a given u.

J[i,j]=(A[i,j,k,l]+A_reduced[A[i,j,k,l]]*grad(u[k])[l]+(B[i,j,k]+B_reduced[i,j,k])u[k]-X[i,j]-X_reduced[i,j]

or

J[j]=(A[i,j]+A_reduced[i,j])*grad(u)[l]+(B[j]+B_reduced[j])u-X[j]-X_reduced[j]

Parameters:u (Data or None) – argument in the flux. If u is not present or equals None the current solution is used.
Returns:flux
Return type:Data
getFunctionSpaceForCoefficient(name)

Returns the FunctionSpace to be used for coefficient name.

Parameters:name (string) – name of the coefficient enquired
Returns:the function space to be used for coefficient name
Return type:FunctionSpace
Raises:IllegalCoefficient – if name is not a coefficient of the PDE
getFunctionSpaceForEquation()

Returns the FunctionSpace used to discretize the equation.

Returns:representation space of equation
Return type:FunctionSpace
getFunctionSpaceForSolution()

Returns the FunctionSpace used to represent the solution.

Returns:representation space of solution
Return type:FunctionSpace
getNumEquations()

Returns the number of equations.

Returns:the number of equations
Return type:int
Raises:UndefinedPDEError – if the number of equations is not specified yet
getNumSolutions()

Returns the number of unknowns.

Returns:the number of unknowns
Return type:int
Raises:UndefinedPDEError – if the number of unknowns is not specified yet
getOperator()

Returns the operator of the linear problem.

Returns:the operator of the problem
getOperatorType()

Returns the current system type.

getRequiredOperatorType()

Returns the system type which needs to be used by the current set up.

getResidual(u=None)

Returns the residual of u or the current solution if u is not present.

Parameters:u (Data or None) – argument in the residual calculation. It must be representable in self.getFunctionSpaceForSolution(). If u is not present or equals None the current solution is used.
Returns:residual of u
Return type:Data
getRightHandSide()

Returns the right hand side of the linear problem.

Returns:the right hand side of the problem
Return type:Data
getShapeOfCoefficient(name)

Returns the shape of the coefficient name.

Parameters:name (string) – name of the coefficient enquired
Returns:the shape of the coefficient name
Return type:tuple of int
Raises:IllegalCoefficient – if name is not a coefficient of the PDE
getSolution()

Returns the solution of the PDE.

Returns:the solution
Return type:Data
getSolverOptions()

Returns the solver options

Return type:SolverOptions
getSystem()

Returns the operator and right hand side of the PDE.

Returns:the discrete version of the PDE
Return type:tuple of Operator and Data
getSystemStatus()

Return the domain status used to build the current system

hasCoefficient(name)

Returns True if name is the name of a coefficient.

Parameters:name (string) – name of the coefficient enquired
Returns:True if name is the name of a coefficient of the general PDE, False otherwise
Return type:bool
initializeSystem()

Resets the system clearing the operator, right hand side and solution.

insertConstraint(rhs_only=False)

Applies the constraints defined by q and r to the PDE.

Parameters:rhs_only (bool) – if True only the right hand side is altered by the constraint
introduceCoefficients(**coeff)

Introduces new coefficients into the problem.

Use:

p.introduceCoefficients(A=PDECoef(…), B=PDECoef(…))

to introduce the coefficients A and B.

invalidateOperator()

Indicates the operator has to be rebuilt next time it is used.

invalidateRightHandSide()

Indicates the right hand side has to be rebuilt next time it is used.

invalidateSolution()

Indicates the PDE has to be resolved if the solution is requested.

invalidateSystem()

Announces that everything has to be rebuilt.

isComplex()

Returns true if this is a complex-valued LinearProblem, false if real-valued.

Return type:bool
isHermitian()

Checks if the pde is indicated to be Hermitian.

Returns:True if a Hermitian PDE is indicated, False otherwise
Return type:bool
Note:the method is equivalent to use getSolverOptions().isHermitian()
isOperatorValid()

Returns True if the operator is still valid.

isRightHandSideValid()

Returns True if the operator is still valid.

isSolutionValid()

Returns True if the solution is still valid.

isSymmetric()

Checks if symmetry is indicated.

Returns:True if a symmetric PDE is indicated, False otherwise
Return type:bool
Note:the method is equivalent to use getSolverOptions().isSymmetric()
isSystemValid()

Returns True if the system (including solution) is still vaild.

isUsingLumping()

Checks if matrix lumping is the current solver method.

Returns:True if the current solver method is lumping
Return type:bool
preservePreconditioner(preserve=True)

Notifies the PDE that the preconditioner should not be reset when making changes to the operator.

Building the preconditioner data can be quite expensive (e.g. for multigrid methods) so if it is known that changes to the operator are going to be minor calling this method can speed up successive PDE solves.

Note:Not all operator types support this.
Parameters:preserve (bool) – if True, preconditioner will be preserved, otherwise it will be reset when making changes to the operator, which is the default behaviour.
reduceEquationOrder()

Returns the status of order reduction for the equation.

Returns:True if reduced interpolation order is used for the representation of the equation, False otherwise
Return type:bool
reduceSolutionOrder()

Returns the status of order reduction for the solution.

Returns:True if reduced interpolation order is used for the representation of the solution, False otherwise
Return type:bool
resetAllCoefficients()

Resets all coefficients to their default values.

resetOperator()

Makes sure that the operator is instantiated and returns it initialized with zeros.

resetRightHandSide()

Sets the right hand side to zero.

resetRightHandSideCoefficients()

Resets all coefficients defining the right hand side

resetSolution()

Sets the solution to zero.

setDebug(flag)

Switches debug output on if flag is True otherwise it is switched off.

Parameters:flag (bool) – desired debug status
setDebugOff()

Switches debug output off.

setDebugOn()

Switches debug output on.

setHermitian(flag=False)

Sets the Hermitian flag to flag.

Parameters:flag (bool) – If True, the Hermitian flag is set otherwise reset.
Note:The method overwrites the Hermitian flag set by the solver options
setHermitianOff()

Clears the Hermitian flag. :note: The method overwrites the Hermitian flag set by the solver options

setHermitianOn()

Sets the Hermitian flag. :note: The method overwrites the Hermitian flag set by the solver options

setReducedOrderForEquationOff()

Switches reduced order off for equation representation.

Raises:RuntimeError – if order reduction is altered after a coefficient has been set
setReducedOrderForEquationOn()

Switches reduced order on for equation representation.

Raises:RuntimeError – if order reduction is altered after a coefficient has been set
setReducedOrderForEquationTo(flag=False)

Sets order reduction state for equation representation according to flag.

Parameters:flag (bool) – if flag is True, the order reduction is switched on for equation representation, otherwise or if flag is not present order reduction is switched off
Raises:RuntimeError – if order reduction is altered after a coefficient has been set
setReducedOrderForSolutionOff()

Switches reduced order off for solution representation

Raises:RuntimeError – if order reduction is altered after a coefficient has been set.
setReducedOrderForSolutionOn()

Switches reduced order on for solution representation.

Raises:RuntimeError – if order reduction is altered after a coefficient has been set
setReducedOrderForSolutionTo(flag=False)

Sets order reduction state for solution representation according to flag.

Parameters:flag (bool) – if flag is True, the order reduction is switched on for solution representation, otherwise or if flag is not present order reduction is switched off
Raises:RuntimeError – if order reduction is altered after a coefficient has been set
setReducedOrderOff()

Switches reduced order off for solution and equation representation

Raises:RuntimeError – if order reduction is altered after a coefficient has been set
setReducedOrderOn()

Switches reduced order on for solution and equation representation.

Raises:RuntimeError – if order reduction is altered after a coefficient has been set
setReducedOrderTo(flag=False)

Sets order reduction state for both solution and equation representation according to flag.

Parameters:flag (bool) – if True, the order reduction is switched on for both solution and equation representation, otherwise or if flag is not present order reduction is switched off
Raises:RuntimeError – if order reduction is altered after a coefficient has been set
setSolution(u, validate=True)

Sets the solution assuming that makes the system valid with the tolrance defined by the solver options

setSolverOptions(options=None)

Sets the solver options.

Parameters:options (SolverOptions or None) – the new solver options. If equal None, the solver options are set to the default.
Note:The symmetry flag of options is overwritten by the symmetry flag of the LinearProblem.
setSymmetry(flag=False)

Sets the symmetry flag to flag.

Parameters:flag (bool) – If True, the symmetry flag is set otherwise reset.
Note:The method overwrites the symmetry flag set by the solver options
setSymmetryOff()

Clears the symmetry flag. :note: The method overwrites the symmetry flag set by the solver options

setSymmetryOn()

Sets the symmetry flag. :note: The method overwrites the symmetry flag set by the solver options

setSystemStatus(status=None)

Sets the system status to status if status is not present the current status of the domain is used.

setValue(**coefficients)

Sets new values to coefficients.

Parameters:
  • coefficients – new values assigned to coefficients
  • A (any type that can be cast to a Data object on Function) – value for coefficient A
  • A_reduced (any type that can be cast to a Data object on ReducedFunction) – value for coefficient A_reduced
  • B (any type that can be cast to a Data object on Function) – value for coefficient B
  • B_reduced (any type that can be cast to a Data object on ReducedFunction) – value for coefficient B_reduced
  • C (any type that can be cast to a Data object on Function) – value for coefficient C
  • C_reduced (any type that can be cast to a Data object on ReducedFunction) – value for coefficient C_reduced
  • D (any type that can be cast to a Data object on Function) – value for coefficient D
  • D_reduced (any type that can be cast to a Data object on ReducedFunction) – value for coefficient D_reduced
  • X (any type that can be cast to a Data object on Function) – value for coefficient X
  • X_reduced (any type that can be cast to a Data object on ReducedFunction) – value for coefficient X_reduced
  • Y (any type that can be cast to a Data object on Function) – value for coefficient Y
  • Y_reduced (any type that can be cast to a Data object on ReducedFunction) – value for coefficient Y_reduced
  • d (any type that can be cast to a Data object on FunctionOnBoundary) – value for coefficient d
  • d_reduced (any type that can be cast to a Data object on ReducedFunctionOnBoundary) – value for coefficient d_reduced
  • y (any type that can be cast to a Data object on FunctionOnBoundary) – value for coefficient y
  • d_contact (any type that can be cast to a Data object on FunctionOnContactOne or FunctionOnContactZero) – value for coefficient d_contact
  • d_contact_reduced (any type that can be cast to a Data object on ReducedFunctionOnContactOne or ReducedFunctionOnContactZero) – value for coefficient d_contact_reduced
  • y_contact (any type that can be cast to a Data object on FunctionOnContactOne or FunctionOnContactZero) – value for coefficient y_contact
  • y_contact_reduced (any type that can be cast to a Data object on ReducedFunctionOnContactOne or ReducedFunctionOnContactZero) – value for coefficient y_contact_reduced
  • d_dirac (any type that can be cast to a Data object on DiracDeltaFunctions) – value for coefficient d_dirac
  • y_dirac (any type that can be cast to a Data object on DiracDeltaFunctions) – value for coefficient y_dirac
  • r (any type that can be cast to a Data object on Solution or ReducedSolution depending on whether reduced order is used for the solution) – values prescribed to the solution at the locations of constraints
  • q (any type that can be cast to a Data object on Solution or ReducedSolution depending on whether reduced order is used for the representation of the equation) – mask for location of constraints
Raises:

IllegalCoefficient – if an unknown coefficient keyword is used

shouldPreservePreconditioner()

Returns true if the preconditioner / factorisation should be kept even when resetting the operator.

Return type:bool
trace(text)

Prints the text message if debug mode is switched on.

Parameters:text (string) – message to be printed
validOperator()

Marks the operator as valid.

validRightHandSide()

Marks the right hand side as valid.

validSolution()

Marks the solution as valid.

class esys.downunder.dcresistivityforwardmodeling.Locator(where, x=array([0., 0., 0.]))

Bases: object

Locator provides access to the values of data objects at a given spatial coordinate x.

In fact, a Locator object finds the sample in the set of samples of a given function space or domain which is closest to the given point x.

__init__(where, x=array([0., 0., 0.]))

Initializes a Locator to access values in Data objects on the Doamin or FunctionSpace for the sample point which is closest to the given point x.

Parameters:
  • where (escript.FunctionSpace) – function space
  • x (numpy.ndarray or list of numpy.ndarray) – location(s) of the Locator
getFunctionSpace()

Returns the function space of the Locator.

getId(item=None)

Returns the identifier of the location.

getValue(data)

Returns the value of data at the Locator if data is a Data object otherwise the object is returned.

getX()

Returns the exact coordinates of the Locator.

setValue(data, v)

Sets the value of the data at the Locator.

class esys.downunder.dcresistivityforwardmodeling.PoleDipoleSurvey(domain, primaryConductivity, secondaryConductivity, current, a, n, midPoint, directionVector, numElectrodes)

Bases: esys.downunder.dcresistivityforwardmodeling.DcResistivityForward

Forward model class for a poledipole setup

__init__(domain, primaryConductivity, secondaryConductivity, current, a, n, midPoint, directionVector, numElectrodes)
Parameters:
  • domain (Domain) – domain of the model
  • primaryConductivity (data) – preset primary conductivity data object
  • secondaryConductivity (data) – preset secondary conductivity data object
  • current (float or int) – amount of current to be injected at the current electrode
  • a (list) – the spacing between current and potential electrodes
  • n (float or int) – multiple of spacing between electrodes. typicaly interger
  • midPoint – midPoint of the survey, as a list containing x,y coords
  • directionVector – two element list specifying the direction the survey should extend from the midpoint
  • numElectrodes (int) – the number of electrodes to be used in the survey must be a multiple of 2 for polepole survey:
checkBounds()
getApparentResistivity()
getApparentResistivityPrimary()
getApparentResistivitySecondary()
getApparentResistivityTotal()
getElectrodes()

retuns the list of electrodes with locations

getPotential()

Returns 3 list each made up of a number of list containing primary, secondary and total potentials diferences. Each of the lists contain a list for each value of n.

class esys.downunder.dcresistivityforwardmodeling.PolePoleSurvey(domain, primaryConductivity, secondaryConductivity, current, a, midPoint, directionVector, numElectrodes)

Bases: esys.downunder.dcresistivityforwardmodeling.DcResistivityForward

Forward model class for a polepole setup

__init__(domain, primaryConductivity, secondaryConductivity, current, a, midPoint, directionVector, numElectrodes)
Parameters:
  • domain (Domain) – domain of the model
  • primaryConductivity (data) – preset primary conductivity data object
  • secondaryConductivity (data) – preset secondary conductivity data object
  • current (float or int) – amount of current to be injected at the current electrode
  • a (list) – the spacing between current and potential electrodes
  • midPoint – midPoint of the survey, as a list containing x,y coords
  • directionVector – two element list specifying the direction the survey should extend from the midpoint
  • numElectrodes (int) – the number of electrodes to be used in the survey must be a multiple of 2 for polepole survey:
checkBounds()
getApparentResistivity()
getApparentResistivityPrimary()
getApparentResistivitySecondary()
getApparentResistivityTotal()
getElectrodes()

retuns the list of electrodes with locations

getPotential()

returns a list containing 3 lists one for each the primary, secondary and total potential.

class esys.downunder.dcresistivityforwardmodeling.SchlumbergerSurvey(domain, primaryConductivity, secondaryConductivity, current, a, n, midPoint, directionVector, numElectrodes)

Bases: esys.downunder.dcresistivityforwardmodeling.DcResistivityForward

Schlumberger survey forward calculation

__init__(domain, primaryConductivity, secondaryConductivity, current, a, n, midPoint, directionVector, numElectrodes)

This is a skeleton class for all the other forward modeling classes.

checkBounds()
getApparentResistivity(delPhiList)
getElectrodeDict()

retuns the electrode dictionary

getElectrodes()

retuns the list of electrodes with locations

getPotential()
getPotentialAnalytic()

Returns 3 list each made up of a number of list containing primary, secondary and total potentials diferences. Each of the lists contain a list for each value of n.

getPotentialNumeric()

Returns 3 list each made up of a number of list containing primary, secondary and total potentials diferences. Each of the lists contain a list for each value of n.

getSourcesSamples()

return a list of tuples of sample locations followed by a list of tuples of source locations.

class esys.downunder.dcresistivityforwardmodeling.WennerSurvey(domain, primaryConductivity, secondaryConductivity, current, a, midPoint, directionVector, numElectrodes)

Bases: esys.downunder.dcresistivityforwardmodeling.DcResistivityForward

WennerSurvey forward calculation

__init__(domain, primaryConductivity, secondaryConductivity, current, a, midPoint, directionVector, numElectrodes)
Parameters:
  • domain (Domain) – domain of the model
  • primaryConductivity (data) – preset primary conductivity data object
  • secondaryConductivity (data) – preset secondary conductivity data object
  • current (float or int) – amount of current to be injected at the current electrode
  • a (list) – the spacing between current and potential electrodes
  • midPoint – midPoint of the survey, as a list containing x,y coords
  • directionVector – two element list specifying the direction the survey should extend from the midpoint
  • numElectrodes (int) – the number of electrodes to be used in the survey must be a multiple of 2 for polepole survey
checkBounds()
getApparentResistivity()
getApparentResistivityPrimary()
getApparentResistivitySecondary()
getApparentResistivityTotal()
getElectrodes()

retuns the list of electrodes with locations

getPotential()

returns a list containing 3 lists one for each the primary, secondary and total potential.

esys.downunder.dcresistivityforwardmodeling.xrange

alias of builtins.range

Functions

esys.downunder.dcresistivityforwardmodeling.saveSilo(filename, domain=None, write_meshdata=False, time=0.0, cycle=0, **data)

Writes Data objects and their mesh to a file using the SILO file format.

Example:

temp=Scalar(..)
v=Vector(..)
saveSilo("solution.silo", temperature=temp, velocity=v)

temp and v are written to “solution.silo” where temp is named “temperature” and v is named “velocity”.

Parameters:
  • filename (str) – name of the output file (‘.silo’ is added if required)
  • domain (escript.Domain) – domain of the Data objects. If not specified, the domain of the given Data objects is used.
  • write_meshdata (bool) – whether to save mesh-related data such as element identifiers, ownership etc. This is mainly useful for debugging.
  • time (float) – the timestamp to save within the file
  • cycle (int) – the cycle (or timestep) of the data
  • <name> – writes the assigned value to the Silo file using <name> as identifier
Note:

All data objects have to be defined on the same domain but they may be defined on separate FunctionSpace s.

Others

  • pi

Packages