FieldDynamics for Electrostatic Simulations

This page describes the Field options available for electrostatic simulations, that is, when the field solver in the Basic Settings element is set to electrostatic.

Fields

Phi

The electric potential field. This field is un-editable, and is calculated automatically.

Charge Density

The charge density field. This field is un-editable, and is calculated automatically.

Electric Field

The Electric Field. This field is un-editable, and is calculated automatically.

Background Charge Density

The background charge density field. This field can be added to a simulation by right clicking “Fields”, hovering over “Add Field”, then clicking “Background Charge Density”. You may add many Background Charge Densities to your simulation.

  • expression

    The value of the background charge density field. Can be a constant, a parameter, or a function of space and time.

External Field

An External Field can be added to a simulation by right clicking “Fields”, hovering over “Add Field”, then clicking “External Field”. An external field will be added after the field solve and effect particle movements in the simulation.

description

A space to provide a descriptive comment for the field.

field type

In electrostatic simulations only magnetic fields may be added.

field specification

Either import h5 file or function defined.

  • import h5 file A vis schema compliant h5 file. It does require that the file be in the same directory as the simulation. An error message will be provided if the file fails to import.

    filename:

    The name of the .hdf5 file to be imported. Typical convention is simulationName_fieldName_dumpNum.h5

    lower bound 0:

    The cell index of the 0th component lower bound of the source field, to be imported to the matching index in the simulation. If left not applicable the entire field will be imported.

    lower bound 1:

    The cell index of the 1st component lower bound of the source field, to be imported to the matching index in the simulation. If left not applicable the entire field will be imported.

    lower bound 2:

    The cell index of the 2nd component lower bound of the source field, to be imported to the matching index in the simulation. If left not applicable the entire field will be imported.

    upper bound 0:

    The cell index of the 0th component upper bound of the source field, to be imported to the matching index in the simulation. If left not applicable the entire field will be imported.

    upper bound 1:

    The cell index of the 1st component upper bound of the source field, to be imported to the matching index in the simulation. If left not applicable the entire field will be imported.

    upper bound 2:

    The cell index of the 2nd component upper bound of the source field, to be imported to the matching index in the simulation. If left not applicable the entire field will be imported.

  • function defined

    Allows for manual specification of each component of the field

    component 0:

    The function defining the field in the 0th component. Can be a time varying function

    component 1:

    The function defining the field in the 1st component. Can be a time varying function

    component 2:

    The function defining the field in the 2nd component. Can be a time varying function

    time dependent:

    Set to true if any of the functions are time varying. The function will then be recalculated at each time step.

  • import h5 file by grid index A vis schema compliant h5 file. It does require that the file be in the same directory as the simulation. An error message will be provided if the file fails to import. This variant requires specifying the grid indices of both the source field to import as well as the indices of where to place that field in the simulation. This can be used to translate fields in position from a previous run to a new one.

    The total number of cells between the source lower and upper bounds must match that of the simulation lower and upper bounds.

    filename:

    The name of the .hdf5 file to be imported. Typical convention is simulationName_fieldName_dumpNum.h5

    source lower bound 0:

    The grid index of the lower bound of the 0th dimension of the source field to be imported.

    source lower bound 1:

    The grid index of the lower bound of the 1st dimension of the source field to be imported.

    source lower bound 2:

    The grid index of the lower bound of the 2nd dimension of the source field to be imported.

    source upper bound 0:

    The grid index of the upper bound of the 0th dimension of the source field to be imported.

    source upper bound 1:

    The grid index of the upper bound of the 1st dimension of the source field to be imported.

    source upper bound 2:

    The grid index of the upper bound of the 2nd dimension of the source field to be imported.

    simulation lower bound 0:

    The grid index corresponding to the lower bound of the 0th dimension where the field will be placed in the simulation.

    simulation lower bound 1:

    The grid index corresponding to the lower bound of the 1st dimension where the field will be placed in the simulation.

    simulation lower bound 2:

    The grid index corresponding to the lower bound of the 2nd dimension where the field will be placed in the simulation.

    simulation upper bound 0:

    The grid index corresponding to the upper bound of the 0th dimension where the field will be placed in the simulation.

    simulation upper bound 1:

    The grid index corresponding to the upper bound of the 1st dimension where the field will be placed in the simulation.

    simulation upper bound 2:

    The grid index corresponding to the upper bound of the 2nd dimension where the field will be placed in the simulation.

