Welcome to FasterCap

FasterCap User Guide

Welcome to FasterCap !

FasterCap is a powerful three-dimensional capactiance extraction program.

Build upon state-of-the-art technology, FasterCap improves the capabilities of the premium 'golden reference' FastCap software, while preserving the accuracy for which FastCap is renowed. FasterCap is faster, requires less memory, and provides additional capabilities with respect to FastCap.

Features include:

  • 3D and 2D solver capabilities

    FasterCap is able to handle 3D models as well as native 2D models for faster simulation where only the cross-section of the structure is of interest (e.g. transmission lines)

  • Support of lossy dielectric mediums

    Specifying complex permittivity values, you can simulate the presence of lossy dielectrics

  • Linear solution time with respect to the number of panels N.

    The time needed to compute the self and mutual capacitances between the input set of conductors increases only linearly with the overall number of panels N. This feature is guaranteed by the O(N) complexity of the underlying algoritm, no matter the shape, orientation and size of the input geometries

  • Support for arbitraty shaped dielectric interfaces

    FasterCap supports Dielectric regions composed of any number of constant-permittivity regions of any shape and size

  • Support for triangular and quadrilateral input elements

    FasterCap supports the definition of the input geometry using either triangular or quadrilateral input elements, for maximum flexibility.

  • Full Automation support, for solver control by remote programs

    Full automation support allows to fully control FasterCap from other programs, either in foreground or in background, using a standard interface. Thanks to this capability, FasterCap can be used as an embedded engine in your application, in a fast and smart way.

  • Automatic mesh refinement

    FasterCap can automatically refine the input geometry mesh until result convergence is reached, within a preset error threshold. Therefore, the user is free from the burden to provide more and more refined version of the input geometry to reach the requested accuracy of the results.

  • Handling of very large models, with improved speed and reduced memory requirements

    FasterCap is able handle very large, non-homogeneous geometries, easily breaking the barrier of one million panels in the mesh. This is thanks to the capability to achieve the solution in a shorter time and with smaller memory requirements with respect to FastCap.

  • Out-of-core capability

    Memory requirement, more than solution time, is the bottleneck of modern field simulations, limiting the maximum addressable system dimension. To overcame the RAM memory limits, imposed by the cost / GB, FasterCap is able to go out-of-core, that is, to resort to the much larger storage capacity of the hard disk. Using smart algorithms for streamlining the data structure organization on the hard disk, FasterCap is able to efficiently make use of the mass memory support to run huge simulations in a convenient time tradeoff.

  • Speed-independency from non-uniform geometries in space

    Thanks to the underlying data structures not requiring a uniform 3D partition of the model building box, as in most tree codes, the geometry can be highly non-uniform in space (the 'teapot in stadium' problem), without hampering the speed, the accuracy or the memory required to handle the model.

  • Multi-core parallel execution

    FasterCap leverages multi-core parallel execution capabilities of modern machines to run time-critical funcitons over multiple processor, for maximum speed gain.

  • Hierarchical input files support

    FasterCap extends the flexibility of the FastCap input files, to handle hierarchical input files. This capability allows to overcome the limit of two levels of hierarchy imposed by FastCap. You can therefore define your geometry in a very structured way, with maximum reuse of the different items definition.

  • Charge density output for visualization in FastModel

    The charge densities calculated for the set of conductors at each capacitance matrix column sweep can be output to a file, that can be loaded into FastModel for easy visualization.

  • Input file syntax compatible with FastCap

    FasterCap is 100% compatible with FastCap generic file format, thus preserving your existing import/export interfaces.

  • Refined model output in FastCap compatible format

    FasterCap optionally can dump in FastCap-compatible file a copy of the final refined mesh, thus enabling you to use FasterCap as a tool to refine the input geometry, and to run the same simulation in FastCap. This allows a straightforward benchmarking between the two solvers.

Visit our web site FastFieldSolvers for new releases, support, customization and many other services!

Copyright FastFieldSolvers S.R.L. 2014 - All rights reserved


FasterCap Input Files

Input File Syntax

This chapter provides reference information about the FasterCap input file syntax

FasterCap supports 3D or 2D capacitance extraction. The input file syntax is as similar as possible for the two cases.

3D Syntax

The input files specify the geometry of the conductors and of the dielectrics through a description of their surfaces, modeled as quadrilateral or triangular panels.

The input file syntax for FasterCap is 100% compatible with the FastCap2 "generic file format". It also introduces some enhancements, mainly the support of complex permittivity values and of hierarchical models.

For more information about the input file syntax:

  • 3D Input File Structure
  • 3D Conductor definitions ('C' statement)
  • 3D Dielectric definitions ('D' statement)
  • 3D Quadrilateral panel definitions ('Q' statement)
  • 3D Triangular panel definitions ('T' statement)
  • 3D Name definitions ('N' statement)
  • Single Input File option

2D Syntax

The input files specify the geometry of the conductors and of the dielectrics through a description of their contours, modeled as straight segments.

The input file syntax is similar to the 3D FasterCap syntax, but adapted to the 2D case.

For more information about the input file syntax:

  • 2D Input File Structure
  • 2D Conductor definitions ('C' statement)
  • 2D Dielectric definitions ('D' statement)
  • 2D Segment definitions ('S' statement)
  • 2D Name definitions ('N' statement)
  • Single Input File option


FasterCap Input Files

FasterCap 3D Input Files

Input File Structure

The input file is a sequential list of materials definitions (conductor 'C' statements and dielectric 'D' statements) and of geometric panel descriptions (triangular patch 'T' and quadrilateral patch 'Q').
Moreover, comments are allowed ('*' elements) as well as naming definitions ('N' elements)

Definitions can be nested in a hierarchical fashion to be able to re-use the geometric descriptions and to ease the construction of the models.
Panel geometric definitions ('Q' and 'T' elements) in the root file are assumed by default to belong to conductors embedded in a dielectric medium with unit permittivity.

All input files begins with a comment line. For compatibility and to ease possible file merging, you are recommended to start the line with a '*' character; anyway this is not mandatory, and the first line of any input file is simply ignored.

Remark: since FasterCap is able to automatically refine the geometry, it is best working with an input mesh as coarse as possible. This is a main difference with FastCap2, that needs a carefully pre-refined input mesh in order to produce accurate results.

An input file example is shown here below.

File cubes.txt:

* Array of two cubes, in air
*
* conductor | dielectric | offset
* file name | constant   | in space
*
C cube.txt    1.000000     0.0 0.0 0.0
C cube.txt    1.000000     2.0 0.0 0.0

The above input file references hierarchically the file cube.txt. This file contains a geometric description of a unit cube, as shown here below.

File cube.txt:

* 1mX1mX1m unit cube
*
* conductor     |   3D coordinates of the four corners
* name to which |   of the quadrilateral Q patch
* the Q patch   |
* belongs       |
*
Q mycube          1.0 1.0 0.0  1.0 0.0 0.0  1.0 0.0 1.0  1.0 1.0 1.0
Q mycube          0.0 1.0 0.0  1.0 1.0 0.0  1.0 1.0 1.0  0.0 1.0 1.0
Q mycube          1.0 0.0 0.0  0.0 0.0 0.0  0.0 0.0 1.0  1.0 0.0 1.0
Q mycube          0.0 0.0 0.0  0.0 1.0 0.0  0.0 1.0 1.0  0.0 0.0 1.0
Q mycube          0.0 0.0 0.0  1.0 0.0 0.0  1.0 1.0 0.0  0.0 1.0 0.0
Q mycube          0.0 0.0 1.0  1.0 0.0 1.0  1.0 1.0 1.0  0.0 1.0 1.0

The following sections explain in detail the meaning of each statement.


FasterCap Input Files

FasterCap 3D Input Files

Conductor definitions ('C' statement)

Syntax: C <file> <outperm> <xoffset> <yoffset> <zoffset> [+]

