esys.downunder.dcresistivityforwardmodeling Package¶
Classes¶
DcResistivityForwardDipoleDipoleSurveyLinearPDELocatorPoleDipoleSurveyPolePoleSurveySchlumbergerSurveyWennerSurveyxrange
-
class
esys.downunder.dcresistivityforwardmodeling.DcResistivityForward¶ Bases:
objectThis 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.DcResistivityForwardDipoleDipoleSurvey 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.LinearProblemThis class is used to define a general linear, steady, second order PDE for an unknown function u on a given domain defined through a
Domainobject.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
Dataobjects inFunctionand the coefficients A_reduced, B_reduced, C_reduced, D_reduced, X_reduced and Y_reduced have to be specified throughDataobjects inReducedFunction. It is also allowed to use objects that can be converted into suchDataobjects. 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
FunctionOnBoundaryand the coefficients d_reduced and y_reduced are each a scalar inReducedFunctionOnBoundary.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 inReducedFunctionOnBoundary.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]
LinearPDEalso 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 asJ[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.getNormalofFunctionOnContactZero. For a system of PDEs the contact condition takes the formn[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 inFunctionOnContactZeroorFunctionOnContactOne. The coefficient d_contact_reduced is of rank two and y_contact_reduced is of rank one both inReducedFunctionOnContactZeroorReducedFunctionOnContactOne. In case of a single PDE and a single component solution the contact condition takes the formn[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
FunctionOnContactZeroorFunctionOnContactOneand the coefficient d_contact_reduced and y_contact_reduced are each scalar both inReducedFunctionOnContactZeroorReducedFunctionOnContactOne.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
Nonethe number of equations is extracted from the PDE coefficients. - numSolutions – number of solution components. If
Nonethe number of solution components is extracted from the PDE coefficients. - debug – if True debug information is printed
- domain (
-
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) –
- mat (
-
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) –
- mat (
-
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) –
- mat (
-
addToRHS(rhs, data)¶ adds a PDE to the right hand side, results depend on domain
Parameters: - mat (
OperatorAdapter) – - righthandside (
Data) – - data (
list) –
- mat (
-
addToSystem(op, rhs, data)¶ adds a PDE to the system, results depend on domain
Parameters: - mat (
OperatorAdapter) – - rhs (
Data) – - data (
list) –
- mat (
-
alteredCoefficient(name)¶ Announces that coefficient
namehas been changed.Parameters: name ( string) – name of the coefficient affectedRaises: IllegalCoefficient – if nameis not a coefficient of the PDENote: if nameis 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
name0andname1are reciprocally symmetric.Return type: bool- name0 (
-
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
nameis symmetricReturn type: bool- name (
-
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: boolNote: This is a very expensive operation. It should be used for degugging only! The symmetry flag is not altered.
-
createCoefficient(name)¶ Creates a
Dataobject corresponding to coefficientname.Returns: the coefficient nameinitialized to 0Return type: DataRaises: IllegalCoefficient – if nameis 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 requestedReturns: the value of the coefficient Return type: DataRaises: IllegalCoefficient – if nameis 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 ( Dataor None) – argument in the flux. If u is not present or equalsNonethe current solution is used.Returns: flux Return type: Data
-
getFunctionSpaceForCoefficient(name)¶ Returns the
FunctionSpaceto be used for coefficientname.Parameters: name ( string) – name of the coefficient enquiredReturns: the function space to be used for coefficient nameReturn type: FunctionSpaceRaises: IllegalCoefficient – if nameis not a coefficient of the PDE
-
getFunctionSpaceForEquation()¶ Returns the
FunctionSpaceused to discretize the equation.Returns: representation space of equation Return type: FunctionSpace
-
getFunctionSpaceForSolution()¶ Returns the
FunctionSpaceused 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: intRaises: UndefinedPDEError – if the number of equations is not specified yet
-
getNumSolutions()¶ Returns the number of unknowns.
Returns: the number of unknowns Return type: intRaises: 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 ( Dataor None) – argument in the residual calculation. It must be representable inself.getFunctionSpaceForSolution(). If u is not present or equalsNonethe 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 enquiredReturns: the shape of the coefficient nameReturn type: tupleofintRaises: IllegalCoefficient – if nameis 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: tupleofOperatorandData
-
getSystemStatus()¶ Return the domain status used to build the current system
-
hasCoefficient(name)¶ Returns True if
nameis the name of a coefficient.Parameters: name ( string) – name of the coefficient enquiredReturns: True if nameis the name of a coefficient of the general PDE, False otherwiseReturn 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: boolNote: 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: boolNote: 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
flagis 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 offRaises: 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 offRaises: 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 offRaises: 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 ( SolverOptionsorNone) – the new solver options. If equalNone, 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
statusifstatusis 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
Dataobject onFunction) – value for coefficientA - A_reduced (any type that can be cast to a
Dataobject onReducedFunction) – value for coefficientA_reduced - B (any type that can be cast to a
Dataobject onFunction) – value for coefficientB - B_reduced (any type that can be cast to a
Dataobject onReducedFunction) – value for coefficientB_reduced - C (any type that can be cast to a
Dataobject onFunction) – value for coefficientC - C_reduced (any type that can be cast to a
Dataobject onReducedFunction) – value for coefficientC_reduced - D (any type that can be cast to a
Dataobject onFunction) – value for coefficientD - D_reduced (any type that can be cast to a
Dataobject onReducedFunction) – value for coefficientD_reduced - X (any type that can be cast to a
Dataobject onFunction) – value for coefficientX - X_reduced (any type that can be cast to a
Dataobject onReducedFunction) – value for coefficientX_reduced - Y (any type that can be cast to a
Dataobject onFunction) – value for coefficientY - Y_reduced (any type that can be cast to a
Dataobject onReducedFunction) – value for coefficientY_reduced - d (any type that can be cast to a
Dataobject onFunctionOnBoundary) – value for coefficientd - d_reduced (any type that can be cast to a
Dataobject onReducedFunctionOnBoundary) – value for coefficientd_reduced - y (any type that can be cast to a
Dataobject onFunctionOnBoundary) – value for coefficienty - d_contact (any type that can be cast to a
Dataobject onFunctionOnContactOneorFunctionOnContactZero) – value for coefficientd_contact - d_contact_reduced (any type that can be cast to a
Dataobject onReducedFunctionOnContactOneorReducedFunctionOnContactZero) – value for coefficientd_contact_reduced - y_contact (any type that can be cast to a
Dataobject onFunctionOnContactOneorFunctionOnContactZero) – value for coefficienty_contact - y_contact_reduced (any type that can be cast to a
Dataobject onReducedFunctionOnContactOneorReducedFunctionOnContactZero) – value for coefficienty_contact_reduced - d_dirac (any type that can be cast to a
Dataobject onDiracDeltaFunctions) – value for coefficientd_dirac - y_dirac (any type that can be cast to a
Dataobject onDiracDeltaFunctions) – value for coefficienty_dirac - r (any type that can be cast to a
Dataobject onSolutionorReducedSolutiondepending 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
Dataobject onSolutionorReducedSolutiondepending 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:
objectLocator 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.ndarrayorlistofnumpy.ndarray) – location(s) of the Locator
- where (
-
getFunctionSpace()¶ Returns the function space of the Locator.
-
getId(item=None)¶ Returns the identifier of the location.
-
getValue(data)¶ Returns the value of
dataat the Locator ifdatais aDataobject otherwise the object is returned.
-
getX()¶ Returns the exact coordinates of the Locator.
-
setValue(data, v)¶ Sets the value of the
dataat the Locator.
-
-
class
esys.downunder.dcresistivityforwardmodeling.PoleDipoleSurvey(domain, primaryConductivity, secondaryConductivity, current, a, n, midPoint, directionVector, numElectrodes)¶ Bases:
esys.downunder.dcresistivityforwardmodeling.DcResistivityForwardForward 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:
- domain (
-
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.DcResistivityForwardForward 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:
- domain (
-
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.DcResistivityForwardSchlumberger 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.DcResistivityForwardWennerSurvey 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 (
floatorint) – 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
- domain (
-
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
Dataobjects and their mesh to a file using the SILO file format.Example:
temp=Scalar(..) v=Vector(..) saveSilo("solution.silo", temperature=temp, velocity=v)
tempandvare written to “solution.silo” wheretempis named “temperature” andvis named “velocity”.Parameters: - filename (
str) – name of the output file (‘.silo’ is added if required) - domain (
escript.Domain) – domain of theDataobjects. If not specified, the domain of the givenDataobjects 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
FunctionSpaces.- filename (
Others¶
- pi