nodalE

This is a node centered electric field, used for calculating particle movements. It cannot be added to a simulation but is created automatically and will be visible if dump nodal fields = true.

nodalB

This is a node centered magnetic field, used for calculating particle movements. It cannot be added to a simulation but is created automatically and will be visible if dump nodal fields = true.

invEps

This is a field that stores the inverse values of dielectrics in a simulation. It cannot be added in the Fields tab but is created automatically if necessary and can be visualized.

D

This is the displacement field, only created if a dielectric is present in the simulation. It cannot be added in the Fields tab but is created automatically if necessary and can be visualized.

Initial Condition

To add an Initial Condition to a field, right-click on the field and select Add FieldInitialCondition –> Initial Condition.

kind (not editable)

Initial Condition

expression

The value of the initial condition. Can be assigned a Constant, Parameter, or SpaceTimeFunction by right-clicking.

component

Can be 0, 1 or 2 for the first, second, or third component of the field.

Field Boundary Conditions

To add a Boundary Condition, right-click on FieldBoundaryConditions and select your choice from Add FieldBoundaryCondition. Your choices for dimensionality and field solver in the Basic Settings element will determine which Boundary Conditions are available to add to your simulation. If the simulation is set up as an electrostatic 2D simulation in cylindrical coordinates (R-Z plane) and if the simulation begins at r=0, then a flag called includeCylAxis (see Section Grid) is set to true. At r = 0, we have set the default field boundary condition to be Neumann with the electric field set to 0. Therefore, the only boundary conditions that need to be set in a 2D cylindrical electrostatic simulation are at RMAX, ZMIN, and ZMAX. If the simulation begins at r > 0, then the user will need to specify the field boundary condition at RMIN.

When working with partial electrostatic boundaries it is important to confirm that the entire boundary is set, and that no boundary conditions overlap. A periodic boundary counts as an electrostatic boundary condition. To help facilitate this, dirichlet full simulation boundary conditions are set first, followed by neumann full simulation boundary conditions. Next partial dirichlet boundary conditions are applied, followed by partial neumann boundary conditions. So if setting only 1 partial boundary condition against a full simulation boundary condition no special care needs to be taken. However if for example, a partial lower Y and partial lower Z boundary condition are both set, it is important to make sure that the two do not overlap by offsetting the bounds of one of them by one cell. An example of this is provided in the VSimPD example, PenningSource.

Dirichlet

Use a Dirichlet boundary condition to set the value of the potential field, Phi, on the surface.

value

The value of the boundary condition. Can be assigned a Constant, Parameter, SpaceTimeFunction, External Circuit by right-clicking.

surface