The 'C' element at the beginning of a line defines a conductor. The geometry of the conductor surface is further specified in the file <file>. The conductor is assumed embedded in an homogeneous dielectric medium with relative permettivity <outperm>. The relative permittivity <outperm> can be complex valued, in the format ere-jeim, where ere is the real part of the complex permittivity value, and eim is the imaginary part. The conductor can be translated with respect to the coordinates defined in <file> by an offset (xoffset, yoffset, zoffset), thus allowing to reuse the same geometric definitions multiple times.
The optional + argument is used to merge the current conductor with the next one, thus treating them a single conductor. With this option, panels with the same conductor name in different files will belong to the same conductor (see panels definitions for more information about conducor naming).

Example 1:

C cube.txt    1.000000     2.0 0.0 0.0

This input file fragments specifies a conductor whose geometry is defined in the file cube.txt, embedded in a dielectric with permettivity equal to one (e.g. air), and translated to the position (2.0, 0.0, 0.0).

Example 2:

C cube.txt    1.000000     0.0 0.0 0.0 +
C cube.txt    1.000000     2.0 0.0 0.0

This input file fragments specifies a conductor made of two cubes in free air. It is considered a single conductor since the first statement ends by +, thus collating the two elements; i.e. the two cubes are considered short-circuited together.

Example 3:

C cube.txt    3.0-j0.02     2.0 0.0 0.0

This input file fragments specifies a conductor whose geometry is defined in the file cube.txt, embedded in a dielectric with complex permettivity equal to 3.0-j0.02 (e.g. with real part equal to 3.0 and imaginary part equal to 0.02), and translated to the position (2.0, 0.0, 0.0).


FasterCap Input Files

FasterCap 3D Input Files

Dielectric definitions ('D' statement)

Syntax: D <file> <outperm> <inperm> <xoffset> <yoffset> <zoffset> <xref> <yref> <zref> [-]

The 'D' element at the beginning of a line defines a dielectric. The geometry of the dielectric surface is further specified in the file <file>. The dielectric surface is intended as the interface between two regions with relative permettivities <outperm> and <inperm>. The relative permittivities <outperm> and <inperm> can be complex valued, in the format eRe-jeIm, where eRe is the real part of the complex permittivity value, and eIm is the imaginary part.
The dielectric can be translated with respect to the coordinates defined in <file> by an offset (xoffset, yoffset, zoffset), thus allowing to reuse the same geometric definitions multiple times.
The reference point (xref, yref, zref) and the optional - argument are used to specify which side of the dielectric interface has which permittivity. More specifically, the reference point is assumed to lie on the <outperm> side of all the panels in <file>. The optional - argument indicates that (xref, yref, zref) instead lies on the <inperm> side. The reference point is not translated, i.e. the offset only applies to the elements specified in <file>.

Remark: it is the user's responsibility to make sure that the reference point is on the same side of the dielectric interface for all panels. That is, each panel is evaluated as stand-alone with respect to the reference point, to define its <outperm> and <inperm> sides. There is no concept of a external and internal side of a surface specified by a group of panels, even if specified in the same file with the same conductor names, since FasterCap maintains no topological information.

For complex shaped surfaces, FasterCap supports also the option to specify the reference point panel by panel, see 3D Triangular panel definitions ('T' statement) and 3D Quadrilateral panel definitions ('Q' statement) for details about the syntax. You can also mix the two type of panel definitions, i.e. panels without and panels with a per-panel reference point specification. In this case, panels without a reference point specified per panel will use the reference point specified for the whole dielectric interface in the 'D' statement.

Example 1:

D sphere.txt  1.0 2.0  0.0 0.0 0.0  0.0 0.0 0.0  -

This input file fragments specifies a dielectric interface whose geometry is defined in the file sphere.txt. The interior of the sphere is filled with a material with relative permittivity equal 2.0, since the reference point is centered on the origin and the optional - argument is specified; while the dielectric medium ouside the sphere has a relative permittivity equal to 1.0.

Example 2:

D sphere.txt  1.0 3.0-j0.02  0.0 0.0 0.0  0.0 0.0 0.0  -

This input file fragments specifies a dielectric interface whose geometry is defined in the file sphere.txt. The interface is between air (relative permittivity equal to 1.0) and a lossy dielectric with complex relative permettivity equal to 3.0-j0.02 (e.g. with real part equal to 3.0 and imaginary part equal to 0.02).


FasterCap Input Files

FasterCap 3D Input Files

Quadrilateral panel definitions ('Q' statement)

Syntax: Q <condname> <x1> <y1> <z1>   <x2> <y2> <z2>   <x3> <y3> <z3>   <x4> <y4> <z4>   [<xref> <yref> <zref>]

The 'Q' element at the beginning of a line defines a quadrilateral panel. If the quadrilateral panel belongs to a conductor surface, the <condname> parameter is used to associate the panel to a parent conductor named <condname>. If the quadrilateral panel belongs to a dielectric surface, the <condname> parameter is ignored. The (x1, y1, z1), (x2, y2, z2), (x3, y3, z3), (x4, y4, z4) 3D points specify the coordinates of the four corners of the panel; the coordinates must be entered in clockwise or counterclockwise order starting from any one corner.
In case the panel is part of a dielectric interface, you can use the optional coordinates (xref, yref, zref) to specify a reference point; see 3D Dielectric definitions ('D' statement) for more details about dielectric interfaces.

Example 1:

Q mycube  1.0 1.0 0.0  1.0 0.0 0.0  1.0 0.0 1.0  1.0 1.0 1.0

This input file fragments specifies a face of the surface of a conducting cube, whose name is mycube.

Example 2:

Q onecube  1.0 1.0 0.0  1.0 0.0 0.0  1.0 0.0 1.0  1.0 1.0 1.0
Q othercube  0.0 1.0 0.0  1.0 1.0 0.0  1.0 1.0 1.0  0.0 1.0 1.0
Q onecube  1.0 0.0 0.0  0.0 0.0 0.0  0.0 0.0 1.0  1.0 0.0 1.0

This input file fragments specifies two face of the surface of a conducting cube, whose name is onecube, and one face of the surface of a second conducting cube, whose name is othercube.

Example 3:

Q mycube  1.0 1.0 0.0  1.0 0.0 0.0  1.0 0.0 1.0  1.0 1.0 1.0  0.0 0.0 2.0

This input file fragments specifies a face of the surface of a dielectric cube, whose name is mycube, with a panel-specific dielectric reference point at (0,0,2).


FasterCap Input Files

FasterCap 3D Input Files

Triangular panel definitions ('T' statement)

Syntax: T <condname> <x1> <y1> <z1>   <x2> <y2> <z2>   <x3> <y3> <z3>   [<xref> <yref> <zref>]

The 'T' element at the beginning of a line defines a triangular panel. If the triangular panel belongs to a conductor surface, the <condname> parameter is used to associate the panel to a parent conductor named <condname>. If the triangular panel belongs to a dielectric surface, the <condname> parameter is ignored. The (x1, y1, z1), (x2, y2, z2), (x3, y3, z3) 3D points specify the coordinates of the three corners of the panel; the coordinates must be entered in clockwise or counterclockwise order starting from any one corner.
In case the panel is part of a dielectric interface, you can use the optional coordinates (xref, yref, zref) to specify a reference point; see 3D Dielectric definitions ('D' statement) for more details about dielectric interfaces.

Example 1:

T mypyramid  1.0 1.0 0.0  1.0 0.0 0.0  1.0 0.0 1.0

This input file fragments specifies a face of the surface of a conducting pyramid, whose name is mypyramid.

Example 2:

T onepyramid  0.0 0.0 0.0  1.0 0.0 0.0  0.0 1.0 0.0
T otherpyramid  0.0 1.0 0.0  1.0 1.0 0.0  1.0 1.0 1.0
T onepyramid  0.0 0.0 0.0  1.0 0.0 0.0  0.5 0.5 1.0

This input file fragments specifies two face of the surface of a conducting pyramid, whose name is onepyramid, and one face of the surface of a second conducting pyramid, whose name is otherpyramid.

Example 3:

T mypyramid  1.0 1.0 0.0  1.0 0.0 0.0  1.0 0.0 1.0  0.0 0.0 2.0

This input file fragments specifies a face of the surface of a dielectric pyramid, whose name is mypyramid, with a panel-specific dielectric reference point at (0,0,2).