The surface on which the Dirichlet boundary condition should be set.

  • lower x

    The lower x boundary of the simulation domain.

  • lower y

    The lower y boundary of the simulation domain.

  • lower z

    The lower z boundary of the simulation domain.

  • upper x

    The upper x boundary of the simulation domain.

  • upper y

    The upper y boundary of the simulation domain.

  • upper z

    The upper z boundary of the simulation domain.

  • partial lower x

    A Dirichlet boundary condition applied only to part of the lower x simulation boundary. The entire lower x boundary, as well as one guard cell above the boundary must be filled with a boundary condition. The lower coordinate is included in the simulation and the upper bound is exclusive. Also note that at the intersection of the Y or Z simulation boundary the first computational cell of the X boundary is included in the Y or Z simulation boundary condition.

    lower y coordinate

    The inclusive lower y coordinate.

    upper y coordinate

    The exclusive upper y coordinate.

    lower z coordinate

    The inclusive lower z coordinate.

    upper z coordinate

    The exclusive upper z coordinate.

  • partial lower y

    A Dirichlet boundary condition applied only to part of the lower y simulation boundary. The entire lower y boundary, as well as one guard cell above must be filled with a boundary condition. The lower coordinate is included in the simulation and the upper bound is exclusive. Also note that at the intersection of the X or Z simulation boundary the first computational cell of the Y boundary is included in the X or Z simulation boundary condition.

    lower x coordinate

    The inclusive lower x coordinate.

    upper x coordinate

    The exclusive upper x coordinate.

    lower z coordinate

    The inclusive lower z coordinate.

    upper z coordinate

    The exclusive upper z coordinate.

  • partial lower z

    A Dirichlet boundary condition applied only to part of the lower z simulation boundary. The entire lower z boundary, as well as one guard cell above must be filled with a boundary condition. The lower coordinate is included in the simulation and the upper bound is exclusive. Also note that at the intersection of the X or Y simulation boundary the first computational cell of the Z boundary is included in the X or Y simulation boundary condition.

    lower x coordinate

    The inclusive lower x coordinate.

    upper x coordinate

    The exclusive upper x coordinate.

    lower y coordinate

    The inclusive lower y coordinate.

    upper y coordinate

    The exclusive upper y coordinate.

  • partial upper x

    A Dirichlet boundary condition applied only to part of the upper x simulation boundary. The entire upper x boundary, as well as one guard cell above must be filled with a boundary condition. The lower coordinate is included in the simulation and the upper bound is exclusive. Also note that at the intersection of the Y or Z simulation boundary the first computational cell of the X boundary is included in the Y or Z simulation boundary condition.

    lower y coordinate

    The inclusive lower y coordinate.

    upper y coordinate

    The exclusive upper y coordinate.

    lower z coordinate

    The inclusive lower z coordinate.

    upper z coordinate

    The exclusive upper z coordinate.

  • partial upper y

    A Dirichlet boundary condition applied only to part of the upper y simulation boundary. The entire upper y boundary, as well as one guard cell above must be filled with a boundary condition. The lower coordinate is included in the simulation and the upper bound is exclusive. Also note that at the intersection of the X or Z simulation boundary the first computational cell of the Y boundary is included in the X or Z simulation boundary condition.

    lower x coordinate

    The inclusive lower x coordinate.

    upper x coordinate

    The exclusive upper x coordinate.

    lower z coordinate

    The inclusive lower z coordinate.

    upper z coordinate

    The exclusive upper z coordinate.

  • partial upper z

    A Dirichlet boundary condition applied only to part of the upper z simulation boundary. The entire upper z boundary, as well as one guard cell above must be filled with a boundary condition. The lower coordinate is included in the simulation and the upper bound is exclusive. Also note that at the intersection of the X or Y simulation boundary the first computational cell of the Z boundary is included in the X or Y simulation boundary condition.

    lower x coordinate

    The inclusive lower x coordinate.

    upper x coordinate

    The exclusive upper x coordinate.

    lower y coordinate

    The inclusive lower y coordinate.

    upper y coordinate

    The exclusive upper y coordinate.

  • shape surface

    Use a shape surface to specify a Dirichlet boundary condition on the surface of a geometry in your simulation.

    object name:

    Choose from any pre-defined geometries in the simulation.

Neumann

Use a Neumann boundary condition to set the value of the derivative of the potential field, Phi, on the surface.

value

The value of the derivative. Can be assigned a Constant, Parameter, or SpaceTimeFunction by right-clicking.

surface

The surface on which the Dirichlet boundary condition should be set.

  • lower x

    The lower x boundary of the simulation domain.

  • lower y

    The lower y boundary of the simulation domain.

  • lower z

    The lower z boundary of the simulation domain.

  • upper x

    The upper x boundary of the simulation domain.

  • upper y

    The upper y boundary of the simulation domain.

  • upper z

    The upper z boundary of the simulation domain.

  • partial lower x

    A Neumann boundary condition applied only to part of the lower x simulation boundary. The entire lower x boundary must be filled with a boundary condition. The lower coordinate is included in the simulation and the upper bound is exclusive. Also note that at the intersection of the Y or Z simulation boundary the first computational cell of the X boundary is included in the Y or Z simulation boundary condition.

    lower y coordinate

    The inclusive lower y coordinate.

    upper y coordinate

    The exclusive upper y coordinate.

    lower z coordinate

    The inclusive lower z coordinate.

    upper z coordinate

    The exclusive upper z coordinate.

  • partial lower y

    A Neumann boundary condition applied only to part of the lower y simulation boundary. The entire lower y boundary must be filled with a boundary condition. The lower coordinate is included in the simulation and the upper bound is exclusive. Also note that at the intersection of the X or Z simulation boundary the first computational cell of the Y boundary is included in the X or Z simulation boundary condition.

    lower x coordinate

    The inclusive lower x coordinate.

    upper x coordinate

    The exclusive upper x coordinate.

    lower z coordinate

    The inclusive lower z coordinate.

    upper z coordinate

    The exclusive upper z coordinate.

  • partial lower z

    A Neumann boundary condition applied only to part of the lower z simulation boundary. The entire lower z boundary must be filled with a boundary condition. The lower coordinate is included in the simulation and the upper bound is exclusive. Also note that at the intersection of the X or Y simulation boundary the first computational cell of the Z boundary is included in the X or Y simulation boundary condition.

    lower x coordinate

    The inclusive lower x coordinate.

    upper x coordinate

    The exclusive upper x coordinate.

    lower y coordinate

    The inclusive lower y coordinate.

    upper y coordinate

    The exclusive upper y coordinate.

  • partial upper x

    A Neumann boundary condition applied only to part of the upper x simulation boundary. The entire upper x boundary must be filled with a boundary condition. The lower coordinate is included in the simulation and the upper bound is exclusive. Also note that at the intersection of the Y or Z simulation boundary the first computational cell of the X boundary is included in the Y or Z simulation boundary condition.

    lower y coordinate

    The inclusive lower y coordinate.

    upper y coordinate

    The exclusive upper y coordinate.

    lower z coordinate

    The inclusive lower z coordinate.

    upper z coordinate

    The exclusive upper z coordinate.

  • partial upper y

    A Neumann boundary condition applied only to part of the upper y simulation boundary. The entire upper y boundary must be filled with a boundary condition. The lower coordinate is included in the simulation and the upper bound is exclusive. Also note that at the intersection of the X or Z simulation boundary the first computational cell of the Y boundary is included in the X or Z simulation boundary condition.

    lower x coordinate

    The inclusive lower x coordinate.

    upper x coordinate

    The exclusive upper x coordinate.

    lower z coordinate

    The inclusive lower z coordinate.

    upper z coordinate

    The exclusive upper z coordinate.

  • partial upper z

    A Neumann boundary condition applied only to part of the upper z simulation boundary. The entire upper z boundary must be filled with a boundary condition. The lower coordinate is included in the simulation and the upper bound is exclusive. Also note that at the intersection of the X or Y simulation boundary the first computational cell of the Z boundary is included in the X or Y simulation boundary condition.

    lower x coordinate

    The inclusive lower x coordinate.

    upper x coordinate

    The exclusive upper x coordinate.

    lower y coordinate

    The inclusive lower y coordinate.

    upper y coordinate

    The exclusive upper y coordinate.

PoissonSolver

kind (not editable)

Poisson Solver

relative permittivity