FasterCap Input Files

FasterCap 3D Input Files

Name definitions ('N' statement)

Syntax: N <oldcondname> <newcondname>

The 'N' element at the beginning of a line renames a conductor. More specifically, it associates all the panels previously assigned to the conductor named <oldcondname> to the conductor named <newcondname>.

Example:

Q 1  1.0 1.0 0.0  1.0 0.0 0.0  1.0 0.0 1.0  1.0 1.0 1.0
Q 1  0.0 1.0 0.0  1.0 1.0 0.0  1.0 1.0 1.0  0.0 1.0 1.0
Q 1  1.0 0.0 0.0  0.0 0.0 0.0  0.0 0.0 1.0  1.0 0.0 1.0
Q 1  0.0 0.0 0.0  0.0 1.0 0.0  0.0 1.0 1.0  0.0 0.0 1.0
Q 1  0.0 0.0 0.0  1.0 0.0 0.0  1.0 1.0 0.0  0.0 1.0 0.0
Q 1  0.0 0.0 1.0  1.0 0.0 1.0  1.0 1.0 1.0  0.0 1.0 1.0
N 1  mycube

This input file fragments specifies a cubic conductor whose name is '1'. The conductor is then renamed to a more user-friendly name mycube.


FasterCap Input Files

FasterCap 2D Input Files

Input File Structure

The input file is a sequential list of materials definitions (conductor 'C' statements and dielectric 'D' statements) and of geometric segment descriptions (straight segment 'S' statements).
Moreover, comments are allowed ('*' elements) as well as naming definitions ('N' elements)

Definitions can be nested in a hierarchical fashion to be able to re-use the geometric descriptions and to ease the construction of the models.
Segment geometric definitions ('S' elements) in the root file are assumed by default to belong to conductors embedded in a dielectric medium with unit permittivity.

All input files begins with a comment line. For compatibility and to ease possible file merging, you are recommended to start the line with a '*' character; anyway this is not mandatory, and the first line of any input file is always interpreted as a comment.

A 2D input file MUST contain in the first line of the root file the string "2D" or "2d". This string is used by FasterCap to switch to 2D solver mode. By default, FasterCap assumes to be in 3D solver mode, so 2D file definitions without the "2D" string will cause input parser errors.

Remark: since FasterCap is able to automatically refine the geometry, it is best working with an input mesh as coarse as possible.

An input file example is shown here below.

File coax_cable_coated_2d_fine.lst:

* 2D - Coated coaxial cable, a=1 internal radius, b=1.5 diel interface, c=2 external radius
* Analytic capacitance capacitance is C1*C2/(C1+C2) where
* C1 = 2*pi*e0*er1/ln(b/a) = 274.4 pF/m, C2 = 2*pi*e0*er2/ln(c/b) = 193.4 pf/m
* It follows C = 113.4 pF/m
* Note that in this input file the discretization is finer (40 sections per circle)
* so actual capacitance is closer to the theorical one

C circle_0.1_fine.txt 2.0  0.0 0.0
D circle_0.15_fine.txt 2.0 1.0  0.0 0.0  0.0 0.0
C circle_0.2_fine.txt 1.0  0.0 0.0

The above input file references hierarchically the files circle_0.1_fine.txt, circle_0.15_fine.txt, and circle_0.2_fine.txt. These files contains a geometric description of a circular conductor with different diameters, as shown here below for the file circle_0.1_fine.txt.

File circle_0.1_fine.txt:

0 circle with diameter 0.1. centered at the origin
*
S circle 0.1 0 0.098768907 0.015642989
S circle 0.098768907 0.015642989 0.095105938 0.030900818
S circle 0.095105938 0.030900818 0.089101283 0.045397812
S circle 0.089101283 0.045397812 0.080902789 0.058777026
S circle 0.080902789 0.058777026 0.070712316 0.07070904
S circle 0.070712316 0.07070904 0.058780774 0.080900066
S circle 0.058780774 0.080900066 0.045401939 0.08909918
S circle 0.045401939 0.08909918 0.030905224 0.095104506
S circle 0.030905224 0.095104506 0.015647565 0.098768182
S circle 0.015647565 0.098768182 4.63268E-06 0.1
S circle 4.63268E-06 0.1 -0.015638413 0.098769631
S circle -0.015638413 0.098769631 -0.030896412 0.095107369
S circle -0.030896412 0.095107369 -0.045393684 0.089103386
S circle -0.045393684 0.089103386 -0.058773278 0.080905511
S circle -0.058773278 0.080905511 -0.070705764 0.070715592
S circle -0.070705764 0.070715592 -0.080897342 0.058784522
S circle -0.080897342 0.058784522 -0.089097077 0.045406067
S circle -0.089097077 0.045406067 -0.095103074 0.03090963
S circle -0.095103074 0.03090963 -0.098767457 0.01565214
S circle -0.098767457 0.01565214 -0.1 9.26536E-06
S circle -0.1 9.26536E-06 -0.098770355 -0.015633838
S circle -0.098770355 -0.015633838 -0.095108801 -0.030892006
S circle -0.095108801 -0.030892006 -0.089105489 -0.045389556
S circle -0.089105489 -0.045389556 -0.080908234 -0.05876953
S circle -0.080908234 -0.05876953 -0.070718867 -0.070702488
S circle -0.070718867 -0.070702488 -0.058788269 -0.080894619
S circle -0.058788269 -0.080894619 -0.045410195 -0.089094973
S circle -0.045410195 -0.089094973 -0.030914036 -0.095101642
S circle -0.030914036 -0.095101642 -0.015656716 -0.098766732
S circle -0.015656716 -0.098766732 -1.3898E-05 -0.099999999
S circle -1.3898E-05 -0.099999999 0.015629262 -0.09877108
S circle 0.015629262 -0.09877108 0.0308876 -0.095110232
S circle 0.0308876 -0.095110232 0.045385428 -0.089107592
S circle 0.045385428 -0.089107592 0.058765782 -0.080910957
S circle 0.058765782 -0.080910957 0.070699212 -0.070722142
S circle 0.070699212 -0.070722142 0.080891895 -0.058792017
S circle 0.080891895 -0.058792017 0.089092869 -0.045414322
S circle 0.089092869 -0.045414322 0.09510021 -0.030918442
S circle 0.09510021 -0.030918442 0.098766006 -0.015661291
S circle 0.098766006 -0.015661291 0.099999998 -1.85307E-05

The following sections explain in detail the meaning of each statement.


FasterCap Input Files

FasterCap 2D Input Files

Conductor definitions ('C' statement)

Syntax: C <file> <outperm> <xoffset> <yoffset> [+]

The 'C' element at the beginning of a line defines a conductor. The geometry of the conductor surface is further specified in the file <file>. The conductor is assumed embedded in an homogeneous dielectric medium with relative permettivity <outperm>. The relative permittivity <outperm> can be complex valued, in the format ere-jeim, where ere is the real part of the complex permittivity value, and eim is the imaginary part. The conductor can be translated with respect to the coordinates defined in <file> by an offset (xoffset, yoffset), thus allowing to reuse the same geometric definitions multiple times.
The optional + argument is used to merge the current conductor with the next one, thus treating them a single conductor. With this option, panels with the same conductor name in different files will belong to the same conductor (see panels definitions for more information about conducor naming).

Example 1:

C circle_0.2_fine.txt 1.0  0.0 0.0

This input file fragments specifies a conductor whose geometry is defined in the file circle_0.1_fine.txt, embedded in a dielectric with permettivity equal to one (e.g. air), and translated to the position (0.0, 0.0).

Example 2:

C microstrip_top_0.03.txt 1.0  -0.025 0.01 +
C microstrip_bottom_0.03.txt 2.0  -0.025 0.01

This input file fragments specifies a conductor made of two parts in contact with two dielectric materials with different relative permittivities. It is considered a single conductor since the first statement ends by +, thus collating the two elements; i.e. the two parts are considered short-circuited together.

Example 3:

C circle_0.005.txt 4.0-j3.016e6  0.0 0.02