Function giving the relative permittivity, or background permittivity. Without a VSimPD license, when using the electrostatic field solve, dielectrics with spatially dependent dielectric constants cannot be added through the use of geometries (primitive and CAD-like imported objects). If you try to add a non-PEC/Absorbium material, you will get the following error: “Dielectrics not supported in electrostatic simulations”. However, you can add regions in the simulation domain that have spatially dependent dielectric constants with SpaceTimeFunctions (see SpaceTimeFunctions).

An example demonstrating how to add dielectrics using SpaceTimeFunctions can be found in “Dielectric in Electrostatics” which can be found in the “VsimExamples” documentation. Once you have written a SpaceTimeFunction describing the spatially dependent dielectric constant, expand the Field Dynamics tab and left click on “PoissonSolver”. Then right click on the region next to relative permittivity, left click on “Assign SpaceTimeFunction” and click on the function that you wrote. With a VSimPD license it is possible to use geometry defined dielctrics. In this case the relative permittivity assignment can still be used to set a background permittivity, or permittivity outside of the geometries.

solver

VSim allows the use of the direct solver SuperLU or one of the current choices for iterative solvers.

  • SuperLU

    Use the SuperLU solver. This is a direct matrix solver which is not recommended for use in a simulation with a grid larger than a few thousand cells. For grids with more than a few thousand cells, use an iterative solver.

  • conjugate gradient

    An iterative solver for symmetric positive definite matrices.

    tolerance

    The size of the error vector for stopping the iteration to solution.

    max iterations

    The maximum number of iterations allowed to achieve the solution. Anything above 30 is questionable.

    convergence metric

    This is described in the AztecOO user guide, p. 17, currently here. Metrics are one of:

    • r0

      Use the ratio of the L2 norms of the residual and the initial residual.

    • rhs

      Use the ratio of the L2 norms of the residual and the right-hand side.

    • Anorm

      Use the ratio of the L2 norm of the residual and the maximum absolute row sum of the matrix (L-infinity norm).

    • noscaled

      Use the ratio of the L2 norm of the residual.

    • sol

      Use the ratio of the maximum component of the residual and the sum of (L-infinity norm of the matrix times the maximum absolute component of the first iterate to the solution + the maximum absolute component of the right-hand side).

  • generalized minimum residual

    An iterative solver. Actually the restarted GMRES. A very robust solver.

    Krylov vector space size

    Number of vectors used in Krylov subspace.

    max iterations

    The maximum number of iterations allowed to achieve the solution. Anything above 30 is questionable.

    tolerance

    The size of the error vector for stopping the iteration to solution.

    convergence metric

    This is described in the AztecOO user guide, p. 17, currently here. Metrics are one of:

    • r0

      Use the ratio of the L2 norms of the residual and the initial residual.

    • rhs

      Use the ratio of the L2 norms of the residual and the right-hand side.

    • Anorm

      Use the ratio of the L2 norm of the residual and the maximum absolute row sum of the matrix (L-infinity norm).

    • noscaled

      Use the ratio of the L2 norm of the residual.

    • sol

      Use the ratio of the maximum component of the residual and the sum of (L-infinity norm of the matrix times the maximum absolute component of the first iterate to the solution + the maximum absolute component of the right-hand side).

    orthogonalization

    How to orthogonalize the Krylov subspace. Options are:

    • classic

      Uses two steps of the classical Gram-Schmidt orthogonalization (Default).

    • modified

      Uses one step of the Modified Gram-Schmidt orthogonalization.

  • conjugate gradient squared

    tolerance

    The size of the error vector for stopping the iteration to solution.

    max iterations

    The maximum number of iterations allowed to achieve the solution. Anything above 30 is questionable.

    convergence metric

    This is described in the AztecOO user guide, p. 17, currently here. Metrics are one of:

    • r0

      Use the ratio of the L2 norms of the residual and the initial residual.

    • rhs

      Use the ratio of the L2 norms of the residual and the right-hand side.

    • Anorm

      Use the ratio of the L2 norm of the residual and the maximum absolute row sum of the matrix (L-infinity norm).

    • noscaled

      Use the ratio of the L2 norm of the residual.

    • sol

      Use the ratio of the maximum component of the residual and the sum of (L-infinity norm of the matrix times the maximum absolute component of the first iterate to the solution + the maximum absolute component of the right-hand side).

  • biconjugate gradient stabilized

    tolerance

    The size of the error vector for stopping the iteration to solution.

    max iterations

    The maximum number of iterations allowed to achieve the solution. Anything above 30 is questionable.

    convergence metric

    This is described in the AztecOO user guide, p. 17, currently here. Metrics are one of:

    • r0

      Use the ratio of the L2 norms of the residual and the initial residual.

    • rhs

      Use the ratio of the L2 norms of the residual and the right-hand side.

    • Anorm

      Use the ratio of the L2 norm of the residual and the maximum absolute row sum of the matrix (L-infinity norm).

    • noscaled

      Use the ratio of the L2 norm of the residual.

    • sol

      Use the ratio of the maximum component of the residual and the sum of (L-infinity norm of the matrix times the maximum absolute component of the first iterate to the solution + the maximum absolute component of the right-hand side).

  • transpose-free quasi-minimal residual

    tolerance

    The size of the error vector for stopping the iteration to solution.

    max iterations

    The maximum number of iterations allowed to achieve the solution. Anything above 30 is questionable.

    convergence metric

    This is described in the AztecOO user guide, p. 17, currently here. Metrics are one of:

    • r0

      Use the ratio of the L2 norms of the residual and the initial residual.

    • rhs

      Use the ratio of the L2 norms of the residual and the right-hand side.

    • Anorm

      Use the ratio of the L2 norm of the residual and the maximum absolute row sum of the matrix (L-infinity norm).

    • noscaled

      Use the ratio of the L2 norm of the residual.

    • sol

      Use the ratio of the maximum component of the residual and the sum of (L-infinity norm of the matrix times the maximum absolute component of the first iterate to the solution + the maximum absolute component of the right-hand side).