This input file fragments specifies a conductor whose geometry is defined in the file circle_0.005.txt, embedded in a dielectric with complex relative permettivity equal to 4.0-j3.016e6 (e.g. with real part equal to 4.0 and imaginary part equal to 3.016e6), and translated to the position (0.0, 0.02).


FasterCap Input Files

FasterCap 2D Input Files

Dielectric definitions ('D' statement)

Syntax: D <file> <outperm> <inperm> <xoffset> <yoffset> <xref> <yref> [-]

The 'D' element at the beginning of a line defines a dielectric. The geometry of the dielectric contour is further specified in the file <file>. The dielectric contour is intended as the interface between two regions with relative permettivities <outperm> and <inperm>. The relative permittivities <outperm> and <inperm> can be complex valued, in the format eRe-jeIm, where eRe is the real part of the complex permittivity value, and eIm is the imaginary part. The dielectric can be translated with respect to the coordinates defined in <file> by an offset (xoffset, yoffset), thus allowing to reuse the same geometric definitions multiple times. The reference point (xref, yref) and the optional - argument are used to specify which side of the dielectric interface has which permittivity. More specifically, the reference point is assumed to lie on the <outperm> side of all the segments in <file>. The optional - argument indicates that (xref, yref) instead lies on the <inperm> side. The reference point is not translated, i.e. the offset only applies to the elements specified in <file>.

Remark: it is the user's responsibility to make sure that the reference point is on the same side of the dielectric interface for all panels. That is, each panel is evaluated as stand-alone with respect to the reference point, to define its <outperm> and <inperm> sides. There is no concept of a external and internal side of a surface specified by a group of panels, even if specified in the same file with the same conductor names, since FasterCap maintains no topological information.

Example 1:

D circle_0.15_fine.txt 1.0 2.0  0.0 0.0  0.0 0.0 -

This input file fragments specifies a dielectric interface whose geometry is defined in the file circle_0.15_fine.txt. The interior of the circle is filled with a material with relative permittivity equal to 2.0, since the reference point is centered on the origin and the optional - argument is specified; while the dielectric medium ouside the circle has a relative permittivity equal to 1.0.

Example 2:

D circle_0.15_fine.txt 3.0-j0.02 1.0  0.0 0.0  0.0 0.0 -

This input file fragments specifies a dielectric interface whose geometry is defined in the file circle_0.15_fine.txt. The interface is between air (relative permittivity equal to 1.0) and a lossy dielectric with complex relative permettivity equal to 3.0-j0.02 (e.g. with real part equal to 3.0 and imaginary part equal to 0.02).


FasterCap Input Files

FasterCap 2D Input Files

Straight segment definitions ('S' statement)

Syntax: S <condname> <x1> <y1>   <x2> <y2>

The 'S' element at the beginning of a line defines a straight segment. If the segment belongs to a conductor surface, the <condname> parameter is used to associate the segment to a parent conductor named <condname>. If the segment belongs to a dielectric surface, the <condname> parameter is ignored. The (x1, y1), (x2, y2) 2D points specify the coordinates of the two end points of the segment.

Example 1:

S circle 0.1 0  0.098768907 0.015642989

This input file fragments specifies a segment of the surface of a conductor, whose name is circle.

Example 2:

S inner_shell 0.098768907 0.015642989  0.095105938 0.030900818
S outer_shell 0.095105938 0.030900818  0.089101283 0.045397812
S inner_shell 0.089101283 0.045397812  0.080902789 0.058777026

This input file fragments specifies two segments of the surface of a conductor, whose name is inner_shell, and one segment of the surface of a second conductor, whose name is outer_shell.


FasterCap Input Files

FasterCap 2D Input Files

Name definitions ('N' statement)

Syntax: N <oldcondname> <newcondname>

The 'N' element at the beginning of a line renames a conductor. More specifically, it associates all the segments previously assigned to the conductor named <oldcondname> to the conductor named <newcondname>.

Example:

S circle 0.1 0 0.098768907 0.015642989
S circle 0.098768907 0.015642989 0.095105938 0.030900818
S circle 0.095105938 0.030900818 0.089101283 0.045397812
S circle 0.089101283 0.045397812 0.080902789 0.058777026
S circle 0.080902789 0.058777026 0.070712316 0.07070904
S circle 0.070712316 0.07070904 0.058780774 0.080900066
S circle 0.058780774 0.080900066 0.045401939 0.08909918
S circle 0.045401939 0.08909918 0.030905224 0.095104506
S circle 0.030905224 0.095104506 0.015647565 0.098768182
S circle 0.015647565 0.098768182 4.63268E-06 0.1
N circle  coax_outer_shell

This input file fragments specifies a conductor whose name is 'circle'. The conductor is then renamed to a more user-friendly name coax_outer_shell.


FasterCap Input Files

Single Input File option

FasterCap supports also the option to specify all input data in a single file. This avoids the need for a possibly large number of different input files.

The format is as follows:

(main input file)
End
File <first_sub-file>
(contents of <first_sub-file>)
End
File <second_sub-file>
(contents of <second_sub-file>)
End

In this way, all references to external files can be replaced by internal references; for instance, if you write
C first_sub-file 1.0 0.0 0.0 0.0
FasterCap will not try to access the file 'first_sub-file' from the file system, but will take the data from the 'File' section as per the above definition.

FasterCap allows hierarchical definitions, i.e. 'first_sub-file' can contain references to 'second_sub-file'. If the referenced files are not found internally, FasterCap assumes that they reside on the file system, and will look for them accordingly.

The characters following 'E' in 'End' and following 'F' in 'File' are optional. Like the other statements, 'E' and 'F' are case-insensitive, and must be the first character of the line in which they are defined.
Moreover, the 'End' statement in itself is optional, and is included only for input file readibility.

You can find some examples of single input files in the 'Samples' directory, for both 3D and 2D models.


Running FasterCap

Run Menu dialog box

The FasterCap Run Menu dialog box contains many options. In the following, the different options will be explained in detail, with reference to the Run Menu figure here below.

Input file name

This information is mandatory to run the simulation. This is the file name of the root file containing FasterCap input data (see FasterCap Input Files for more information about input files). The file name can also include path information, or you can browse for the file using the dedicated button.

Automatic settings

For most simulations, you can rely on FasterCap to automatically adjust the settings to converge to a solution within the given error tolerance.

In this case, you must check the box 'Automatically calculate settings' and enter a value into the 'Stop when relative error is lower than (-a)' field. This value is the desired residual tolerance on the error, calculated as the Frobenius norm of the weighted capacitance matrix difference (this is one of the standard ways to measure the difference between two matrices).
For example, a value of 0.01 means a residual error of 1%, a value of 0.05 a resudual error of 5%, and so on.

You can also select if FasterCap should make an automatic choice of the preconditioner, to try to accelerate the solution (by performing less iterations); in this case, you must check the box 'Automatic preconditioner usage (-ap)'. There are reasons why you would not want the preconditioner to be automatically selected, in this case uncheck the box and specify the type of preconditioner you want to use in the 'Common settings' group (see below).

Manual settings

If you want absolute control over your simulation, you can force FasterCap to follow the manual settings.
In this case, you must NOT check the box 'Automatically calculate settings' and enter a value in all the fields of this section.

  • 'Mesh relative refinement value (-m)' controls the maximum refinement allowed on the input geometry. The lower the value, the more accurate the result, but simulation time will increase accordingly.
  • 'Gmres iteration tolerance (-t)' controls the error below which the iterative solver will stop. This controls the relative error of the solution.
    For example, a value of 0.01 means a residual error of 1%, a value of 0.05 a resudual error of 5%, and so on.
    Remark: the accuracy of the capacitance value that can be obtained with this parameter is limited by the refinement level of the mesh. If the mesh is too coarse, lowering this number will give no benefit.

Common settings

  • 'Direct potential interaction coefficient to mesh refinement ratio (-d)' controls the degree of matrix compression. FasterCap stores the panels set and their relationships ('links') in a hierarchical structure, representing the interaction matrix. The '-d' parameter specifies the compression of the links with respect to the panels mesh information as specified with the 'Mesh relative refinement value (-m)' parameter (either manually set or automatically calculated in the 'Auto' mode). A lower value of the '-d' parameter means more links per panel on the average, and in principle a more accurate result; but simulation time will increase accordingly.
  • 'Mesh curvature coefficient (-mc)' controls the ratio of refinement with respect to the local curvature in the input geometry (gradient meshing). A mesh curvature coefficient equal to 1.0 means no gradient in the meshing, i.e. local curvature is not considered when meshing. Increasing values of this parameter lead to a stronger refinement of the mesh around edges, corners and regions with high curvature.
  • 'Out-Of-Core free memory to link memory condition (0 = don't go OOC) (-f)' define the condition upon which FasterCap will go Out-Of-Core. Going Out-Of-Core means that the largest internal data structures that may not fit in the physical RAM memory available on the host machine will be stored on the hard-disk. (note: this is quite different from the swap file used by the operating system, since OOC files are highly optimized for FasterCap speed). Going OOC will allow to solve problems with huge dimensions, at the price of an increased solution time, since disk access operations are not as fast as memory accesses.
    A value equal to zero will prevent FasterCap to go Out-Of-Core, no matter how little memory is available. Values greater than zero will cause FasterCap to go OOC when the estimated available memory ('free' memory) is less than n times the memory needed to store the interaction links between the panels, where 'n' is the 'Out-Of-Core free memory to link memory condition' parameter.
  • 'Use Galerkin scheme (-g)' causes FasterCap to employ a Galerkin scheme in the solution, instead of collocation. This can lead to an improved accuracy in the calculated capacitance values, for the same mesh level, without consuming more memory, but at the cost of additional calculation time.

    Remark:This option is not supported at the moment for 2D capacitance extraction.

  • 'Use Jacobi Preconditioner (-pj)' instructs FasterCap to use a Jacobi preconditioning scheme to reduce the overall simulation time. The preconditioner aims to lower the number of passes needed for the GMRES iterative algorithm to converge (i.e. the number of the iterations shown as progressive numbers in the FasterCap output).
    The Jacobi preconditioner is the simplest kind of preconditioner, and also the least powerful. It is most effective for non-homogeneous dimensions of the panels in the mesh, or for simulations including dielectrics, while for homogeneous meshes of conductors it has no effect. It has however the advantage of not requiring the allocation of additional memory with respect to using no preconditioner.
  • 'Use Two-levels Preconditioner' instructs FasterCap to use a more powerful preconditioning scheme to reduce the overall simulation time. The preconditioner aims to lower the number of passes needed for the GMRES iterative algorithm to converge (i.e. the number of the iterations shown as progressive numbers in the FasterCap output).
    The two-levels preconditioner is effective also for homogeneous cases, and work best when there are clusters of conductors far away from each other. However, in general a preconditioner has a cost in terms of set-up time, so it is most beneficial for meshes containing a large number of panels.
  • 'Two-levels Preconditioner dimension (-ps)' controls the dimension of the preconditioner. The bigger the preconditioner, the less the number of iterations required to converge to the solution, but the simulation time will increase accordingly. This parameter should be kept to a value for which the preconditioner calculation time is a fraction of the overall simulation time.

General Options

These options can always be selected or not, independently from automatic or manual settings.

  • 'Output refined geometry in FastCap2 format (-o)' dumps the FasterCap mesh geometry at the end of the refinement phase to a set of files, in the same directory of the input file. These files are in FastCap2 compatible format, so can be input to FastCap2 and to FastModel. This option is useful for instance for comparison of FasterCap results with FastCap2 results, or to see the refined mesh in FasterCap. Please be aware however that for high levels of refinement the output files can be huge, and can also take some time to be stored on the mass memory device.
    The main file is named as the specified input file, with the extension '_ref.lst'. All the other input files are referenced inside this main file.
  • 'Dump Gmres residual at each iteration (-r)' causes FasterCap to dump at each iteration of the iterative solver the relative residual GMRES error near the iteration number.
  • 'Dump charge densities in output file (-c)' dumps a set of FasterCap mesh geometries containing charge densities information. One set of files is output, in the same directory of the input file, for each conductor specified. These files are in FastModel compatible format, so they can be loaded into FastModel for charge density visualization. Please be aware however that for high levels of refinement the output files can be huge, and can also take some time to be stored on the mass memory device.
    The main files are named after the specified input file, merged with the conductor name, with the extension '.lst'. All the other input files are referenced inside the main files.
  • 'Dump detailed time and memory information (-m)' causes FasterCap to dump in the output text detailed time and memory information for each of the phases in the solution.
  • 'Verbose output (-v)' instructs FasterCap to dump in the output text verbose information about what it is doing. While this is not normally useful, it can assist the troubleshooting in case of errors reported by FasterCap, by providing additional information.


Running FasterCap

Launching FasterCap from the shell

FasterCap can be launched in GUI-less mode from a System shell (e.g. a DOS shell under MS Windows, a KSH under Linux, etc.).

To enter the GUI-less text mode, you need to pass the additional command option '-b' ('batch' mode) when launching FasterCap from the System shell.

For example:

FasterCap -b cube.txt -a0.01

Please note that the command options can be passed in arbitrary order. Please note also that the default option for the GUI-less mode is not Automatic, as it is instead in the GUI mode; so you need to specify the -a option with the relevant tolerance to trigger the Automatic solution mode.

For a list of valid running command options, please see the explaination in the Run Menu dialog box paragraph. The command options are indicated together with the relevant settings descriptions. Example: 'Stop when relative error is lower than (-a)' indicates that the relevant parameter to control this setting when launched from a System shell is '-a'

You can also get a list of the valid command options with a short description when launching FasterCap from a System shell with the '-?' parameter (or with any invalid unsupported parameter).

For example:

FasterCap -b -?

Usage: fastercap <input file> [-a<relative error>] [-ap]
                 [-m<mesh>] [-mc<mesh curvature] [-t<tolerance>]
                 [-d<interaction coeff>] [-f<outofcore>] [-g]
                 [-pj] [-ps<dimension>] [-o] [-r] [-c] [-i] [-v]
DEFAULT VALUES:
  -a: Automatically calculate settings, stop when relative error is lower than = 0.01
  -ap: Automatic preconditioner usage
  -m: Mesh relative refinement value = 0.1
  -mc: Mesh curvature coefficient = 3
  -t: GMRES iteration tolerance = 0.01
  -d: Direct potential interaction coefficient to mesh refinement ratio = 1
  -f: Out-Of-Core free memory to link memory condition = 5
  -g: Use Galerkin scheme
  -pj: Use Jacobi Preconditioner
  -ps: Use two-levels preconditioner with dimension = 5
OPTIONS:
  -o: Output refined geometry in FastCap2 format
  -r: Dump Gmres residual at each iteration
  -c: Dump charge densities in output file
  -i: Dump detailed time and memory information
  -v: Verbose output
  -b: Launch as console/shell application without GUI
  -b?: Print console usage (this text)
  -bv: Print only the version
  -h: Open only the help system (Linux only)

The list of valid return (exit) codes is:

// no error, normal end
#define FC_NORMAL_END 0
// catchall for generic error
#define FC_GENERIC_ERROR 1
// command line usage error
#define FC_COMMAND_LINE_ERROR 64
// cannot open input file(s)
#define FC_CANNOT_OPEN_FILE 66
// out of memory
#define FC_OUT_OF_MEMORY 71
// generic file error
#define FC_FILE_ERROR 74
// license error (e.g. invalid license)
#define FC_LICENSE_ERROR 77
// cannot go out-of-core (probably disk full)
#define FC_CANNOT_GO_OOC 97
// unknown exception caught
#define FC_EXCEPTION_ERROR 98
// user-requested break (not valid for console mode)
#define FC_USER_BREAK 125

The return codes can be checked under Linux with the following command:
echo $?
and under MS Windows with the command:
echo %ERRORLEVEL%


Running FasterCap

Launching FasterCap through Automation

FasterCap can be launched through COM Automation. This is a propietary MS technology implemented under Windows. COM Automation is not available under Linux.

FasterCap's Automation interface allows a remote application to fully control FasterCap, either showing the GUI or as a GUI-less solver engine.

For details about the Automation interface, please see the relevant Automation section.