preconditioner

  • no preconditioner

  • multigrid

    Multigrid has a large number of parameters. In most cases, the defaults are good. If one is using particles, the linear solve often does not matter in overall timing. More information is available in the VSim User Guide: VSim User Guide: Simulation Concepts: Fields

    mg defaults

    • SA

      Works best with symmetric matrices. Symmetric matrices occur when all boundary conditions in the problem are periodic.

    • DD

      Works best in general.

    • DD-ML

    • Maxwell

    maximum levels

    The maximum number of levels of multigrid smoother application before doing a direct solve on the smaller problem. For highly parallel problems this should be limited to 3-4 to minimize communication time.

    smoother type

    The smoother to apply at each multigrid level. The default is a good choice, but the user may try other smoothers to achieve best solving times. The choices are:

    • Gauss Seidel

    • symmetric variable block Gauss Seidel

    • Jacobi

    • Chebyshev

    • Aztec

    smoother sweeps

    The number of times to apply the smoother at each multigrid level. A good choice is 3, but the user may try other values to achieve best solving times.

    when to smooth

    Generally one wants to smooth both. The before and after choices are provided to the user to try other values to achieve best solving times.

    • both

    • before

    • after

    coarse type

    The type of solver to use at the coarsest level.

    • Jacobi

    • KLU

    damping factor

    Damping factor for smoothed aggregation. The default is a good choice. Users may try other values to achieve best solving times.

    threshold

    This determines the multigrid aggregation at each level.

    increase or decrease

    If set to increasing, level 0 will correspond to the finest level. If set to decreasing, max levels - 1 will correspond to the finest level. Should not affect convergence. The choices are:

    • increasing

    • decreasing