FasterCap Output

Output text

FasterCap, while running, provides many informations about what it is doing, plus the result of the calculations.

Here below you can see a copy of FasterCap output text for the capacitance calculation of the two cubes problem, as shown in the Input File Structure section.

In the next pages you can find more information about each section of the output text

  • Output header
  • Output Iteration information
  • Output tail

Running FasterCap version 5.0.2
Copyright 2013 FastFieldSolvers S.r.l. http://www.fastfieldsolvers.com, All Rights reserved
Starting capacitance extraction with the following parameters:
Input file: C:\Documents and Settings\All Users\Documents\FastFieldSolvers\FasterCap\cubes.lst
Auto calculation with max error: 0.01
Remark: Auto option overrides all other Manual settings

Solution scheme (-g): Collocation, GMRES tolerance (-t): 0.005
Out-of-core free memory to link memory condition (-f): 5
Potential interaction coefficient to mesh refinement ratio (-d): 1
Mesh curvature (-mc): 3
Number of input panels to solver engine: 24

Iteration number #0 ***************************

***************************************
Refining the geometry..
Refinement completed
Mesh refinement (-m): 1e+032
***************************************
Computing the links..
Number of panels after refinement: 24
Number of links to be computed: 46
Done computing links
***************************************
Precond Type(s) (-p): Jacobi
GMRES Iteration: 0 1
GMRES Iteration: 0 1
Capacitance matrix is:
Dimension 2 x 2
g1_mycube 6.49181e-011 -2.07808e-011
g2_mycube -1.76613e-011 6.49235e-011

Solve statistics:
Number of input panels: 12 of which 12 conductors and 0 dielectric
Number of input panels to solver engine: 24
Number of panels after refinement: 24
Number of potential estimates: 23
Number of links: 70 (uncompressed 576, compression ratio is 87.8%)
Max recursion level: 5
Max Mesh relative refinement value: 0.0533222
Iteration time: 0.069000s (0 days, 0 hours, 0 mins, 0 s)
Iteration allocated memory: 12330 kilobytes

Iteration number #1 ***************************

***************************************
Increasing the geometric refinement..
Refinement completed
Mesh refinement (-m): 0.0377045
***************************************
Computing the links..
Number of panels after refinement: 96
Number of links to be computed: 4628
Done computing links
***************************************
Precond Type(s) (-p): Jacobi
GMRES Iteration: 0 1 2
GMRES Iteration: 0 1 2
Capacitance matrix is:
Dimension 2 x 2
g1_mycube 8.02789e-011 -2.59788e-011
g2_mycube -2.59743e-011 8.02738e-011

Weighted Frobenius norm of the difference between capacitance (auto option): 0.199681

Solve statistics:
Number of input panels: 12 of which 12 conductors and 0 dielectric
Number of input panels to solver engine: 24
Number of panels after refinement: 96
Number of potential estimates: 2314
Number of links: 4724 (uncompressed 9216, compression ratio is 48.7%)
Max recursion level: 13
Max Mesh relative refinement value: 0.0373801
Iteration time: 0.035000s (0 days, 0 hours, 0 mins, 0 s)
Iteration allocated memory: 12360 kilobytes

Iteration number #2 ***************************

***************************************
Increasing the geometric refinement..
Refinement completed
Mesh refinement (-m): 0.0264317
***************************************
Computing the links..
Number of panels after refinement: 192
Number of links to be computed: 11048
Done computing links
***************************************
Precond Type(s) (-p): Jacobi
GMRES Iteration: 0 1 2 3
GMRES Iteration: 0 1 2 3
Capacitance matrix is:
Dimension 2 x 2
g1_mycube 8.1187e-011 -2.64358e-011
g2_mycube -2.64368e-011 8.11959e-011

Weighted Frobenius norm of the difference between capacitance (auto option): 0.011994

Solve statistics:
Number of input panels: 12 of which 12 conductors and 0 dielectric
Number of input panels to solver engine: 24
Number of panels after refinement: 192
Number of potential estimates: 5524
Number of links: 11240 (uncompressed 36864, compression ratio is 69.5%)
Max recursion level: 14
Max Mesh relative refinement value: 0.0264134
Iteration time: 0.057000s (0 days, 0 hours, 0 mins, 0 s)
Iteration allocated memory: 12402 kilobytes

Iteration number #3 ***************************

***************************************
Increasing the geometric refinement..
Refinement completed
Mesh refinement (-m): 0.0186771
***************************************
Computing the links..
Number of panels after refinement: 288
Number of links to be computed: 21936
Done computing links
***************************************
Precond Type(s) (-p): Jacobi
GMRES Iteration: 0 1 2 3
GMRES Iteration: 0 1 2 3
Capacitance matrix is:
Dimension 2 x 2
g1_mycube 8.1964e-011 -2.6891e-011
g2_mycube -2.68863e-011 8.19668e-011

Weighted Frobenius norm of the difference between capacitance (auto option): 0.0103921

Solve statistics:
Number of input panels: 12 of which 12 conductors and 0 dielectric
Number of input panels to solver engine: 24
Number of panels after refinement: 288
Number of potential estimates: 10968
Number of links: 22224 (uncompressed 82944, compression ratio is 73.2%)
Max recursion level: 16
Max Mesh relative refinement value: 0.0186339
Iteration time: 0.058000s (0 days, 0 hours, 0 mins, 0 s)
Iteration allocated memory: 12444 kilobytes

Iteration number #4 ***************************

***************************************
Increasing the geometric refinement..
Refinement completed
Mesh refinement (-m): 0.0131762
***************************************
Computing the links..
Number of panels after refinement: 480
Number of links to be computed: 45824
Done computing links
***************************************
Precond Type(s) (-p): Jacobi
GMRES Iteration: 0 1 2 3 4
GMRES Iteration: 0 1 2 3 4
Capacitance matrix is:
Dimension 2 x 2
g1_mycube 8.26757e-011 -2.73819e-011
g2_mycube -2.73807e-011 8.26804e-011

Weighted Frobenius norm of the difference between capacitance (auto option): 0.00994789

Solve statistics:
Number of input panels: 12 of which 12 conductors and 0 dielectric
Number of input panels to solver engine: 24
Number of panels after refinement: 480
Number of potential estimates: 22912
Number of links: 46304 (uncompressed 230400, compression ratio is 79.9%)
Max recursion level: 18
Max Mesh relative refinement value: 0.0131762
Iteration time: 0.092000s (0 days, 0 hours, 0 mins, 0 s)
Iteration allocated memory: 12530 kilobytes

Total allocated memory: 12530 kilobytes
Total time: 0.311000s (0 days, 0 hours, 0 mins, 0 s)


FasterCap Output

Output header

The header provides basic informations about the simulation that is going to be run.

Running FasterCap version 5.0.2
Copyright 2013 FastFieldSolvers S.r.l. http://www.fastfieldsolvers.com, All Rights reserved
Starting capacitance extraction with the following parameters:
Input file: C:\Documents and Settings\All Users\Documents\FastFieldSolvers\FasterCap\cubes.lst
Auto calculation with max error: 0.01
Remark: Auto option overrides all other Manual settings

Solution scheme (-g): Collocation, GMRES tolerance (-t): 0.005
Out-of-core free memory to link memory condition (-f): 5
Potential interaction coefficient to mesh refinement ratio (-d): 1
Mesh curvature (-mc): 3
Number of input panels to solver engine: 24

In particular, besides the version and copyright information, you have:

  • The input file name (root file), including the full path
  • The dump of the run options, as shown in Run Menu dialog box section
  • The total number of input panels, as found in the input files structure


FasterCap Output

Output Iteration information

The iteration section provides the information related to the current solve iteration, in case of Automatic settings. In case of Manual settings, there will be only one section, for a single iteration corresponding to the chosen settings.

Iteration number #4 ***************************

***************************************
Increasing the geometric refinement..
Refinement completed
Mesh refinement (-m): 0.0131762
***************************************
Computing the links..
Number of panels after refinement: 480
Number of links to be computed: 45824
Done computing links
***************************************
Precond Type(s) (-p): Jacobi
GMRES Iteration: 0 1 2 3 4
GMRES Iteration: 0 1 2 3 4
Capacitance matrix is:
Dimension 2 x 2
g1_mycube 8.26757e-011 -2.73819e-011
g2_mycube -2.73807e-011 8.26804e-011

Weighted Frobenius norm of the difference between capacitance (auto option): 0.00994789

Solve statistics:
Number of input panels: 12 of which 12 conductors and 0 dielectric
Number of input panels to solver engine: 24
Number of panels after refinement: 480
Number of potential estimates: 22912
Number of links: 46304 (uncompressed 230400, compression ratio is 79.9%)
Max recursion level: 18
Max Mesh relative refinement value: 0.0131762
Iteration time: 0.092000s (0 days, 0 hours, 0 mins, 0 s)
Iteration allocated memory: 12530 kilobytes

In the following, each subsection of the iteration section will be examined

Prologue subsection

Iteration number #4 ***************************

***************************************
Increasing the geometric refinement..
Refinement completed
Mesh refinement (-m): 0.0131762
***************************************
Computing the links..
Number of panels after refinement: 480
Number of links to be computed: 45824
Done computing links
***************************************
Precond Type(s) (-p): Jacobi

The prologue contains:

  • The Mesh refinement value as automatically calculated by FasterCap
  • The total number of panels and links after refinement
  • The selected preconditioner type

Solve subsection

GMRES Iteration: 0 1 2 3 4
GMRES Iteration: 0 1 2 3 4

The solve subsection shows the status of the current calculation. The iterations will go on until convergence of the iterative linear system solution is achieved, within the required relative accuracy as set with the -t parameter (see 'Gmres tolerance' in the above Prologue subsecton and the Run Menu dialog box paragraph).

There will be one row of iterations for each separate conductor described in the input file.

If the -r global option is selected (see the Run Menu dialog box paragraph), also the residual at each iteration will be provided, as in the example below:

GMRES Iteration: 250 0 3.33 1 0.2 2 0.0145 3 0.00653 4 0.002
GMRES Iteration: 250 0 3.33 1 0.2 2 0.0146 3 0.00656 4 0.002

Result subsection

Capacitance matrix is:
Dimension 2 x 2
g1_mycube 8.26757e-011 -2.73819e-011
g2_mycube -2.73807e-011 8.26804e-011

The result subsection contains the actual matrix capacitance resulting from the current iteration.

Besides the information about the matrix dimension, each row of the capacitance matrix will report the information about the conductor name. The conductors referred in the columns follow the same order of the rows (the matrix is, anyway, symmetric).

The format of the output matrix is that of a Maxwell capacitance matrix.

  • 3D case

    This means that with respect to the follwing figure, showing the actual self and mutual capacitances between the two cubes considered in the example:

    the resulting matrix has the form:

    It follows that:

    C11 = 8.268e-011 -2.738e-011 = 5.530e-011 = 55.30 pF
    C12 = C21 = -( -2.738e-011 ) = 2.738e-011 = 27.38 pF

  • 2D case

    In the 2D case, the potential at infinity is not zero (the potential decreases as log(1/r), where 'r' is the distance from the source). Therefore, the potential is always referenced to one of the conductors, which is assumed to have zero potential (ground conductor). This last conductor is therefore not explicitly included in the Maxwell capacitance matrix row / columns.

    Remember also that the unit of measurement of the capacitance matrix in this case is F/m.

Statistics subsection

Weighted Frobenius norm of the difference between capacitance (auto option): 0.00994789

Solve statistics:
Number of input panels: 12 of which 12 conductors and 0 dielectric
Number of input panels to solver engine: 24
Number of panels after refinement: 480
Number of potential estimates: 22912
Number of links: 46304 (uncompressed 230400, compression ratio is 79.9%)
Max recursion level: 18
Max Mesh relative refinement value: 0.0131762
Iteration time: 0.092000s (0 days, 0 hours, 0 mins, 0 s)
Iteration allocated memory: 12530 kilobytes

The statistics subsection contains information about data used in the current iteration. In particular:

  • The weighted Frobenius norm. The weighted Frobenius norm is used to measure the difference of the capacitance matrix resulting from the current iteration with respect to the capacitance matrix resulting from the previous iteration. This is the standard way to calculate the relative difference between two matrices. For instance, a value of 0.00994789 means a difference of 0.99% between the current result and the result in the previous iteration.
  • The total number of input panels, as found in the input files structure
  • The total number of input panels to the solver engine. This can be different from the total number of input panels, when a pre-processing of the input geometry is needed. The most common case is to transform the quadrilateral panels into two triangular panels, since the internal engine only deals with triangular elements. Other pre-processings deal with degenerate panels removal or thin panels regularization.
  • The total number of panels, after mesh refinement. These are the actual panels over which the solution is calculated.
  • The total number of potential estimates. This is the number of potential calculations used to build up the potential matrix, whose inversion will provide the capacitance matrix.
  • The total number of links. This is the number of compressed matrix elements in the potential matrix. Calling 'N' the total number of panels (after mesh refinement), a full matrix would have a dimentsion equal to N x N. Thanks to compression, the actual matrix dimension is much smaller. The compression ratio is shown for reference between parenthesis.
  • The maximum recursion level. This is the maximum recursion level reached in the meshing process when building the binary tree of panels.
  • The maximum Mesh relative refinement value found during discretization (could be lower than the Mesh relative refinement value set by the User, in case the input geometry is already fine enough to be below the threshold set by the user. In this case, to force a further discretization, you need to specify a value smaller than the maximum Mesh relative refinement value found during discretization)
  • The time elapsed and the memory allocated for this iteration.


FasterCap Output

Output tail

The output tail provides summary information.

Total allocated memory: 12530 kilobytes
Total time: 0.311000s (0 days, 0 hours, 0 mins, 0 s)

In particular:

  • The overall used memory, in kilobytes
  • The overall time for the solution, in seconds


FastCap Automation Overview

FasterCap Automation Overview

FasterCap provides a MS Windows Automation interface which allows a remote application to fully control FasterCap.

For example, a Visual Basic script inside an MS Windows Excel sheet can launch FasterCap in background, make it perform some simulation, then retrieve the results and show them in some cells - and all without even showing up the FasterCap window!

The Automation Object

FasterCap can be controlled by any Automation-capable application. The automation object which must be created to control FasterCap is named FasterCap.Document. This name is defined in the Windows Registry at installation time or, if removed from the Registry, any time FasterCap is run.

Automation References

Automation is quite a complex topic in itself and will not be described here. We suggest to the unexperienced User to read Microsoft documentation on Automation. In particular, the following sources could be useful and can be found, for instance, on Microsoft web site:
  • "Locating resources to study automation", Microsoft Knowledge Base Article KB152023
  • "Building OLE Automation Service Components in Visual Basic and Visual C++", David George, Microsoft Corporation, October 2, 1995
  • "Inside OLE 2nd Edition", Kraig Brockschmidt, Microsoft Press, 1995

Example programs

Some example programs are provided to help understand and implement FasterCap remote control.


FastCap Example Programs

FasterCap Automation Example Programs

Altough Automation is a complex topic, using FasterCap via Automation is simple enough. To get you started, we have created some example scripts which can be used to learn how to control FasterCap and as a base to build more complex applications. In spite of their short length, these examples are quite comprehensive and the source code is well commented.

You can find the example files in a sub-directory in FasterCap's installation directory.

FasterCapClient Sample Program

This is the most complete example, which shows the use of all FasterCap methods and properties. To compile this example, you must have MS Visual Basic 6.0 (or newer) installed.
For your convenience, we provided also the executable file that you can directly run, provided that you have Visual Basic 6.0 DLL installed.

fastercap_drive.xls Sample Program

This is a Visual Basic for Applications example. To run this example, you must have MS Excel 2000 (or newer) installed. With minor modifications, marked with proper comments in the Visual Basic source code embedded in the spreadsheet, you can also run the same example using LibreOffice Calc.

Remark: for the script to work, you must answer 'yes' at the prompt which asks you if you want to enable the macros, when you load the file into Excel or Calc.

Remark: the files sphere0.txt, sphere1.txt, sphere2.txt, sphere3.txt are used by this script and must reside in the same directory of fastercap_drive.xls for the script to work.

fastercap_drive.vbs Sample Program

This is a Visual Basic Script example. The best way to launch this script is from a DOS shell, typing "cscript fastercap_drive.vbs", in the directory where fastercap_drive.vbs resides. You can also double-click on the file name, but in this case all the log messages will appear in separate pop-up message boxes.

Remark: the files sphere0.txt, sphere1.txt, sphere2.txt, sphere3.txt are used by this script and must reside in the same directory of fastercap_drive.vbs for the script to work.


Run Method Reference

FasterCapObject.Run

boolean FasterCapObject.Run(BSTR commandLine)

Return Value

True if FasterCap was able to start a simulation, false otherwise.

Notes:

A reason why FasterCap could not be able to start a simulation is that a simulation is already running. You can try to stop FasterCap before retrying and / or poll FasterCap status.

Parameters

commandLine

A string containing a FasterCap command line, as would be given from a shell console.

Example:

FasterCapObject.Run("-lspheres.lst -o3")

Remarks

Runs a simulation.

See Also

FasterCap Automation Overview | IsRunning Property | Stop Method


Stop Method Reference

FasterCapObject.Stop

void FasterCapObject.Stop()

Return Value

None

Parameters

None

Remarks

Stops the currently running simulation.

Notes:

It could take some time before FasterCap actually stops, depending on the operation currently under execution. You can poll FasterCap status checking the IsRunning property or you can set a callback upon FasterCap end of operation using the SetEndCallback method.

See Also

FasterCap Automation Overview | IsRunning Property | SetEndCallback Method


Quit Method Reference

FasterCapObject.Quit

boolean FasterCapObject.Quit()

Return Value

If true, FasterCap was able to quit. If false, FasterCap couldn't quit (possibly because there's a simulaton on going; try to stop it before quitting).

Parameters

None

Remarks

Quits FasterCap.

See Also

FasterCap Automation Overview | Stop Method


ShowWindow Method Reference

FasterCapObject.ShowWindow

void FasterCapObject.ShowWindow()

Return Value

None

Parameters

None

Remarks

Shows FasterCap console window, which is hidden by default when the FasterCap Object is created via automation.

Notes:

Once the console becomes visible, you cannot hid it again.

See Also

FasterCap Object Overview


GetCapacitance Method Reference

FasterCapObject.GetCapacitance

VARIANT FasterCapObject.GetCapacitance()

Return Value

The method returns a 2-dimensional safe-array encapsulated in a variant data. The array contains the capacitance matrix as calculated by FasterCap, in Farads. The first dimension of the array is the row index, the second is the column index.

Notes:

The array dimensions can be queried from the safe array itself, see the 'safe array' topic in the MS Automation documentation.

Parameters

None

Remarks

Gets the capacitance values calculated by FasterCap, result of the simulation.

See Also

FasterCap Automation Overview | GetCondNames Method | GetConductance Method


GetCapacitance Method Reference

FasterCapObject.GetConductance

VARIANT FasterCapObject.GetConductance()

Return Value

The method returns a 2-dimensional safe-array encapsulated in a variant data. The array contains the imaginary part of the complex capacitance matrix as calculated by FasterCap (i.e. the conductance divided by 2*pi*f, where pi is pi greek and f is the frequency of interest). The first dimension of the array is the row index, the second is the column index.

Notes:

The array dimensions can be queried from the safe array itself, see the 'safe array' topic in the MS Automation documentation.

Parameters

None

Remarks

Gets the conductance values calculated by FasterCap, result of the simulation.

See Also

FasterCap Automation Overview | GetCondNames Method | GetCapacitance Method


GetCondNames Method Reference

FasterCapObject.GetCondNames

VARIANT FasterCapObject.GetCondNames()

Return Value

The method returns a 1-dimensional safe-array encapsulated in a variant data. The array contains the names of the conductors to which the capacitance matrix rows / columns refer.

Notes:

The array dimensions can be queried from the safe array itself, see the 'safe array' topic in the MS Automation documentation.

Parameters

None

Remarks

Gets conductor names for the rows / columns of the capacitance matrix.

See Also

FasterCap Automation Overview | GetCapacitance Method


SetEndCallback Method Reference

FasterCapObject.SetEndCallback

boolean FasterCapObject.SetEndCallback(IDispatch* callback, BSTR cbName)

Return Value

True if a callback function was set. False if the callback function is reset to default (no callback).

Parameters

callback

Pointer to the client's automation object exposing the callback function. If NULL is passed as argument, the callback will be removed.

cbName

Name of the callback function.

The callback function must have the following prototype:

void cbName()

Remarks

Call this function to set a callback upon FasterCap simulation end. That is, when FasterCap has finished the simulation and results are available, the cbName function will be called to notify the client.

See Also

FasterCap Automation Overview | IsRunning Property | SetLogCallback Method


SetLogCallback Method Reference

FasterCapObject.SetLogCallback

boolean FasterCapObject.SetLogCallback(IDispatch* callback, BSTR cbName)

Return Value

True if a callback function was set. False if the callback function is reset to default (no callback).

Parameters

callback

Pointer to the client's automation object exposing the callback function. If NULL is passed as argument, the callback will be removed.

cbName

Name of the callback function.

The callback function must have the following prototype:

void cbName(BSTR logString, long color)

logString

The string containing the log text passed back to the client.

color

The color of the string. The color will be black (red 255, green 255, blue 255) for normal messages and red (red 255, green 0, blue 0) for error messages.

Remarks

Call this function to set a callback upon FasterCap log output. That is, when FasterCap has something to log (everything that would normally be visible in FasterCap's console window), the cbName function will be called to notify the client and provide him the output string. This function is especially useful if FasterCap's console window is hidden.

See Also

FasterCap Automation Overview | ShowWindow Method | SetEndCallback Method


GetSolveTime Method Reference

FasterCapObject.GetSolveTime

float FasterCapObject.GetSolveTime()

Return Value

The method returns the total time spent for the calculation.

Parameters

None

Remarks

Gets the total time spent by FasterCap for the last solve process.

See Also

FasterCap Automation Overview | GetSolveMemory Method


GetSolveMemory Method Reference

FasterCapObject.GetSolveMemory

long FasterCapObject.GetSolveMemory()

Return Value

The method returns the total memory allocated for the calculation, in bytes.

Parameters

None

Remarks

Gets the total time memory allocated by FasterCap for the last solve process.

See Also

FasterCap Automation Overview | GetSolveTime Method


GetReturnStatus Method Reference

FasterCapObject.GetReturnStatus

short FasterCapObject.GetReturnStatus()

Return Value

The method returns the return status of FasterCap.

Valid status values are:

FC_NORMAL_END             0
FC_GENERIC_ERROR          1
FC_FC_COMMAND_LINE_ERROR  64
FC_CANNOT_OPEN_FILE       66
FC_OUT_OF_MEMORY          71
FC_FILE_ERROR             74
FC_CANNOT_GO_OOC          97
FC_EXCEPTION_ERROR        98
FC_USER_BREAK             125

The meaning is:

FC_NORMAL_END: no error, normal end FC_GENERIC_ERROR: catchall for generic error FC_COMMAND_LINE_ERROR: command line usage error FC_CANNOT_OPEN_FILE: cannot open input file(s) FC_OUT_OF_MEMORY: out of memory FC_FILE_ERROR: generic file error FC_CANNOT_GO_OOC: cannot go out-of-core (probably disk full) FC_EXCEPTION_ERROR: unknown exception caught FC_USER_BREAK: user-requested break

Parameters

None

Remarks

Returns the reason why FasterCap stopped execution. The reason could be normal end, user break or errors.

See Also

FasterCap Automation Overview


IsRunning Property Reference

FasterCapObject.IsRunning

boolean FasterCapObject.IsRunning()

Return Value

True if there's a simulation running. False if FasterCap is idle.

Parameters

None

Remarks

Tests if FasterCap is running a simulation.

See Also

FasterCap Automation Overview | SetEndCallback Method | Stop Method