<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing with OASIS Tables v3.0 20080202//EN" "https://jats.nlm.nih.gov/nlm-dtd/publishing/3.0/journalpub-oasis3.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:oasis="http://docs.oasis-open.org/ns/oasis-exchange/table" xml:lang="en" dtd-version="3.0" article-type="research-article">
  <front>
    <journal-meta><journal-id journal-id-type="publisher">GMD</journal-id><journal-title-group>
    <journal-title>Geoscientific Model Development</journal-title>
    <abbrev-journal-title abbrev-type="publisher">GMD</abbrev-journal-title><abbrev-journal-title abbrev-type="nlm-ta">Geosci. Model Dev.</abbrev-journal-title>
  </journal-title-group><issn pub-type="epub">1991-9603</issn><publisher>
    <publisher-name>Copernicus Publications</publisher-name>
    <publisher-loc>Göttingen, Germany</publisher-loc>
  </publisher></journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.5194/gmd-19-5173-2026</article-id><title-group><article-title>G&amp;M3D 1.0: an interactive framework for 3D model construction and forward calculation of potential fields</article-title><alt-title>G&amp;M3D 1.0 for 3D model construction and forward calculation</alt-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Wang</surname><given-names>Dengkang</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="yes" rid="aff1 aff2 aff3">
          <name><surname>Chen</surname><given-names>Bo</given-names></name>
          <email>bochen@csu.edu.cn</email>
        <ext-link>https://orcid.org/0000-0002-0404-2799</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff4">
          <name><surname>Wei</surname><given-names>Kanggui</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Peng</surname><given-names>Jiaxiang</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1 aff2 aff3">
          <name><surname>Guo</surname><given-names>Rongwen</given-names></name>
          
        </contrib>
        <aff id="aff1"><label>1</label><institution>School of Geosciences and Info-Physics, Central South University, Changsha 410083, China</institution>
        </aff>
        <aff id="aff2"><label>2</label><institution>Hunan Key Laboratory of Non-ferrous Resources and Geological Hazard Detection, Changsha 410083, China</institution>
        </aff>
        <aff id="aff3"><label>3</label><institution>Key Laboratory of Metallogenic Prediction of Nonferrous Metals and Geological Environment Monitoring  (Central South University), Ministry of Education, Changsha 410083, China</institution>
        </aff>
        <aff id="aff4"><label>4</label><institution>Engineering Laboratory for Deep Resources Equipment and Technology,  Institute of Geology and Geophysics, Beijing 100049, China</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Bo Chen (bochen@csu.edu.cn)</corresp></author-notes><pub-date><day>16</day><month>June</month><year>2026</year></pub-date>
      
      <volume>19</volume>
      <issue>11</issue>
      <fpage>5173</fpage><lpage>5190</lpage>
      <history>
        <date date-type="received"><day>30</day><month>October</month><year>2025</year></date>
           <date date-type="rev-request"><day>23</day><month>January</month><year>2026</year></date>
           <date date-type="rev-recd"><day>30</day><month>April</month><year>2026</year></date>
           <date date-type="accepted"><day>29</day><month>May</month><year>2026</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2026 Dengkang Wang et al.</copyright-statement>
        <copyright-year>2026</copyright-year>
      <license license-type="open-access"><license-p>This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this licence, visit <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</ext-link></license-p></license></permissions><self-uri xlink:href="https://gmd.copernicus.org/articles/19/5173/2026/gmd-19-5173-2026.html">This article is available from https://gmd.copernicus.org/articles/19/5173/2026/gmd-19-5173-2026.html</self-uri><self-uri xlink:href="https://gmd.copernicus.org/articles/19/5173/2026/gmd-19-5173-2026.pdf">The full text article is available as a PDF file from https://gmd.copernicus.org/articles/19/5173/2026/gmd-19-5173-2026.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d2e142">Building source models and performing forward calculations are fundamental for processing, analyzing, and interpreting geophysical data. However, open-source tools that allow for both the flexible and interactive construction of source models and potential-field forward calculations are rare. To address this gap, we develop a new Qt-based software called G&amp;M3D 1.0 (Gravity and Magnetic 3D modelling), which supports interactive three-dimensional (3D) model construction and provides accurate and efficient forward modelling. G&amp;M3D 1.0 features two core functionalities: (1) constructing 3D gravity and magnetic source models and (2) calculating and visualizing their gravity/magnetic fields, as well as their gradient fields. In the 3D Modelling Module, user-defined anomalous bodies are internally discretized into assemblies of rectangular prisms for forward calculation. Based on this prism-based representation, users can conveniently construct regular bodies, such as spheres, cuboids, cylinders, ellipsoids and prismoids, and assign density contrast or magnetic parameters to them. Complex structures can be represented using the Irregular (Layer-Building) tool, which is especially suitable for stratigraphic or faulted formations. In addition, the Forward-Modelling Module allows for the rapid calculation, visualization, and saving of gravity anomalies, gravity gradients, total magnetic intensity, and magnetic gradients generated by the created 3D sources. To enhance computational efficiency, the software employs a 2D discrete convolution algorithm for the gravity and magnetic forward calculations. G&amp;M3D 1.0 offers several significant advantages, including open-source accessibility, flexible interactive operations, an intuitive 3D modelling interface, efficient forward computation, and excellent file portability. As a demonstration of its capabilities, we use G&amp;M3D 1.0 for forward gravity modelling over a salt dome at Vinton Dome in southern Louisiana, U.S., validating its accuracy and practicality.</p>
  </abstract>
    
<funding-group>
<award-group id="gs1">
<funding-source>National Science and Technology Major Project</funding-source>
<award-id>2025ZD1009100</award-id>
</award-group>
<award-group id="gs2">
<funding-source>National Natural Science Foundation of China</funding-source>
<award-id>42474123</award-id>
<award-id>42074109</award-id>
</award-group>
<award-group id="gs3">
<funding-source>Natural Science Foundation of Hunan Province</funding-source>
<award-id>2025JJ90240</award-id>
</award-group>
</funding-group>
</article-meta>
  </front>
<body>
      

<sec id="Ch1.S1" sec-type="intro">
  <label>1</label><title>Introduction</title>
      <p id="d2e154">Compared with more logistically demanding methods, such as seismic reflection surveys and electrical surveys requiring dense electrode deployment, gravity and magnetic surveys generally offer simpler field procedures, lower acquisition costs, and greater efficiency for large-area data collection. Building forward source models and conducting forward calculations are fundamental to the processing, analysis, and interpretation of gravity and magnetic data (Blakely, 1996). Although several open-source tools already exist, few available tools combine interactive 3D body construction, gravity and magnetic forward calculation, and result visualization within a standalone graphical user interface (GUI).</p>
      <p id="d2e157">To estimate the gravitational or magnetic effects generated by anomalous masses, geophysicists often represent complex subsurface volumes or geological bodies as a combination of idealized sources with simple shapes (Blakely, 1996; Hinze et al., 2013). These shapes include spheres, cylinders, vertical laminas, horizontal laminas, prisms, and polyhedra. Most of these idealized sources can be easily integrated over the volume and evaluated in closed analytical forms. Among these simple cells, the rectangular prism is particularly favoured for forward modelling and is also widely used in inversion studies, as it provides a straightforward way to approximate complicated anomalous sources and represents the total underground volume without gaps (Caratori Tontini et al., 2009; Li and Chouteau, 1998; Zhao et al., 2018).</p>
      <p id="d2e160">Numerous early scholars have contributed to the closed formulas for gravity and magnetic anomalies caused by rectangular prisms (Bhattacharyya, 1964; Bhattacharyya and Navolio, 1976; Li and Chouteau, 1998; Nagy, 1966; Nagy et al., 2000; Okabe, 1979; Plouff, 1976). For example, Bhattacharyya (1964) presented formulas for the magnetic anomalies resulting from prism-shaped bodies with arbitrary polarization. Nagy (1966) derived a closed expression to calculate the gravitational attraction of a rectangular prism.  Bhattacharyya and Navolio (1976) provided spectral expressions for the gravity and magnetic anomalies arising from irregular three-dimensional (3D) sources by combining prisms. Later, Guo et al. (2004) introduced a new singularity-free calculation formula for the forward modelling of the magnetic field produced by a rectangular prism. Additionally, Luo and Yao (2007) optimized the theoretical magnetic calculation formula to enhance its computational efficiency.</p>
      <p id="d2e163">A fine subdivision is often required to approximate anomalous bodies more precisely. However, when the subspace is finely subdivided, the repeated cumulative calculations can make the forward analysis time-consuming. To improve calculation efficiency, various algorithms have been developed for forward calculations of gravity and magnetic anomalies. For instance, Wu and Tian (2014) proposed a Gauss-fast Fourier transform (FFT) method for calculating potential fields in the Fourier domain. Zhang and Wong (2015) established a block-Toeplitz-Toeplitz-block (BTTB) structure using a discrete multi-layer model, then embedded the BTTB matrix into a block-cyclic-cyclic-block (BCCB) matrix by applying FFT in forward calculations. Additionally, Chen and Liu (2019) optimized the computation of the weight coefficient matrix and applied a 2D discrete convolution algorithm through block circulant extension (referred to as the BCE method) to calculate the gravity anomaly in the spatial domain. This method was later extended to calculate magnetic anomalies on undulating terrain (Qiang et al., 2019). Subsequently, Hogue et al. (2020) developed an open-source MATLAB code for evaluating gravity and magnetic kernels based on the BCE method. Recently, Yuan et al. (2022) advanced the BCE algorithm for magnetic forward modelling.</p>
      <p id="d2e167">Significant progress has been made in the forward calculation of the potential fields; however, constructing 3D anomalous models for algorithm testing or generating synthetic models for inversion studies remains complex and non-intuitive, especially when creating intricate, irregular sources (Jessell et al., 2021). To address these needs, various software packages have been developed for the computational synthesis of geological models and geophysical simulations (Bauville and Baumann, 2019; Cockett et al., 2015; de la Varga et al., 2019; Hassanzadeh et al., 2022; Pirot et al., 2022; Ulug and Karslıoglu, 2022; Wellmann et al., 2016). For example, SimPEG provides a flexible open-source framework for geophysical simulation (Cockett et al., 2015), while geomIO supports geometrical model construction for numerical simulations (Bauville and Baumann, 2019). Additionally, Hogue et al. (2020) developed open-source MATLAB code for the efficient evaluation of gravity and magnetic kernels, and SRBF_Soft focuses on regional gravity field modelling using spherical radial basis functions (Ulug and Karslıoglu, 2022). Despite these advancements, open-source options that seamlessly integrate interactive 3D body construction with efficient forward calculations within a standalone GUI remain rare. This study, therefore, aims to develop a free and open-source software framework that bridges this gap by integrating flexible model construction with high-performance forward calculation of potential fields.</p>
      <p id="d2e170">C<inline-formula><mml:math id="M1" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula> is a widely used general-purpose programming language with strong computational performance and portability, making it well suited for numerical computing and scientific software development. Qt (<uri>https://wiki.qt.io</uri>, last access: 11 June 2026), a powerful cross-platform C<inline-formula><mml:math id="M2" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula> framework, is widely used for designing GUI applications across various platforms, including desktop, mobile, and embedded systems. It offers extensive development tools and libraries that facilitate the rapid creation of high-quality applications. For instance, Snopek and Casten (2006) developed the 3GRAINS software using standard C++ with the Qt library for gravity data interpretation.</p>
      <p id="d2e196">In this study, we choose the rectangular prism as the primary cell to approximate the source volume. We then develop a software package called G&amp;M3D 1.0 to construct 3D density contrast and magnetization models, as well as to perform forward calculations and visualize their gravity and magnetic fields using the Qt Creator framework and C++. The software includes the following functions: (1) interactively creating various geological models and assigning density contrasts or magnetization parameters; (2) performing fast and accurate forward calculations of gravity, gravity gradients, total magnetic intensity, and magnetic gradients. In addition, G&amp;M3D 1.0 supports visualizing, saving, and exporting the constructed models and the corresponding density or magnetization distributions, as well as the forward-modelling results.</p>

      <fig id="F1" specific-use="star"><label>Figure 1</label><caption><p id="d2e201">Division schematic diagram of the source region and observation points.</p></caption>
        <graphic xlink:href="https://gmd.copernicus.org/articles/19/5173/2026/gmd-19-5173-2026-f01.png"/>

      </fig>

      <p id="d2e210">The paper is organized as follows. Section 2 introduces the principles of gravity and magnetic forward calculation, as well as fast calculation strategies. In Sect. 3, we describe the software workflow, focusing on how to create a source model and conduct forward modelling. Section 4 presents an example of applying G&amp;M3D 1.0 to the real-world forward gravity modelling at Vinton Dome, southern Louisiana, U.S. The final section is the conclusions.</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>Forward method</title>
<sec id="Ch1.S2.SS1">
  <label>2.1</label><title>Forward modelling theory</title>
      <p id="d2e228">As shown in Fig. 1, a collection of rectangular prisms offers a straightforward way to approximate the volume of an anomalous body (Li and Chouteau, 1998). Each prism is assumed to have constant physical properties, such as density contrast or magnetization. For a rectangular prism whose dimensions are constrained as <inline-formula><mml:math id="M3" display="inline"><mml:mrow><mml:mfenced open="[" close="]"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ξ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ξ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M4" display="inline"><mml:mrow><mml:mfenced open="[" close="]"><mml:mrow><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M5" display="inline"><mml:mrow><mml:mfenced close="]" open="["><mml:mrow><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> in the <inline-formula><mml:math id="M6" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M7" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M8" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> directions (Fig. 1), according to Li and Chouteau (1998) and Nagy et al. (2000), the vertical component of the gravity attraction <inline-formula><mml:math id="M9" display="inline"><mml:mrow><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>g</mml:mi></mml:mrow></mml:math></inline-formula> and the gravity gradient components <inline-formula><mml:math id="M10" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M11" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M12" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M13" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M14" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M15" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M16" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M17" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M18" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> at the observation point <inline-formula><mml:math id="M19" display="inline"><mml:mrow><mml:mi>P</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> are given by:

                <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M20" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E1"><mml:mtd><mml:mtext>1</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>g</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi>G</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo mathsize="2.0em">[</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mi>ln⁡</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>+</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mi>ln⁡</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mi>arctan⁡</mml:mi><mml:mfenced close=")" open="("><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mo mathsize="2.0em">]</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E2"><mml:mtd><mml:mtext>2</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi>G</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mi>arctan⁡</mml:mi><mml:mfenced open="(" close=")"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          

                <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M21" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E3"><mml:mtd><mml:mtext>3</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi>G</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mi>arctan⁡</mml:mi><mml:mfenced open="(" close=")"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E4"><mml:mtd><mml:mtext>4</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi>G</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mi>arctan⁡</mml:mi><mml:mfenced close=")" open="("><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E5"><mml:mtd><mml:mtext>5</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi>G</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mi>ln⁡</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E6"><mml:mtd><mml:mtext>6</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi>G</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mi>ln⁡</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E7"><mml:mtd><mml:mtext>7</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi>G</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mi>ln⁡</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M22" display="inline"><mml:mi>G</mml:mi></mml:math></inline-formula> is the universal gravitational constant (<inline-formula><mml:math id="M23" display="inline"><mml:mrow><mml:mn mathvariant="normal">6.672</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">11</mml:mn></mml:mrow></mml:msup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">kg</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mrow></mml:math></inline-formula>), <inline-formula><mml:math id="M24" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:math></inline-formula> is the density contrast of the rectangular prism, <inline-formula><mml:math id="M25" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi>x</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">ξ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M26" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi>y</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M27" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M28" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:msubsup><mml:mi>x</mml:mi><mml:mi>i</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>y</mml:mi><mml:mi>j</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:msqrt></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M29" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:msup><mml:mo>)</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mi>j</mml:mi><mml:mo>+</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. The <inline-formula><mml:math id="M30" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula>-axis is taken to be positive downward.</p>
      <p id="d2e1738">According to Luo and Yao (2007), the three components of the magnetic field anomaly <inline-formula><mml:math id="M31" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and its gradient tensors due to the prism at the observation point <inline-formula><mml:math id="M32" display="inline"><mml:mrow><mml:mi>P</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> are given by: 

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M33" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E8"><mml:mtd><mml:mtext>8</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable rowspacing="0.2ex" columnspacing="1em" class="aligned" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>B</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="italic">μ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mi>M</mml:mi></mml:mrow><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi mathvariant="italic">π</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>×</mml:mo><mml:mo mathsize="2.0em">[</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mi>arctan⁡</mml:mi><mml:mfenced close=")" open="("><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mi>ln⁡</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mi>ln⁡</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo mathsize="2.0em">]</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E9"><mml:mtd><mml:mtext>9</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtable columnspacing="1em" class="aligned" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>B</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="italic">μ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mi>M</mml:mi></mml:mrow><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi mathvariant="italic">π</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>×</mml:mo><mml:mo mathsize="2.0em">[</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mi>ln⁡</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mi>arctan⁡</mml:mi><mml:mfenced open="(" close=")"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mi>ln⁡</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo mathsize="2.0em">]</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E10"><mml:mtd><mml:mtext>10</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable rowspacing="0.2ex" columnspacing="1em" class="aligned" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>B</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="italic">μ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mi>M</mml:mi></mml:mrow><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi mathvariant="italic">π</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>×</mml:mo><mml:mo mathsize="2.0em">[</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mi>ln⁡</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mi>ln⁡</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>×</mml:mo><mml:mi>arctan⁡</mml:mi><mml:mfenced open="(" close=")"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mo mathsize="2.0em">]</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E11"><mml:mtd><mml:mtext>11</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable class="aligned" columnspacing="1em" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="italic">μ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mi>M</mml:mi></mml:mrow><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi mathvariant="italic">π</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>×</mml:mo><mml:mo mathsize="2.0em">[</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mi>i</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi>x</mml:mi><mml:mi>i</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mfenced><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi>x</mml:mi><mml:mi>i</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>y</mml:mi><mml:mi>j</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mfenced><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mo mathsize="2.0em">]</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E12"><mml:mtd><mml:mtext>12</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtable columnspacing="1em" class="aligned" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="italic">μ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mi>M</mml:mi></mml:mrow><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi mathvariant="italic">π</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>×</mml:mo><mml:mo mathsize="2.0em">[</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>y</mml:mi><mml:mi>j</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi>y</mml:mi><mml:mi>j</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mfenced><mml:mfenced open="(" close=")"><mml:mrow><mml:msubsup><mml:mi>x</mml:mi><mml:mi>i</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>y</mml:mi><mml:mi>j</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mfenced><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle><mml:mo mathsize="2.0em">]</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E13"><mml:mtd><mml:mtext>13</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable rowspacing="0.2ex" columnspacing="1em" class="aligned" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="italic">μ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mi>M</mml:mi></mml:mrow><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi mathvariant="italic">π</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>×</mml:mo><mml:mo mathsize="2.0em">[</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi>x</mml:mi><mml:mi>i</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mfenced><mml:mfenced open="(" close=")"><mml:mrow><mml:msubsup><mml:mi>y</mml:mi><mml:mi>j</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mfenced><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo mathsize="2.0em">]</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M34" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E14"><mml:mtd><mml:mtext>14</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable rowspacing="0.2ex" columnspacing="1em" class="aligned" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="italic">μ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mi>M</mml:mi></mml:mrow><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi mathvariant="italic">π</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo mathsize="2.0em">[</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo mathsize="2.0em">]</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E15"><mml:mtd><mml:mtext>15</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable columnspacing="1em" class="aligned" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>=</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="italic">μ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mi>M</mml:mi></mml:mrow><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi mathvariant="italic">π</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo mathsize="2.0em">[</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mo mathsize="2.0em">]</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E16"><mml:mtd><mml:mtext>16</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable rowspacing="0.2ex" columnspacing="1em" class="aligned" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="italic">μ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mi>M</mml:mi></mml:mrow><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi mathvariant="italic">π</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo mathsize="2.0em">[</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mo mathsize="2.0em">]</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M35" display="inline"><mml:mi>M</mml:mi></mml:math></inline-formula> is the induced magnetization intensity of the rectangular prism with the inclination (<inline-formula><mml:math id="M36" display="inline"><mml:mrow><mml:msup><mml:mi>I</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>) and declination (<inline-formula><mml:math id="M37" display="inline"><mml:mrow><mml:msup><mml:mi>D</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>), <inline-formula><mml:math id="M38" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mi>cos⁡</mml:mi><mml:msup><mml:mi>I</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mi>cos⁡</mml:mi><mml:msup><mml:mi>D</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M39" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mi>cos⁡</mml:mi><mml:msup><mml:mi>I</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mi>sin⁡</mml:mi><mml:msup><mml:mi>D</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M40" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mi>sin⁡</mml:mi><mml:msup><mml:mi>I</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M41" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">μ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mi mathvariant="italic">π</mml:mi><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">7</mml:mn></mml:mrow></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">H</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mrow></mml:math></inline-formula> is the magnetic permeability of the vacuum.</p>
      <p id="d2e4375">Suppose the magnetic anomaly caused by a magnetic body is small compared with the Earth's main magnetic field. Then the scalar magnitude of the magnetic field anomalies can be approximately calculated by projecting the components of the anomalous field in the direction of the Earth's main magnetic field (Hinze et al., 2013; Plouff, 1976). As a result, the total magnetic intensity anomaly <inline-formula><mml:math id="M42" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>T</mml:mi></mml:mrow></mml:math></inline-formula> and its gradients <inline-formula><mml:math id="M43" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>T</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>T</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>T</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> from the source can be approximated by:

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M44" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E17"><mml:mtd><mml:mtext>17</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>T</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mi>cos⁡</mml:mi><mml:mi>I</mml:mi><mml:mi>cos⁡</mml:mi><mml:mi>D</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mi>cos⁡</mml:mi><mml:mi>I</mml:mi><mml:mi>sin⁡</mml:mi><mml:mi>D</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mi>sin⁡</mml:mi><mml:mi>I</mml:mi><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E18"><mml:mtd><mml:mtext>18</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>T</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub><mml:mi>cos⁡</mml:mi><mml:mi>I</mml:mi><mml:mi>cos⁡</mml:mi><mml:mi>D</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub><mml:mi>cos⁡</mml:mi><mml:mi>I</mml:mi><mml:mi>sin⁡</mml:mi><mml:mi>D</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub><mml:mi>sin⁡</mml:mi><mml:mi>I</mml:mi><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E19"><mml:mtd><mml:mtext>19</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>T</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub><mml:mi>cos⁡</mml:mi><mml:mi>I</mml:mi><mml:mi>cos⁡</mml:mi><mml:mi>D</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub><mml:mi>cos⁡</mml:mi><mml:mi>I</mml:mi><mml:mi>sin⁡</mml:mi><mml:mi>D</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub><mml:mi>sin⁡</mml:mi><mml:mi>I</mml:mi><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E20"><mml:mtd><mml:mtext>20</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>T</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub><mml:mi>cos⁡</mml:mi><mml:mi>I</mml:mi><mml:mi>cos⁡</mml:mi><mml:mi>D</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub><mml:mi>cos⁡</mml:mi><mml:mi>I</mml:mi><mml:mi>sin⁡</mml:mi><mml:mi>D</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub><mml:mi>sin⁡</mml:mi><mml:mi>I</mml:mi><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M45" display="inline"><mml:mi>I</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M46" display="inline"><mml:mi>D</mml:mi></mml:math></inline-formula> are the inclination and declination of the Earth's geomagnetic field at the observation point.</p>
</sec>
<sec id="Ch1.S2.SS2">
  <label>2.2</label><title>Fast forward modelling method</title>
      <p id="d2e4719">In G&amp;M3D 1.0, we define a source region with the range <inline-formula><mml:math id="M47" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>X</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M48" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>Y</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M49" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>Z</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> in the <inline-formula><mml:math id="M50" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M51" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M52" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> axes, respectively. The source space is divided into <inline-formula><mml:math id="M53" display="inline"><mml:mrow><mml:mi>N</mml:mi><mml:mo>×</mml:mo><mml:mi>M</mml:mi><mml:mo>×</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula> prisms, each with dimensions of <inline-formula><mml:math id="M54" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi><mml:mo>×</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>y</mml:mi><mml:mo>×</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:math></inline-formula>.  These prisms are labeled as <inline-formula><mml:math id="M55" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>b</mml:mi><mml:mo>,</mml:mo><mml:mi>c</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, with their dimensions limited to <inline-formula><mml:math id="M56" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi mathvariant="italic">ξ</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mi>a</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ξ</mml:mi><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>a</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M57" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mi>b</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>b</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>y</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M58" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi>c</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mi>c</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mi>c</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>c</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>z</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M59" display="inline"><mml:mrow><mml:mi>a</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi></mml:mrow></mml:math></inline-formula>; <inline-formula><mml:math id="M60" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>M</mml:mi></mml:mrow></mml:math></inline-formula>; <inline-formula><mml:math id="M61" display="inline"><mml:mrow><mml:mi>c</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e5094">The observation points <inline-formula><mml:math id="M62" display="inline"><mml:mrow><mml:mi>P</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M63" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mi>n</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M64" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>N</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M65" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mi>m</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M66" display="inline"><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>M</mml:mi></mml:mrow></mml:math></inline-formula>, are distributed at the horizontal surface <inline-formula><mml:math id="M67" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> at regular intervals, aligned with the prism centers, as shown in Fig. 1. The gravity/magnetic fields at the observation point <inline-formula><mml:math id="M68" display="inline"><mml:mrow><mml:mi>P</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> can be calculated by summing the contributions from all prisms within the source region:

            <disp-formula id="Ch1.E21" content-type="numbered"><label>21</label><mml:math id="M69" display="block"><mml:mtable columnspacing="1em" class="aligned" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi>g</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mspace width="1em" linebreak="nobreak"/><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>c</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:msubsup><mml:mfenced open="[" close="]"><mml:mrow><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>N</mml:mi></mml:msubsup><mml:msubsup><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>M</mml:mi></mml:msubsup><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>b</mml:mi><mml:mo>,</mml:mo><mml:mi>c</mml:mi><mml:mo>)</mml:mo><mml:mo>×</mml:mo><mml:mi>t</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>b</mml:mi><mml:mo>,</mml:mo><mml:mi>c</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M70" display="inline"><mml:mrow><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>b</mml:mi><mml:mo>,</mml:mo><mml:mi>c</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the density contrast or magnetization value corresponding to the prism <inline-formula><mml:math id="M71" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>b</mml:mi><mml:mo>,</mml:mo><mml:mi>c</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M72" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>b</mml:mi><mml:mo>,</mml:mo><mml:mi>c</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the field response at <inline-formula><mml:math id="M73" display="inline"><mml:mrow><mml:mi>P</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> generated by prism <inline-formula><mml:math id="M74" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>b</mml:mi><mml:mo>,</mml:mo><mml:mi>c</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> with unit density contrast or magnetization. Therefore, <inline-formula><mml:math id="M75" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> represents the kernel (or sensitivity) coefficient, which can be evaluated using any of Eqs. (1)–(16), rather than a simple distance-dependent decay term.</p>
      <p id="d2e5554">Thanks to Eq. (21), the gravity/magnetic field at all observation points can be presented in matrix-vector form as follows,

            <disp-formula id="Ch1.E22" content-type="numbered"><label>22</label><mml:math id="M76" display="block"><mml:mrow><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="bold">K</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M77" display="inline"><mml:mi mathvariant="bold-italic">g</mml:mi></mml:math></inline-formula> is the field vector, <inline-formula><mml:math id="M78" display="inline"><mml:mi mathvariant="bold-italic">f</mml:mi></mml:math></inline-formula> is the density contrast or magnetization parameter vector, <inline-formula><mml:math id="M79" display="inline"><mml:mi mathvariant="bold">K</mml:mi></mml:math></inline-formula> represents the kernel matrix (or sensitivity matrix) with dimension <inline-formula><mml:math id="M80" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi>N</mml:mi><mml:mo>×</mml:mo><mml:mi>M</mml:mi><mml:mo>)</mml:mo><mml:mo>×</mml:mo><mml:mo>(</mml:mo><mml:mi>N</mml:mi><mml:mo>×</mml:mo><mml:mi>M</mml:mi><mml:mo>×</mml:mo><mml:mi>L</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, which is classified as a Block–Toeplitz Toeplitz–Block (BTTB) matrix.</p>
      <p id="d2e5630">The forward calculations described in Eq. (22) can be time-consuming, particularly when the source space is large and finely discretized. In this study, we apply a 2D discrete convolution algorithm using block circulant extension (BCE) (Chen and Liu, 2019) to optimize the forward calculations.  In G&amp;M3D 1.0, we conduct forward calculations of potential fields layer by layer along the <inline-formula><mml:math id="M81" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> direction using the BCE algorithm. The procedure for the BCE algorithm (Chen and Liu, 2019) is as follows.</p>
      <p id="d2e5641">First, the density contrast or magnetization values of all the prisms are stored in a 3D matrix <inline-formula><mml:math id="M82" display="inline"><mml:mi mathvariant="bold">E</mml:mi></mml:math></inline-formula> of size <inline-formula><mml:math id="M83" display="inline"><mml:mrow><mml:mi>N</mml:mi><mml:mo>×</mml:mo><mml:mi>M</mml:mi><mml:mo>×</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula>. For any given layer (e.g., the <inline-formula><mml:math id="M84" display="inline"><mml:mi>c</mml:mi></mml:math></inline-formula>th layer, <inline-formula><mml:math id="M85" display="inline"><mml:mrow><mml:mi>c</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula>), the parameter matrix is defined as <inline-formula><mml:math id="M86" display="inline"><mml:mrow><mml:mi mathvariant="bold">f</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="bold-italic">E</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>:</mml:mo><mml:mi>N</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>:</mml:mo><mml:mi>M</mml:mi><mml:mo>,</mml:mo><mml:mi>c</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. A null parameter matrix <inline-formula><mml:math id="M87" display="inline"><mml:mi mathvariant="bold">f</mml:mi></mml:math></inline-formula> (where all elements equal zero) indicates that the prisms in the <inline-formula><mml:math id="M88" display="inline"><mml:mi>c</mml:mi></mml:math></inline-formula>th layer make no contribution to the observed field. For non-zero cases, the matrix <inline-formula><mml:math id="M89" display="inline"><mml:mi mathvariant="bold">f</mml:mi></mml:math></inline-formula> is extended with zeros to form an extended parameter matrix <inline-formula><mml:math id="M90" display="inline"><mml:mi mathvariant="bold">F</mml:mi></mml:math></inline-formula>,

            <disp-formula id="Ch1.E23" content-type="numbered"><label>23</label><mml:math id="M91" display="block"><mml:mrow><mml:mi mathvariant="bold">F</mml:mi><mml:mo>=</mml:mo><mml:mfenced close="]" open="["><mml:mtable class="matrix" columnalign="center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mi mathvariant="bold">f</mml:mi></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mn mathvariant="bold">0</mml:mn><mml:mrow><mml:mi>N</mml:mi><mml:mo>×</mml:mo><mml:mi>M</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mn mathvariant="bold">0</mml:mn><mml:mrow><mml:mi>N</mml:mi><mml:mo>×</mml:mo><mml:mi>M</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mn mathvariant="bold">0</mml:mn><mml:mrow><mml:mi>N</mml:mi><mml:mo>×</mml:mo><mml:mi>M</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

          Next, to implement the BCE-based discrete convolution, the observation range is extended along the negative directions of the <inline-formula><mml:math id="M92" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>-axis and <inline-formula><mml:math id="M93" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>-axis from <inline-formula><mml:math id="M94" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>X</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M95" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>Y</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> to <inline-formula><mml:math id="M96" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mo>-</mml:mo><mml:mi>X</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>X</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M97" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mo>-</mml:mo><mml:mi>Y</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>Y</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>, as shown in Fig. 2.  This extension is necessary because Eq. (21) represents a linear convolution, whereas the FFT inherently evaluates a circular convolution. By embedding the original problem into an extended domain, the linear convolution can be reformulated in a circulant form and computed efficiently without introducing wrap-around boundary errors at the boundaries. We then compute the field effects generated by the prism <inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi>a</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi>c</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (dimensions limited as <inline-formula><mml:math id="M99" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi mathvariant="italic">ξ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ξ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M100" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>y</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M101" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mi>c</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mi>c</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>z</mml:mi><mml:mo>]</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> at all observation points in the extended area. Note that the extended area serves only as an auxiliary computational domain; only the results within the original observation region are retained. This results in an extended response matrix <inline-formula><mml:math id="M102" display="inline"><mml:mi mathvariant="bold">T</mml:mi></mml:math></inline-formula> with a size of <inline-formula><mml:math id="M103" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mo>×</mml:mo><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>M</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> for the <inline-formula><mml:math id="M104" display="inline"><mml:mi>c</mml:mi></mml:math></inline-formula>th layer,

            <disp-formula id="Ch1.E24" content-type="numbered"><label>24</label><mml:math id="M105" display="block"><mml:mrow><mml:mi mathvariant="bold">T</mml:mi><mml:mo>=</mml:mo><mml:mfenced open="[" close="]"><mml:mtable class="matrix" columnalign="center center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mi mathvariant="normal">⋯</mml:mi></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>M</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi mathvariant="normal">⋮</mml:mi></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mrow><mml:msup><mml:mi>n</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi>m</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mi mathvariant="normal">⋮</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mi mathvariant="normal">⋯</mml:mi></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>M</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M106" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mrow><mml:msup><mml:mi>n</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi>m</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msup><mml:mi>n</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>;</mml:mo><mml:msup><mml:mi>m</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>M</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the field response at the observation <inline-formula><mml:math id="M107" display="inline"><mml:mrow><mml:mi>P</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:msup><mml:mi>n</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:msup><mml:mi>m</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> where <inline-formula><mml:math id="M108" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:msup><mml:mi>n</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msup><mml:mi>n</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>-</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M109" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:msup><mml:mi>m</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msup><mml:mi>m</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>-</mml:mo><mml:mi>M</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:math></inline-formula>, which is calculated using Eqs. (1)–(16) with unit density contrast or induced magnetization intensity (namely, <inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M111" display="inline"><mml:mrow><mml:mi>M</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>).</p>
      <p id="d2e6442">We extend <inline-formula><mml:math id="M112" display="inline"><mml:mi mathvariant="bold">T</mml:mi></mml:math></inline-formula> by zeros along the top and the left margins, as shown in Fig. 2. This creates a matrix <inline-formula><mml:math id="M113" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">T</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> with a size of <inline-formula><mml:math id="M114" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>N</mml:mi><mml:mo>×</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>M</mml:mi></mml:mrow></mml:math></inline-formula>,

            <disp-formula id="Ch1.E25" content-type="numbered"><label>25</label><mml:math id="M115" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold">T</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mfenced close="]" open="["><mml:mtable class="matrix" columnalign="center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mn mathvariant="bold">0</mml:mn><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>×</mml:mo><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>M</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mn mathvariant="bold">0</mml:mn><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mi mathvariant="bold">T</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>

      <fig id="F2"><label>Figure 2</label><caption><p id="d2e6549">The sketch map shows the extended observation points and source region for the BCE method. The extended observation points are shown in red, and the observation points in the original observation domain are shown in black. The prism (<inline-formula><mml:math id="M116" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>) is marked in blue. A single-layer model consisting of <inline-formula><mml:math id="M117" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:math></inline-formula> prisms is taken as an example.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/5173/2026/gmd-19-5173-2026-f02.png"/>

        </fig>

      <p id="d2e6582">The matrix <inline-formula><mml:math id="M118" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">T</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> in Eq. (25) can then be rewritten into four <inline-formula><mml:math id="M119" display="inline"><mml:mrow><mml:mi>N</mml:mi><mml:mo>×</mml:mo><mml:mi>M</mml:mi></mml:mrow></mml:math></inline-formula> submatrices as,

            <disp-formula id="Ch1.E26" content-type="numbered"><label>26</label><mml:math id="M120" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold">T</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mfenced close="]" open="["><mml:mtable class="matrix" columnalign="center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">t</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">11</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">t</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">12</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">t</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">21</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">t</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">22</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          By reordering the submatrices in Eq. (26), we get

            <disp-formula id="Ch1.E27" content-type="numbered"><label>27</label><mml:math id="M121" display="block"><mml:mrow><mml:mi mathvariant="bold">C</mml:mi><mml:mo>=</mml:mo><mml:mfenced close="]" open="["><mml:mtable class="matrix" columnalign="center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">t</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">22</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">t</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">21</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">t</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">12</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">t</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">11</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          The matrix <inline-formula><mml:math id="M122" display="inline"><mml:mi mathvariant="bold-italic">C</mml:mi></mml:math></inline-formula> in Eq. (27) is identified as a Block–Cyclic–Cyclic–Block (BCCB) matrix. The 2D discrete convolution of this matrix with the extended parameter matrix <inline-formula><mml:math id="M123" display="inline"><mml:mi mathvariant="bold">F</mml:mi></mml:math></inline-formula> can be efficiently computed using the fast Fourier transform (Chen and Liu, 2019; Vogel, 2002) as follows,

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M124" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E28"><mml:mtd><mml:mtext>28</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mover accent="true"><mml:mi mathvariant="bold">C</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mtext>fft</mml:mtext><mml:mn mathvariant="normal">2</mml:mn><mml:mo>(</mml:mo><mml:mi mathvariant="bold">C</mml:mi><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E29"><mml:mtd><mml:mtext>29</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mover accent="true"><mml:mi mathvariant="bold">F</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mtext>fft</mml:mtext><mml:mn mathvariant="normal">2</mml:mn><mml:mo>(</mml:mo><mml:mi mathvariant="bold">F</mml:mi><mml:mo>)</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E30"><mml:mtd><mml:mtext>30</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mover accent="true"><mml:mi mathvariant="bold">G</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold">C</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo>.</mml:mo><mml:mo>∗</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold">F</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E31"><mml:mtd><mml:mtext>31</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="bold">G</mml:mi><mml:mo>=</mml:mo><mml:mtext>ifft</mml:mtext><mml:mn mathvariant="normal">2</mml:mn><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold">G</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mo>)</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E32"><mml:mtd><mml:mtext>32</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="bold">G</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="bold">G</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>:</mml:mo><mml:mi>N</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>:</mml:mo><mml:mi>M</mml:mi><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M125" display="inline"><mml:mrow><mml:mtext>fft</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> is the 2D fast Fourier transform, and <inline-formula><mml:math id="M126" display="inline"><mml:mrow><mml:mtext>ifft</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> denotes the 2D inverse fast Fourier transform. The symbol <inline-formula><mml:math id="M127" display="inline"><mml:mrow><mml:mo>.</mml:mo><mml:mo>∗</mml:mo></mml:mrow></mml:math></inline-formula> represents the dot multiplication operator. <inline-formula><mml:math id="M128" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">G</mml:mi><mml:mi>c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the resulting field at the observations generated by the anomalous prisms in the <inline-formula><mml:math id="M129" display="inline"><mml:mi>c</mml:mi></mml:math></inline-formula>th layer.</p>
      <p id="d2e6953">Repeat these steps for each layer, and the total field <inline-formula><mml:math id="M130" display="inline"><mml:mi mathvariant="bold-italic">g</mml:mi></mml:math></inline-formula> at all observations is obtained by,

            <disp-formula id="Ch1.E33" content-type="numbered"><label>33</label><mml:math id="M131" display="block"><mml:mrow><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>c</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msub><mml:mi mathvariant="bold">G</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          From a programming perspective, we implement two strategies to enhance computational efficiency in G&amp;M3D 1.0.</p>
<sec id="Ch1.S2.SS2.SSS1">
  <label>2.2.1</label><title>Strategy 1</title>
      <p id="d2e7000">We take advantage of the fast matrix operation in Qt to optimize the forward calculations in G&amp;M3D 1.0. We construct in advance two new matrices <inline-formula><mml:math id="M132" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">X</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M133" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> with sizes of <inline-formula><mml:math id="M134" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mo>×</mml:mo><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>M</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>,

                  <disp-formula specific-use="align" content-type="numbered"><mml:math id="M135" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E34"><mml:mtd><mml:mtext>34</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="bold">X</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mfenced close="]" open="["><mml:mtable class="matrix" columnalign="center center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mi mathvariant="normal">⋯</mml:mi></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi mathvariant="normal">⋮</mml:mi></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:msup><mml:mi>n</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mi mathvariant="normal">⋮</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mi mathvariant="normal">⋯</mml:mi></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">ξ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mi mathvariant="bold">I</mml:mi><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E35"><mml:mtd><mml:mtext>35</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="bold">Y</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mfenced close="]" open="["><mml:mtable class="matrix" columnalign="center center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mi mathvariant="normal">⋯</mml:mi></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>M</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi mathvariant="normal">⋮</mml:mi></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:msup><mml:mi>m</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mi mathvariant="normal">⋮</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mi mathvariant="normal">⋯</mml:mi></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>M</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mi mathvariant="bold">I</mml:mi><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

            where <inline-formula><mml:math id="M136" display="inline"><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M137" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:msup><mml:mi>n</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msup><mml:mi>n</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>-</mml:mo><mml:mi>N</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M138" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:msup><mml:mi>m</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msup><mml:mi>m</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>-</mml:mo><mml:mi>M</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M139" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msup><mml:mi>n</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>; <inline-formula><mml:math id="M140" display="inline"><mml:mrow><mml:msup><mml:mi>m</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>M</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M141" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ξ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M142" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ξ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M143" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M144" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:math></inline-formula>. <inline-formula><mml:math id="M145" display="inline"><mml:mi mathvariant="bold">I</mml:mi></mml:math></inline-formula> is an all-ones matrix. Thanks to the Eqs. (32) and (33), we can substitute the matrices <inline-formula><mml:math id="M146" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">X</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M147" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> to <inline-formula><mml:math id="M148" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M149" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> in any of the Eqs. (1)–(16). This allows the extended response matrix <inline-formula><mml:math id="M150" display="inline"><mml:mi mathvariant="bold">T</mml:mi></mml:math></inline-formula> at all observations to be computed by a single dot product in Qt, rather than relying on a large number of cyclic calculations.</p>
</sec>
<sec id="Ch1.S2.SS2.SSS2">
  <label>2.2.2</label><title>Strategy 2</title>
      <p id="d2e7565">Since the kernel matrices for gravity and magnetic components under vertical magnetization are symmetric (Hogue et al., 2020), <inline-formula><mml:math id="M151" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M152" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> in Eqs. (8)–(16) are zero, and only <inline-formula><mml:math id="M153" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> remains.  In these cases, we only calculate the submatrix <inline-formula><mml:math id="M154" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">t</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">22</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> in <inline-formula><mml:math id="M155" display="inline"><mml:mi mathvariant="bold">C</mml:mi></mml:math></inline-formula> (Eq. 27) for these cases. The other three submatrices <inline-formula><mml:math id="M156" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">t</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">11</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">t</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">12</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">t</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">21</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> can be derived from <inline-formula><mml:math id="M157" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">t</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">22</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, because they share the same value or have the opposite sign as <inline-formula><mml:math id="M158" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">t</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">22</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>. This strategy results in a higher efficiency for forward calculations of gravity anomalies, gravity gradient tensor, and magnetic components with vertical magnetization compared to those for the magnetic field with non-vertical magnetization. As we know, the forward calculations of magnetic fields depend on the declination and inclination of the sources. If the anomalous bodies in the source model have varying declinations or inclinations, we classify these bodies by their declinations or inclinations and perform forward calculations of each category separately.</p>
</sec>
</sec>
<sec id="Ch1.S2.SS3">
  <label>2.3</label><title>Synthetic model tests</title>
      <p id="d2e7698">To verify the efficiency of the forward calculation in G&amp;M3D 1.0, we design a synthetic model with specified density contrast and magnetization for gravity and magnetic forward calculations. The model region extends from 0–50 km along the <inline-formula><mml:math id="M159" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M160" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M161" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> axes. It consists of an anomalous body with a density contrast of 1 <inline-formula><mml:math id="M162" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">g</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">cm</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> and an induced magnetization of 1 <inline-formula><mml:math id="M163" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">A</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. The center of the body is located at (25, 25, 25) <inline-formula><mml:math id="M164" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">km</mml:mi></mml:mrow></mml:math></inline-formula> with a size of <inline-formula><mml:math id="M165" display="inline"><mml:mrow><mml:mn mathvariant="normal">25</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">km</mml:mi></mml:mrow><mml:mo>×</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">km</mml:mi></mml:mrow><mml:mo>×</mml:mo><mml:mn mathvariant="normal">20</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">km</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e7793">We evaluate the computation time for gravity and magnetic forward calculations at five different numerical resolutions, employing <inline-formula><mml:math id="M166" display="inline"><mml:mrow><mml:mn mathvariant="normal">50</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">50</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">50</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M167" display="inline"><mml:mrow><mml:mn mathvariant="normal">100</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">100</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M168" display="inline"><mml:mrow><mml:mn mathvariant="normal">200</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">200</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">200</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M169" display="inline"><mml:mrow><mml:mn mathvariant="normal">400</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">400</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">400</mml:mn></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M170" display="inline"><mml:mrow><mml:mn mathvariant="normal">800</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">800</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">800</mml:mn></mml:mrow></mml:math></inline-formula> prisms in the <inline-formula><mml:math id="M171" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>-, <inline-formula><mml:math id="M172" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>-, and <inline-formula><mml:math id="M173" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula>-directions, respectively. This corresponds to grid intervals of 1000, 500, 250, 125 and 62.5 m. In these tests, the observation points are set at the horizontal positions corresponding to the prism centers. Consequently, as the numerical resolution increases, the number of observation points also grows accordingly. The absolute computation times for the forward calculation of the gravity and magnetic fields are summarized in Table 1.</p>

<table-wrap id="T1" specific-use="star"><label>Table 1</label><caption><p id="d2e7903">The statistics of the absolute consumption times for forward computations of the gravity and magnetic fields with five different numerical resolutions.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="4">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1">Grid interval (m)/</oasis:entry>
         <oasis:entry rowsep="1" namest="col2" nameend="col4" align="center">Values are reported as serial/parallel computation times (s) </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Numerical resolutions</oasis:entry>
         <oasis:entry colname="col2">Gravity</oasis:entry>
         <oasis:entry colname="col3">Magnetic components</oasis:entry>
         <oasis:entry colname="col4">Magnetic components</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">components</oasis:entry>
         <oasis:entry colname="col3">for vertical magnetization</oasis:entry>
         <oasis:entry colname="col4">for non-vertical magnetization</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M174" display="inline"><mml:mrow><mml:mn mathvariant="normal">1000.0</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">50</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">50</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">50</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M175" display="inline"><mml:mrow><mml:mn mathvariant="normal">0.16</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">0.03</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M176" display="inline"><mml:mrow><mml:mn mathvariant="normal">0.15</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">0.02</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M177" display="inline"><mml:mrow><mml:mn mathvariant="normal">0.46</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">0.12</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M178" display="inline"><mml:mrow><mml:mn mathvariant="normal">500.0</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">100</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">100</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M179" display="inline"><mml:mrow><mml:mn mathvariant="normal">1.32</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">0.55</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M180" display="inline"><mml:mrow><mml:mn mathvariant="normal">1.45</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">0.56</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M181" display="inline"><mml:mrow><mml:mn mathvariant="normal">4.05</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">1.34</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M182" display="inline"><mml:mrow><mml:mn mathvariant="normal">250.0</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">200</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">200</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">200</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M183" display="inline"><mml:mrow><mml:mn mathvariant="normal">10.15</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2.52</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M184" display="inline"><mml:mrow><mml:mn mathvariant="normal">9.68</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2.93</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M185" display="inline"><mml:mrow><mml:mn mathvariant="normal">34.37</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">13.93</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M186" display="inline"><mml:mrow><mml:mn mathvariant="normal">125.0</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">400</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">400</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">400</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M187" display="inline"><mml:mrow><mml:mn mathvariant="normal">39.69</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">12.48</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M188" display="inline"><mml:mrow><mml:mn mathvariant="normal">50.38</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">20.99</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M189" display="inline"><mml:mrow><mml:mn mathvariant="normal">131.60</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">39.16</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M190" display="inline"><mml:mrow><mml:mn mathvariant="normal">62.5</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">800</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">800</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">800</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M191" display="inline"><mml:mrow><mml:mn mathvariant="normal">331.25</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">98.58</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M192" display="inline"><mml:mrow><mml:mn mathvariant="normal">425.99</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">143.84</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M193" display="inline"><mml:mrow><mml:mn mathvariant="normal">1119.36</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">433.86</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table><table-wrap-foot><p id="d2e7906">Note. All the tests are carried out on a desktop with an AMD Ryzen 7 3700X CPU (8 cores) and 32 GB of memory.</p></table-wrap-foot></table-wrap>

      <p id="d2e8283">Table 1 shows that the computation time increases significantly as the numerical resolution increases. Note that the output results of the gravity calculation in Table 1 consist of 7 components, i.e., <inline-formula><mml:math id="M194" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>g</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M195" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M196" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M197" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M198" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M199" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M200" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, and the results of magnetic forward modelling include 13 components (i.e., <inline-formula><mml:math id="M201" display="inline"><mml:mrow><mml:msub><mml:mi>B</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M202" display="inline"><mml:mrow><mml:msub><mml:mi>B</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M203" display="inline"><mml:mrow><mml:msub><mml:mi>B</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M204" display="inline"><mml:mrow><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M205" display="inline"><mml:mrow><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M206" display="inline"><mml:mrow><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M207" display="inline"><mml:mrow><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M208" display="inline"><mml:mrow><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M209" display="inline"><mml:mrow><mml:msub><mml:mi>B</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M210" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>T</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M211" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>T</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M212" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>T</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M213" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>T</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>). Due to the implementation of Strategy 2, which decouples the computation of vertically and non-vertically magnetized models, the efficiency of forward modelling improves significantly. In a <inline-formula><mml:math id="M214" display="inline"><mml:mrow><mml:mn mathvariant="normal">200</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">200</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">200</mml:mn></mml:mrow></mml:math></inline-formula> grid case, the computation time is reduced by 71.83 % (34.37 s vs. 9.68 s). These tests demonstrate that G&amp;M3D 1.0 is a high-speed tool for forward calculations of the gravity and magnetic fields. It is worth noting that the layers with non-zero density/magnetization occupy 40 % of the total layers in the <inline-formula><mml:math id="M215" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> direction in these tests. The forward calculation is faster if the anomalous body's vertical dimension is reduced, but it requires more time if the vertical dimension increases. For example, in the <inline-formula><mml:math id="M216" display="inline"><mml:mrow><mml:mn mathvariant="normal">100</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">100</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula> case, under vertical magnetization conditions, two anomalous bodies with the same number of non-zero prisms but different spatial distributions, namely <inline-formula><mml:math id="M217" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula> prisms and <inline-formula><mml:math id="M218" display="inline"><mml:mrow><mml:mn mathvariant="normal">100</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> prisms, require total computation times of about 2.65 and 0.04 s, respectively, when calculating gravity anomalies, magnetic anomalies, and the corresponding gradient components.</p>
      <p id="d2e8621">To further enhance the computational performance, we implement parallel computation for the layer-by-layer forward calculations along the <inline-formula><mml:math id="M219" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula>-direction. In the BCE framework, the field contribution of each layer is computed independently, and the final response is obtained by summing the contributions from all layers. The parallelization is realized using task-based multithreading (standard C++), where layer-wise forward responses are launched asynchronously and collected after completion. Using the same synthetic model, discretized into <inline-formula><mml:math id="M220" display="inline"><mml:mrow><mml:mn mathvariant="normal">200</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">200</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">200</mml:mn></mml:mrow></mml:math></inline-formula> prisms, we record the computation times under vertical magnetization conditions using 8 threads, and the computation is approximately 3.45 times faster than that of the serial implementation.</p>
      <p id="d2e8647">To evaluate G&amp;M3D 1.0 against existing open-source tools, we compare its computational efficiency with SimPEG (Cockett et al., 2015). For the <inline-formula><mml:math id="M221" display="inline"><mml:mrow><mml:mn mathvariant="normal">200</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">200</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">200</mml:mn></mml:mrow></mml:math></inline-formula> case, the gravity forward calculation in SimPEG takes 1606.62 s, whereas G&amp;M3D 1.0 requires only 2.52 s. Notably, at <inline-formula><mml:math id="M222" display="inline"><mml:mrow><mml:mn mathvariant="normal">800</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">800</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">800</mml:mn></mml:mrow></mml:math></inline-formula> resolution, SimPEG fails due to excessive memory overflow, while G&amp;M3D 1.0 maintains robust performance.</p>
      <p id="d2e8682">To validate the computational accuracy of G&amp;M3D 1.0, we design a synthetic model consisting of three buried spheres, for which analytical solutions are available. The centers of the three spheres are located at (50, 55, 50 m), (140, 75, 65 m), and (110, 155, 80 m), with radii of 20, 30 and 35 m, respectively. The density contrasts are all set to 1 <inline-formula><mml:math id="M223" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">g</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">cm</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, and the induced magnetizations are all set to 1 <inline-formula><mml:math id="M224" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">A</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. The computational domain is <inline-formula><mml:math id="M225" display="inline"><mml:mrow><mml:mn mathvariant="normal">200</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow><mml:mo>×</mml:mo><mml:mn mathvariant="normal">200</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow><mml:mo>×</mml:mo><mml:mn mathvariant="normal">200</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula>, which is discretized into <inline-formula><mml:math id="M226" display="inline"><mml:mrow><mml:mn mathvariant="normal">800</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">800</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">800</mml:mn></mml:mrow></mml:math></inline-formula> cells. Gravity anomalies <inline-formula><mml:math id="M227" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>g</mml:mi></mml:mrow></mml:math></inline-formula> and magnetic anomalies <inline-formula><mml:math id="M228" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>T</mml:mi></mml:mrow></mml:math></inline-formula> are calculated separately, and the corresponding analytical solutions serve as references. The computed and analytical results are compared in Fig. 3. As shown in Fig. 3, the differences between our results and the analytical solutions are negligible.  The maximum absolute errors of the gravity and magnetic anomalies are <inline-formula><mml:math id="M229" display="inline"><mml:mrow><mml:mn mathvariant="normal">7.5</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:msup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">mGal</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M230" display="inline"><mml:mrow><mml:mn mathvariant="normal">5.4</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">nT</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula>, respectively.</p>

      <fig id="F3" specific-use="star"><label>Figure 3</label><caption><p id="d2e8830">Comparison between analytical solutions and BCE results for gravity and magnetic anomalies produced by a synthetic model of three buried spheres.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/5173/2026/gmd-19-5173-2026-f03.png"/>

        </fig>

</sec>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>The framework and functions of G&amp;M3D</title>
      <p id="d2e8849">In this section, we introduce the functions and operational procedures of G&amp;M3D 1.0. A detailed software instruction manual, including installation steps, model construction, forward modelling settings and result visualization, is provided in the Supplement. The software consists of two main modules: (1) a 3D-Modelling module for constructing source bodies and assigning physical properties, and (2) a Forward-Modelling module for calculating and visualizing the resulting gravity and magnetic fields. The workflow of G&amp;M3D 1.0 is shown in Fig. 4. Architecturally, G&amp;M3D 1.0 separates interactive model construction from numerical forward computation, with model data serving as an intermediate layer between the GUI and the forward-calculation kernels, thereby enhancing maintainability and extensibility. In addition, the software supports topography modelling.  Users can import and visualize a topographic surface, where anomalous bodies are constrained to remain below it, and observation points can be assigned topography-dependent elevations for forward calculations over non-planar observation surfaces.</p>

      <fig id="F4" specific-use="star"><label>Figure 4</label><caption><p id="d2e8854">Workflow in G&amp;M3D 1.0 and G&amp;M3D 1.0 initial interface.</p></caption>
        <graphic xlink:href="https://gmd.copernicus.org/articles/19/5173/2026/gmd-19-5173-2026-f04.png"/>

      </fig>

      <p id="d2e8863">G&amp;M3D 1.0 is based on a right-handed Cartesian coordinate system. When users open G&amp;M3D 1.0 and enter the start interface (Fig. 4), they can access the 3D-Modelling module to create a new source model by clicking the button <bold>Create Model</bold>, or they can input an existing model data file to conduct gravity or magnetic forward calculations through the Forward-Modelling module by clicking the button <bold>Input Model</bold>.</p>
      <p id="d2e8873">The main interface of the Modelling module is shown in Fig. 5a. By default, G&amp;M3D 1.0 generates an initial source region (Fig. 5b). To customize this for their needs, users should first set the source region by clicking the “Settings” button in the operation area of the main interface. In the pop-up window for the Setting Field (Fig. 5b), users can configure the basic parameters that define the source region, including the source range, mesh interval, and length unit. The supported length units are meters (m), hectometers (hm), and kilometers (km), which allow for multi-scale forward modelling simulations. If a topographic file is available, users should import it before model construction by using the “Import Topo” function in G&amp;M3D 1.0.</p>

      <fig id="F5" specific-use="star"><label>Figure 5</label><caption><p id="d2e8879"><bold>(a)</bold> Interface of the Modelling Module. The top functional area contains tools for creating different shapes on the left and various action buttons on the right. The middle workspace is used to display the created models (the 2D floor plan is shown in three areas on the right), and the body list is shown on the left. <bold>(b)</bold> Setting Field window showing the default initial source model settings.</p></caption>
        <graphic xlink:href="https://gmd.copernicus.org/articles/19/5173/2026/gmd-19-5173-2026-f05.png"/>

      </fig>

      <fig id="F6" specific-use="star"><label>Figure 6</label><caption><p id="d2e8895">Parameter input interfaces for the five regular tools, including <bold>(a)</bold> Sphere, <bold>(b)</bold> Cuboid, <bold>(c)</bold> Cylinder, <bold>(d)</bold> Ellipsoid, and <bold>(e)</bold> Prismoid.</p></caption>
        <graphic xlink:href="https://gmd.copernicus.org/articles/19/5173/2026/gmd-19-5173-2026-f06.png"/>

      </fig>

      <p id="d2e8919">After that, users can select one of the tools on the “Add Body” panel to create anomalous bodies. G&amp;M3D 1.0 supports sequential creation of multiple anomaly bodies, with all generated bodies automatically listed in the “Body List” section. To ensure modelling flexibility and operational efficiency, right-click functionality is provided for existing anomalies, allowing users to modify and delete them. The modification process uses the same intuitive interface as the creation process, making it just as easy to change bodies as it is to create them. G&amp;M3D 1.0 also allows overlapping anomalous bodies. In overlapping regions, the physical properties of the later-created body overwrite those previously assigned to the corresponding prisms.</p>
      <p id="d2e8922">The following section explains the construction methods for regular and irregular bodies, which differ in their modelling approaches. However, both types share the same parameter configurations for gravity and magnetic properties. As shown in the “Property” panel of Fig. 6, only four parameters need to be specified: density contrast, induced magnetization intensity, magnetic declination, and magnetic inclination. Spatially heterogeneous physical-property distributions within a single body can be represented in G&amp;M3D 1.0 through continuously varying functions. In particular, the software supports user-defined functional forms, which allow flexible construction of bodies with spatially variable density contrast or magnetization.</p>
      <p id="d2e8926">G&amp;M3D 1.0 provides five tools for creating regular-shaped bodies: <bold>Sphere</bold>, <bold>Cuboid</bold>, <bold>Cylinder</bold>, <bold>Ellipsoid</bold> and <bold>Prismoid</bold>. Figure 6 displays the parameter input interfaces for each tool. (1) <bold>Sphere</bold>: This tool requires the radius and the coordinates of the sphere's center. (2) <bold>Cuboid</bold>: Users must input the geometric centre coordinates and the extension lengths along three orthogonal axes.  (3) <bold>Cylinder</bold>: Four key parameters are needed to define a cylinder, including the trend direction, extension length, cross-sectional radius, and section centre coordinates. (4) <bold>Ellipsoid</bold>: A rotated ellipsoid is defined by the centre coordinates, the radii of the three semi-axes, and the rotation angle. (5) <bold>Prismoid</bold>: This geometry is defined by three sets of spatial parameters: the <inline-formula><mml:math id="M231" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>-coordinates of its four <inline-formula><mml:math id="M232" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>-parallel edges, the <inline-formula><mml:math id="M233" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>-coordinates of its four <inline-formula><mml:math id="M234" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>-parallel edges, and the <inline-formula><mml:math id="M235" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula>-values for its top and bottom planes. To enhance modelling flexibility, the “Direction” parameter specifies the normal vector orientation of the bounding planes relative to the coordinate axes. The <bold>Prismoid</bold> tool maintains strict geometric validity by enforcing essential constraints: the <inline-formula><mml:math id="M236" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>-coordinates must be monotonically increasing (<inline-formula><mml:math id="M237" display="inline"><mml:mrow><mml:mi>x</mml:mi><mml:mn mathvariant="normal">1</mml:mn><mml:mo>&lt;</mml:mo><mml:mi>x</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula>), and the <inline-formula><mml:math id="M238" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>-coordinates (<inline-formula><mml:math id="M239" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mn mathvariant="normal">1</mml:mn><mml:mo>&lt;</mml:mo><mml:mi>y</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula>) likewise, ensuring proper spatial relationships for meaningful prism construction. All bodies require input of either density contrast or magnetization. Additionally, the “Mark” panel allows users to customize both the body's name and display colour according to their preferences. As an example, we create two bodies using each tool, resulting in a total of ten bodies, which are presented in Fig. 7.</p>

      <fig id="F7" specific-use="star"><label>Figure 7</label><caption><p id="d2e9048">Illustration of regular modelling tools showing ten anomalous bodies.</p></caption>
        <graphic xlink:href="https://gmd.copernicus.org/articles/19/5173/2026/gmd-19-5173-2026-f07.png"/>

      </fig>

      <p id="d2e9057">G&amp;M3D 1.0 features an <bold>Irregular</bold> tool that enables users to create irregular bodies, as shown in Fig. 8. With the <bold>Irregular</bold> tool, users can accurately construct irregularly shaped bodies by interactively drawing their spatial boundaries across multiple layers. This layer-stacking method allows for the reconstruction of complex volumetric shapes that cannot be represented using conventional geometric primitives.  G&amp;M3D 1.0 automatically generates a set of prisms that fit within the limits defined by users in one layer, extending along the <inline-formula><mml:math id="M240" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M241" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>, or <inline-formula><mml:math id="M242" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> direction.  To enhance operational efficiency, the software employs a dual-mode: Build Mode for creating anomalous prismatic units, and Erase Mode for removing existing anomalous units. These complementary modes work in tandem to minimize operational errors, effectively eliminating the need for complete rebuilds in case of mistakes. To maximize operational flexibility while avoiding redundant constraints, both modes maintain identical workflows and interaction processes. To facilitate reference-guided modelling, the Irregular tool also allows users to load a semi-transparent background image as a visual reference (Fig. 8).</p>

      <fig id="F8" specific-use="star"><label>Figure 8</label><caption><p id="d2e9089">Interface of the Irregular tool. The main area is used to delineate the boundaries of the anomalous bodies. Right panels contain functional zones and parameter setting areas. Build Completed and Cancel buttons are used to finalize or abort the entire irregular modelling process, while all other functions only operate on the current layer. In this example, a screenshot adapted from Thomas (1997) is used as a semi-transparent background template to construct an irregular sulphide deposit with a density contrast of 1.5 <inline-formula><mml:math id="M243" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">g</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">cm</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>.</p></caption>
        <graphic xlink:href="https://gmd.copernicus.org/articles/19/5173/2026/gmd-19-5173-2026-f08.jpg"/>

      </fig>

      <p id="d2e9115">In the <bold>Irregular</bold> tool, G&amp;M3D 1.0 offers four drawing modes: <bold>Rectangle</bold>, <bold>Circular</bold>, <bold>Custom</bold>, and <bold>Single Click</bold>. The modelling process uses a standardized left-click operation across all modes. Users press and hold the mouse button to activate a real-time visual preview of the modelling area, and release it to confirm and finalize the operation. In the <bold>Custom</bold> mode, users can draw any closed curve to define the boundary of the anomalous body, allowing automatically generated prisms to fit the boundaries more accurately with gradual sketching. To enhance workflow efficiency, G&amp;M3D 1.0 includes <bold>Copy</bold> and <bold>Paste</bold> functionality for layers. Once users have finalized the geometric modelling and parameter settings (via the unified Property panel, consistent with regular modelling tools) for the current layer, they must manually save the layer data using the <bold>Save Layer </bold>option. After completing the model construction for all target layers, users can execute the “<bold>Build Completed</bold>” command to finalize and save the complete dataset. An example of constructing an irregular sulphide deposit model beneath undulating topography is shown in Fig. 9.</p>

      <fig id="F9" specific-use="star"><label>Figure 9</label><caption><p id="d2e9152">An irregular sulphide deposit model constructed using the Irregular tool.</p></caption>
        <graphic xlink:href="https://gmd.copernicus.org/articles/19/5173/2026/gmd-19-5173-2026-f09.png"/>

      </fig>

      <p id="d2e9161">Once all anomalous bodies have been constructed, G&amp;M3D 1.0 allows users to export both the model geometry and the corresponding physical property distributions in multiple data formats. Supported export formats currently include binary, text and UBC-GIF, which can be selected directly from the drop-down menu in the <bold>Export</bold> tool. This design not only facilitates the segmentation of workflows between building source models and forward modelling tasks, potentially assigned to different operators, but also enhances operational flexibility throughout the gravity and magnetic data processing workflow. The binary .bin format efficiently retains comprehensive parametric data, while the text-based .txt export adheres to standardized formatting specifications to facilitate interdisciplinary data exchange.</p>
      <p id="d2e9167">G&amp;M3D 1.0 provides two methods for forward modelling. Users can either initiate the computation through the <bold>Forward</bold> tool found in the “Operate” panel (Fig. 5) to build source models and perform forward modelling within a unified project environment or directly import the pre-constructed models into the Forward-Modelling module using the <bold>Input Model</bold> option (Fig. 4). Figure 10 shows the main interface of the Forward-Modelling module. To perform forward calculations, users must first select the desired anomalous bodies by checking the corresponding boxes in the “Body list” panel. Once the bodies are selected, users can initiate the forward modelling process by clicking the <bold>Forward Model</bold> button, which opens the Forward Model interface (Fig. 10b). In this interface, users configure the observation parameters, including observation height and optional noise levels for simulating mobile-platform gravity and magnetic surveys. In addition, users can choose whether to enable parallel computation and whether to perform the calculation with topography. After configuring these settings, clicking the <bold>ok</bold> button will execute the forward calculation. Upon completion, G&amp;M3D 1.0 automatically generates a pseudocolor plot of the results. Users can switch between different datasets using the drop-down box. The forward modelling results can be viewed in G&amp;M3D 1.0 or exported as datasets by clicking the <bold>Save Data</bold> button.</p>

      <fig id="F10" specific-use="star"><label>Figure 10</label><caption><p id="d2e9187"><bold>(a)</bold> Interface of the Forward-Modelling module. The left workspace is used to visualize the gravity/magnetic field. The upper right area shows the body list, and different bodies can be selected for forward calculation.  The functional control area is located in the lower right section. A sulphide deposit is shown as an example, adapted according to Thomas (1997). <bold>(b)</bold> Parameter input pop-up window for Gravity forward modelling, Magnetic forward modelling. A certain proportion of Gaussian noise can be added to the field values to simulate errors. Mag-Inclination and Mag-Declination correspond to the inclination (<inline-formula><mml:math id="M244" display="inline"><mml:mi>I</mml:mi></mml:math></inline-formula>) and declination (<inline-formula><mml:math id="M245" display="inline"><mml:mi>D</mml:mi></mml:math></inline-formula>) of the Earth's geomagnetic field in Eqs. (17)–(20). Users can freely select the field category to be calculated. <bold>(c)</bold> Results calculated over undulating topography.</p></caption>
        <graphic xlink:href="https://gmd.copernicus.org/articles/19/5173/2026/gmd-19-5173-2026-f10.jpg"/>

      </fig>

</sec>
<sec id="Ch1.S4">
  <label>4</label><title>Application</title>
      <p id="d2e9226">The 3D modelling and forward calculations of the gravity and magnetic fields in G&amp;M3D 1.0 provide practical tools for potential data analysis and interpretation. Although inversion is not implemented in the current version, the software provides flexible initial or synthetic models for studies related to inversion. Researchers often conduct synthetic model experiments to test the feasibility of their algorithms and assess parameter sensitivity. With G&amp;M3D 1.0, they can easily create numerous density contrast or susceptibility models and quickly obtain the gravity/magnetic data. Moreover, G&amp;M3D 1.0 serves as a practical educational resource for teaching geophysics, particularly for beginners in gravity and magnetic exploration. Educators and students can utilize G&amp;M3D 1.0 to construct simplified geophysical models, enabling them to explore the principles of the potential fields through interactive visualization and analysis.</p>
      <p id="d2e9229">To illustrate the functionality of G&amp;M3D 1.0, we perform a gravity modelling analysis of a representative salt dome as an example. This salt dome model is based on available seismic and drill-hole data from Vinton Dome in southern Louisiana (Ennen, 2012). It features a caprock with positive-density contrast at depths ranging from 160–760 m, alongside a negative-density contrast salt volume located deeper. In the study by Ennen (2012), gravity gradients produced by this salt dome model are calculated and compared to observed airborne gravity gradient data to identify potential oil signals. As highlighted by Ennen (2012), constructing such an irregular density contrast model for a salt dome is a labor-intensive process.</p>
      <p id="d2e9232">In this example, we utilize the salt dome model described by Ennen (2012) to demonstrate the 3-D modelling and forward calculations of gravity gradients using G&amp;M3D 1.0. According to this study, the source space is divided into <inline-formula><mml:math id="M246" display="inline"><mml:mrow><mml:mn mathvariant="normal">66</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">45</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">28</mml:mn></mml:mrow></mml:math></inline-formula> prisms with dimensions of <inline-formula><mml:math id="M247" display="inline"><mml:mrow><mml:mn mathvariant="normal">100</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow><mml:mo>×</mml:mo><mml:mn mathvariant="normal">100</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow><mml:mo>×</mml:mo><mml:mn mathvariant="normal">100</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula>. The density anomaly of the salt dome varies in geometry at different depths, with differing density contrasts, as presented in Table 2.</p>

<table-wrap id="T2"><label>Table 2</label><caption><p id="d2e9283">Density contrast distribution of the salt dome model along the depth.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="3">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1">Anomalous</oasis:entry>
         <oasis:entry colname="col2">Depth range</oasis:entry>
         <oasis:entry colname="col3">Density contrast</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">body number</oasis:entry>
         <oasis:entry colname="col2">of sources (m)</oasis:entry>
         <oasis:entry colname="col3">(<inline-formula><mml:math id="M248" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">kg</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>)</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">1</oasis:entry>
         <oasis:entry colname="col2">60–160</oasis:entry>
         <oasis:entry colname="col3">575</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">2</oasis:entry>
         <oasis:entry colname="col2">160–260</oasis:entry>
         <oasis:entry colname="col3">575</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">3</oasis:entry>
         <oasis:entry colname="col2">260–360</oasis:entry>
         <oasis:entry colname="col3">400</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">4</oasis:entry>
         <oasis:entry colname="col2">360–460</oasis:entry>
         <oasis:entry colname="col3">400</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">5</oasis:entry>
         <oasis:entry colname="col2">460–760</oasis:entry>
         <oasis:entry colname="col3">50</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">6</oasis:entry>
         <oasis:entry colname="col2">760–1060</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M249" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">20</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">7</oasis:entry>
         <oasis:entry colname="col2">1060–1360</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M250" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">50</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">8</oasis:entry>
         <oasis:entry colname="col2">1360–1660</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M251" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">70</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">9</oasis:entry>
         <oasis:entry colname="col2">1660–1960</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M252" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">10</oasis:entry>
         <oasis:entry colname="col2">1960–2260</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M253" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">130</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">11</oasis:entry>
         <oasis:entry colname="col2">2260–2560</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M254" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">150</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">12</oasis:entry>
         <oasis:entry colname="col2">2560–2860</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M255" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">170</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <fig id="F11" specific-use="star"><label>Figure 11</label><caption><p id="d2e9548">The salt dome model built by G&amp;M3D 1.0.</p></caption>
        <graphic xlink:href="https://gmd.copernicus.org/articles/19/5173/2026/gmd-19-5173-2026-f11.png"/>

      </fig>

      <fig id="F12" specific-use="star"><label>Figure 12</label><caption><p id="d2e9559">The gravity field and gradient components generated by the salt dome model using G&amp;M3D 1.0. Here, <inline-formula><mml:math id="M256" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">mGal</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M257" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">E</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mrow></mml:math></inline-formula>.</p></caption>
        <graphic xlink:href="https://gmd.copernicus.org/articles/19/5173/2026/gmd-19-5173-2026-f12.jpg"/>

      </fig>

      <p id="d2e9635">In G&amp;M3D 1.0, we apply the <bold>Irregular</bold> tool in the Modelling Module to create a density contrast model of the salt dome. This salt dome structure can be approximated by 12 separate irregular bodies located at different depths, each with a constant density contrast, as shown in Table 2. We build these bodies successively using the Modelling Module in G&amp;M3D 1.0. First, we set the range for the source region in the <inline-formula><mml:math id="M258" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M259" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M260" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> axes to [0 7 <inline-formula><mml:math id="M261" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">km</mml:mi></mml:mrow></mml:math></inline-formula>], [0 7 <inline-formula><mml:math id="M262" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">km</mml:mi></mml:mrow></mml:math></inline-formula>], and [0 5 <inline-formula><mml:math id="M263" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">km</mml:mi></mml:mrow></mml:math></inline-formula>], respectively. The division step is set to be <inline-formula><mml:math id="M264" display="inline"><mml:mrow><mml:mn mathvariant="normal">100</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow><mml:mo>×</mml:mo><mml:mn mathvariant="normal">100</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow><mml:mo>×</mml:mo><mml:mn mathvariant="normal">100</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula>. Next, in the Layer-Building interface, we specify the layer number as 28 and the density contrast as <inline-formula><mml:math id="M265" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">170</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">kg</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:msup><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:msup></mml:mrow></mml:mrow></mml:math></inline-formula>. Using <bold>Custom</bold> mode, we outline the geometry of the salt dome at this depth in the workspace, and then we use <bold>Single Click </bold>mode to make slight modifications to its shape. After making these modifications, we save this anomalous body and change the layer number to 27. The copy and paste functions allow us to visualize the source geometry from the previous layer on the interface, which facilitates anomaly source localization. Users can easily modify the existing layer structure, significantly improving modelling efficiency. This process can be repeated to quickly build the complete salt dome model (Fig. 11).</p>
      <p id="d2e9745">After constructing the 12 anomalous bodies that form the salt dome model, we use the Forward Modelling Module to calculate the gravity fields and gradients. We set the observation range to match that of the source, with the observation height fixed at 200 m. The resulting gravity fields and gradient components are shown in Fig. 12. To validate the accuracy of G&amp;M3D 1.0, we conduct a comparative analysis with spatial domain approaches (Li and Chouteau, 1998). The maximum absolute difference is <inline-formula><mml:math id="M266" display="inline"><mml:mrow><mml:mn mathvariant="normal">1.2</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">12</mml:mn></mml:mrow></mml:msup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">mGal</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula> for the gravity anomaly and <inline-formula><mml:math id="M267" display="inline"><mml:mrow><mml:mn mathvariant="normal">1.3</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">12</mml:mn></mml:mrow></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">E</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula> for the gravity-gradient components. These data are consistent with the forward simulation results provided by Ennen (2012), confirming the accuracy of the forward calculation in G&amp;M3D 1.0.</p>
</sec>
<sec id="Ch1.S5" sec-type="conclusions">
  <label>5</label><title>Conclusions</title>
      <p id="d2e9801">The study introduces an open-source software called G&amp;M3D 1.0, developed using the Qt application framework and C++ programming language.  G&amp;M3D 1.0 is designed to create 3D models of density contrast and magnetization, as well as to compute their gravity and magnetic fields.  Users can run the software either from source code or as a standalone desktop application. With G&amp;M3D 1.0, users can easily create arbitrary anomalous bodies and perform modifications, deletions, storage, and display of the model. Furthermore, G&amp;M3D 1.0 extends the efficient BCE algorithm for forward calculations of gravity gradient tensors and magnetic gradient tensors. Lastly, we demonstrate the gravity modelling over the Vinton salt dome in southern Louisiana, U.S. This practical application illustrates how G&amp;M3D 1.0 can be utilized for geophysical research, training, data processing and interpretation. The modular architecture of G&amp;M3D 1.0 also provides a robust foundation for future extensions, including incorporating additional body types, more flexible property representations, and advanced new forward functions.</p>
</sec>

      
      </body>
    <back><notes notes-type="codedataavailability"><title>Code and data availability</title>

      <p id="d2e9808">The G&amp;M3D 1.0 source code used in this study is available at <ext-link xlink:href="https://doi.org/10.5281/zenodo.19674359" ext-link-type="DOI">10.5281/zenodo.19674359</ext-link> (Wang et al., 2025a). The input and output data presented in this manuscript are available from <ext-link xlink:href="https://doi.org/10.5281/zenodo.17512458" ext-link-type="DOI">10.5281/zenodo.17512458</ext-link> (Wang et al., 2025b).</p>
  </notes><app-group>
        <supplementary-material position="anchor"><p id="d2e9817">The supplement related to this article is available online at <inline-supplementary-material xlink:href="https://doi.org/10.5194/gmd-19-5173-2026-supplement" xlink:title="zip">https://doi.org/10.5194/gmd-19-5173-2026-supplement</inline-supplementary-material>.</p></supplementary-material>
        </app-group><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d2e9826">DW: Developed the codes, and drafted the paper. BC: Provided the ideas and their implementation, and revised the paper. KW: Developed the codes, and drafted the paper. JP: Provided the initial functions for magnetic forward calculations. RG: Revised the paper. All authors discussed the results and contributed to the review and revision of the manuscript.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

      <p id="d2e9832">The contact author has declared that none of the authors has any competing interests.</p>
  </notes><notes notes-type="disclaimer"><title>Disclaimer</title>

      <p id="d2e9838">Publisher's note: Copernicus Publications remains neutral with regard to jurisdictional claims made in the text, published maps, institutional affiliations, or any other geographical representation in this paper. The authors bear the ultimate responsibility for providing appropriate place names. Views expressed in the text are those of the authors and do not necessarily reflect the views of the publisher.</p>
  </notes><ack><title>Acknowledgements</title><p id="d2e9844">We thank Longwei Chen and Shiyu Zhang for their help in the software development. We thank the High-Performance Computing Center of Central South University for support.</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d2e9849">This research has been supported by the Deep Earth Probe and Mineral Resources Exploration – National Science and Technology Major Project (grant no. 2025ZD1009100), the National Natural Science Foundation of China (grant nos. 42474123 and 42074109), and the Science Foundation of Hunan Province, China (grant no. 2025JJ90240).</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

      <p id="d2e9855">This paper was edited by Boris Kaus and reviewed by two anonymous referees.</p>
  </notes><ref-list>
    <title>References</title>

      <ref id="bib1.bib1"><label>1</label><mixed-citation>Bauville, A. and Baumann, T. S.: geomIO: An open-source MATLAB toolbox to create the initial configuration of 2-D/3-D thermo-mechanical simulations from 2-D vector drawings, Geochem. Geophy. Geosy., 20, 1665–1675, <ext-link xlink:href="https://doi.org/10.1029/2018GC008057" ext-link-type="DOI">10.1029/2018GC008057</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bib2"><label>2</label><mixed-citation>Bhattacharyya, B.: Magnetic anomalies due to prism-shaped bodies with arbitrary polarization, Geophysics, 29, 517–531, <ext-link xlink:href="https://doi.org/10.1190/1.1439386" ext-link-type="DOI">10.1190/1.1439386</ext-link>, 1964.</mixed-citation></ref>
      <ref id="bib1.bib3"><label>3</label><mixed-citation>Bhattacharyya, B. and Navolio, M.: A fast Fourier transform method for rapid computation of gravity and magnetic anomalies due to arbitrary bodies, Geophys. Prospect., 24, 633–649, <ext-link xlink:href="https://doi.org/10.1111/j.1365-2478.1976.tb01562.x" ext-link-type="DOI">10.1111/j.1365-2478.1976.tb01562.x</ext-link>, 1976.</mixed-citation></ref>
      <ref id="bib1.bib4"><label>4</label><mixed-citation>Blakely, R. J.: Potential theory in gravity and magnetic applications, Cambridge University Press, <ext-link xlink:href="https://doi.org/10.1017/CBO9780511549816" ext-link-type="DOI">10.1017/CBO9780511549816</ext-link>, 1996.</mixed-citation></ref>
      <ref id="bib1.bib5"><label>5</label><mixed-citation>Caratori Tontini, F., Cocchi, L., and Carmisciano, C.: Rapid 3-D forward model of potential fields with application to the Palinuro Seamount magnetic anomaly (southern Tyrrhenian Sea, Italy), J. Geophys. Res., 114, <ext-link xlink:href="https://doi.org/10.1029/2008JB005907" ext-link-type="DOI">10.1029/2008JB005907</ext-link>, 2009.</mixed-citation></ref>
      <ref id="bib1.bib6"><label>6</label><mixed-citation>Chen, L. and Liu, L.: Fast and accurate forward modelling of gravity field using prismatic grids, Geophys. J. Int., 216, 1062–1071, <ext-link xlink:href="https://doi.org/10.1093/gji/ggy480" ext-link-type="DOI">10.1093/gji/ggy480</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bib7"><label>7</label><mixed-citation>Cockett, R., Kang, S., Heagy, L. J., Pidlisecky, A., and Oldenburg, D. W.: SimPEG: An open source framework for simulation and gradient based parameter estimation in geophysical applications, Comput. Geosci., 85, 142–154, <ext-link xlink:href="https://doi.org/10.1016/j.cageo.2015.09.015" ext-link-type="DOI">10.1016/j.cageo.2015.09.015</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bib8"><label>8</label><mixed-citation>de la Varga, M., Schaaf, A., and Wellmann, F.: GemPy 1.0: open-source stochastic geological modeling and inversion, Geosci. Model Dev., 12, 1–32, <ext-link xlink:href="https://doi.org/10.5194/gmd-12-1-2019" ext-link-type="DOI">10.5194/gmd-12-1-2019</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bib9"><label>9</label><mixed-citation>Ennen, C.: Mapping gas-charged fault blocks around the Vinton Salt Dome, Louisiana using gravity gradiometry data, MS thesis, Department of Earth and Atmospheric Sciences, University of Houston, Houston, TX, USA, <uri>https://uh-ir.tdl.org/items/4d8ecb93-e2b5-466b-a5ac-2099a5e10a62</uri> (last access: 11 June 2026), 2012.</mixed-citation></ref>
      <ref id="bib1.bib10"><label>10</label><mixed-citation>Guo, Z. H., Guan, Z. N., and Xiong, S. Q.: Cuboid Delta T and its gradient forward theoretical expressions without analytic odd points, Chinese J. Geophys.-Ch., 47, 1131–1138, <ext-link xlink:href="https://doi.org/10.1002/cjg2.615" ext-link-type="DOI">10.1002/cjg2.615</ext-link>, 2004.</mixed-citation></ref>
      <ref id="bib1.bib11"><label>11</label><mixed-citation>Hassanzadeh, A., Vázquez-Suñé, E., Corbella, M., and Criollo, R.: An automatic geological 3D cross-section generator: Geopropy, an open-source library, Environ. Modell. Softw., 149, 105309, <ext-link xlink:href="https://doi.org/10.1016/j.envsoft.2022.105309" ext-link-type="DOI">10.1016/j.envsoft.2022.105309</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bib12"><label>12</label><mixed-citation>Hinze, W. J., von Frese, R. R. B., and Saad, A. H.: Gravity and magnetic exploration: Principles, practices, and applications, Cambridge University Press, <ext-link xlink:href="https://doi.org/10.1017/CBO9780511843129" ext-link-type="DOI">10.1017/CBO9780511843129</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bib13"><label>13</label><mixed-citation>Hogue, J. D., Renaut, R. A., and Vatankhah, S.: A tutorial and open source software for the efficient evaluation of gravity and magnetic kernels, Comput. Geosci., 144, 104575, <ext-link xlink:href="https://doi.org/10.1016/j.cageo.2020.104575" ext-link-type="DOI">10.1016/j.cageo.2020.104575</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bib14"><label>14</label><mixed-citation>Jessell, M., Ogarko, V., de Rose, Y., Lindsay, M., Joshi, R., Piechocka, A., Grose, L., de la Varga, M., Ailleres, L., and Pirot, G.: Automated geological map deconstruction for 3D model construction using map2loop 1.0 and map2model 1.0, Geosci. Model Dev., 14, 5063–5092, <ext-link xlink:href="https://doi.org/10.5194/gmd-14-5063-2021" ext-link-type="DOI">10.5194/gmd-14-5063-2021</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bib15"><label>15</label><mixed-citation>Li, X. and Chouteau, M.: Three-dimensional gravity modeling in all space, Surv. Geophys., 19, 339–368, <ext-link xlink:href="https://doi.org/10.1023/A:1006554408567" ext-link-type="DOI">10.1023/A:1006554408567</ext-link>, 1998.</mixed-citation></ref>
      <ref id="bib1.bib16"><label>16</label><mixed-citation>Luo, Y. and Yao, C.: Forward modeling of gravity, gravity gradients, and magnetic anomalies due to complex bodies, J. China Univ. Geosci., 18, 280–286, <ext-link xlink:href="https://doi.org/10.1016/S1002-0705(08)60008-4" ext-link-type="DOI">10.1016/S1002-0705(08)60008-4</ext-link>, 2007.</mixed-citation></ref>
      <ref id="bib1.bib17"><label>17</label><mixed-citation>Nagy, D.: The gravitational attraction of a right rectangular prism, Geophysics, 31, 362–371, <ext-link xlink:href="https://doi.org/10.1190/1.1439779" ext-link-type="DOI">10.1190/1.1439779</ext-link>, 1966.</mixed-citation></ref>
      <ref id="bib1.bib18"><label>18</label><mixed-citation>Nagy, D., Papp, G., and Benedek, J.: The gravitational potential and its derivatives for the prism, J. Geodesy, 74, 552–560, <ext-link xlink:href="https://doi.org/10.1007/s001900000116" ext-link-type="DOI">10.1007/s001900000116</ext-link>, 2000.</mixed-citation></ref>
      <ref id="bib1.bib19"><label>19</label><mixed-citation>Okabe, M.: Analytical expressions for gravity anomalies due to homogeneous polyhedral bodies and translations into magnetic anomalies, Geophysics, 44, 730–741, <ext-link xlink:href="https://doi.org/10.1190/1.1440973" ext-link-type="DOI">10.1190/1.1440973</ext-link>, 1979.</mixed-citation></ref>
      <ref id="bib1.bib20"><label>20</label><mixed-citation>Pirot, G., Joshi, R., Giraud, J., Lindsay, M. D., and Jessell, M. W.: loopUI-0.1: indicators to support needs and practices in 3D geological modelling uncertainty quantification, Geosci. Model Dev., 15, 4689–4708, <ext-link xlink:href="https://doi.org/10.5194/gmd-15-4689-2022" ext-link-type="DOI">10.5194/gmd-15-4689-2022</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bib21"><label>21</label><mixed-citation>Plouff, D.: Gravity and magnetic fields of polygonal prisms and application to magnetic terrain corrections, Geophysics, 41, 727–741, <ext-link xlink:href="https://doi.org/10.1190/1.1440645" ext-link-type="DOI">10.1190/1.1440645</ext-link>, 1976.</mixed-citation></ref>
      <ref id="bib1.bib22"><label>22</label><mixed-citation>Qiang, J., Zhang, W., Lu, K., Chen, L., Zhu, Y., Hu, S., and Mao, X.: A fast forward algorithm for three-dimensional magnetic anomaly on undulating terrain, J. Appl. Geophys., 166, 33–41, <ext-link xlink:href="https://doi.org/10.1016/j.jappgeo.2019.04.009" ext-link-type="DOI">10.1016/j.jappgeo.2019.04.009</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bib23"><label>23</label><mixed-citation>Snopek, K. and Casten, U.: 3GRAINS: 3D Gravity Interpretation Software and its application to density modeling of the Hellenic subduction zone, Comput. Geosci., 32, 592–603, <ext-link xlink:href="https://doi.org/10.1016/j.cageo.2005.08.008" ext-link-type="DOI">10.1016/j.cageo.2005.08.008</ext-link>, 2006.</mixed-citation></ref>
      <ref id="bib1.bib24"><label>24</label><mixed-citation>Thomas, M. D.: Gravity prospecting for massive sulphide deposits in the Bathurst Mining Camp, New Brunswick, Canada, in: Proceedings of Exploration 97: Fourth Decennial International Conference on Mineral Exploration, edited by: Gubins, A. G., GEO F/X, 837–840, <ext-link xlink:href="https://www.911metallurgist.com/wp-content/uploads/2015/10/Gravity-Prospecting-For-Massive-Sulphide-Deposits-in-the-Bathurst-Mining-Camp-New-Brunswick-Canada.pdf">https://www.911metallurgist.com/wp-content/uploads/2015/10/Gravity-Prospecting-For-Massive-Sulphide-Deposits-in-the-Bathurst-Mining-Camp-New- Brunswick-Canada.pdf</ext-link> (last access: 11 June 2026), 1997.</mixed-citation></ref>
      <ref id="bib1.bib25"><label>25</label><mixed-citation>Ulug, R. and Karslıoglu, M. O.: SRBF_Soft: a Python-based open-source software for regional gravity field modeling using spherical radial basis functions based on the data-adaptive network design methodology, Earth Sci. Inform., 15, 1341–1353, <ext-link xlink:href="https://doi.org/10.1007/s12145-022-00790-y" ext-link-type="DOI">10.1007/s12145-022-00790-y</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bib26"><label>26</label><mixed-citation>Vogel, C. R.: Computational methods for inverse problems, SIAM, <ext-link xlink:href="https://doi.org/10.1137/1.9780898717570" ext-link-type="DOI">10.1137/1.9780898717570</ext-link>, 2002.</mixed-citation></ref>
      <ref id="bib1.bib27"><label>27</label><mixed-citation>Wang, D., Chen, B., Wei, K., Peng, J., and Guo, R.: GM3D-1.0, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.19674359" ext-link-type="DOI">10.5281/zenodo.19674359</ext-link>, 2025a.</mixed-citation></ref>
      <ref id="bib1.bib28"><label>28</label><mixed-citation>Wang, D., Chen, B., Wei, K., Peng, J., and Guo, R.: G&amp;M3D 1.0: an Interactive Framework for 3D Model Construction and Forward Calculation of Potential Fields, Zenodo [data set], <ext-link xlink:href="https://doi.org/10.5281/zenodo.17512458" ext-link-type="DOI">10.5281/zenodo.17512458</ext-link>, 2025b.</mixed-citation></ref>
      <ref id="bib1.bib29"><label>29</label><mixed-citation>Wellmann, J. F., Thiele, S. T., Lindsay, M. D., and Jessell, M. W.: pynoddy 1.0: an experimental platform for automated 3-D kinematic and potential field modelling, Geosci. Model Dev., 9, 1019–1035, <ext-link xlink:href="https://doi.org/10.5194/gmd-9-1019-2016" ext-link-type="DOI">10.5194/gmd-9-1019-2016</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bib30"><label>30</label><mixed-citation>Wu, L. Y. and Tian, G.: High-precision Fourier forward modeling of potential fields, Geophysics, 79, G59–G68, <ext-link xlink:href="https://doi.org/10.1190/geo2014-0039.1" ext-link-type="DOI">10.1190/geo2014-0039.1</ext-link>, 2014. </mixed-citation></ref>
      <ref id="bib1.bib31"><label>31</label><mixed-citation>Yuan, Y., Cui, Y., Chen, B., Zhao, G., Liu, J., and Guo, R.: Fast and high accuracy 3D magnetic anomaly forward modeling based on BTTB matrix, Chinese J. Geophys.-Ch., 65, 1107–1124, <ext-link xlink:href="https://doi.org/10.6038/cjg2022P0126" ext-link-type="DOI">10.6038/cjg2022P0126</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bib32"><label>32</label><mixed-citation>Zhang, Y. and Wong, Y. S.: BTTB-based numerical schemes for three-dimensional gravity field inversion, Geophys. J. Int., 203, 243–256, <ext-link xlink:href="https://doi.org/10.1093/gji/ggv301" ext-link-type="DOI">10.1093/gji/ggv301</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bib33"><label>33</label><mixed-citation>Zhao, G., Chen, B., Chen, L., Liu, J., and Ren, Z.: High-accuracy 3D Fourier forward modeling of gravity field based on the Gauss-FFT technique, J. Appl. Geophys., 150, 294–303, <ext-link xlink:href="https://doi.org/10.1016/j.jappgeo.2018.01.002" ext-link-type="DOI">10.1016/j.jappgeo.2018.01.002</ext-link>, 2018.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>G&amp;M3D 1.0: an interactive framework for 3D model construction and forward calculation of potential fields</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>1</label><mixed-citation>
       Bauville, A. and Baumann, T. S.: geomIO: An open-source MATLAB toolbox to create the initial configuration
of 2-D/3-D thermo-mechanical simulations from 2-D vector drawings, Geochem. Geophy. Geosy., 20, 1665–1675,
<a href="https://doi.org/10.1029/2018GC008057" target="_blank">https://doi.org/10.1029/2018GC008057</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>2</label><mixed-citation>
       Bhattacharyya, B.: Magnetic anomalies due to prism-shaped bodies with arbitrary polarization, Geophysics,
29, 517–531, <a href="https://doi.org/10.1190/1.1439386" target="_blank">https://doi.org/10.1190/1.1439386</a>, 1964.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>3</label><mixed-citation>
       Bhattacharyya, B. and Navolio, M.: A fast Fourier transform method for rapid computation of gravity and
magnetic anomalies due to arbitrary bodies, Geophys. Prospect., 24, 633–649,
<a href="https://doi.org/10.1111/j.1365-2478.1976.tb01562.x" target="_blank">https://doi.org/10.1111/j.1365-2478.1976.tb01562.x</a>, 1976.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>4</label><mixed-citation>
       Blakely, R. J.: Potential theory in gravity and magnetic applications, Cambridge University Press,
<a href="https://doi.org/10.1017/CBO9780511549816" target="_blank">https://doi.org/10.1017/CBO9780511549816</a>, 1996.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>5</label><mixed-citation>
       Caratori Tontini, F., Cocchi, L., and Carmisciano, C.: Rapid 3-D forward model of potential fields with
application to the Palinuro Seamount magnetic anomaly (southern Tyrrhenian Sea, Italy), J. Geophys. Res., 114,
<a href="https://doi.org/10.1029/2008JB005907" target="_blank">https://doi.org/10.1029/2008JB005907</a>, 2009.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>6</label><mixed-citation>
       Chen, L. and Liu, L.: Fast and accurate forward modelling of gravity field using prismatic grids,
Geophys. J. Int., 216, 1062–1071, <a href="https://doi.org/10.1093/gji/ggy480" target="_blank">https://doi.org/10.1093/gji/ggy480</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>7</label><mixed-citation>
       Cockett, R., Kang, S., Heagy, L. J., Pidlisecky, A., and Oldenburg, D. W.: SimPEG: An open source framework
for simulation and gradient based parameter estimation in geophysical applications, Comput. Geosci., 85, 142–154,
<a href="https://doi.org/10.1016/j.cageo.2015.09.015" target="_blank">https://doi.org/10.1016/j.cageo.2015.09.015</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>8</label><mixed-citation>
      
de la Varga, M., Schaaf, A., and Wellmann, F.: GemPy 1.0: open-source stochastic geological modeling and inversion, Geosci. Model Dev., 12, 1–32, <a href="https://doi.org/10.5194/gmd-12-1-2019" target="_blank">https://doi.org/10.5194/gmd-12-1-2019</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>9</label><mixed-citation>
      
Ennen, C.: Mapping gas-charged fault blocks around the Vinton Salt Dome, Louisiana using gravity gradiometry data, MS thesis, Department of Earth and Atmospheric Sciences, University of Houston, Houston, TX, USA, <a href="https://uh-ir.tdl.org/items/4d8ecb93-e2b5-466b-a5ac-2099a5e10a62" target="_blank"/> (last access: 11 June 2026), 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>10</label><mixed-citation>
       Guo, Z. H., Guan, Z. N., and Xiong, S. Q.: Cuboid Delta T and its gradient forward theoretical expressions
without analytic odd points, Chinese J. Geophys.-Ch., 47, 1131–1138, <a href="https://doi.org/10.1002/cjg2.615" target="_blank">https://doi.org/10.1002/cjg2.615</a>, 2004.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>11</label><mixed-citation>
       Hassanzadeh, A., Vázquez-Suñé, E., Corbella, M., and Criollo, R.: An automatic geological 3D
cross-section generator: Geopropy, an open-source library, Environ. Modell. Softw., 149, 105309,
<a href="https://doi.org/10.1016/j.envsoft.2022.105309" target="_blank">https://doi.org/10.1016/j.envsoft.2022.105309</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>12</label><mixed-citation>
       Hinze, W. J., von Frese, R. R. B., and Saad, A. H.: Gravity and magnetic exploration: Principles,
practices, and applications, Cambridge University Press, <a href="https://doi.org/10.1017/CBO9780511843129" target="_blank">https://doi.org/10.1017/CBO9780511843129</a>, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>13</label><mixed-citation>
       Hogue, J. D., Renaut, R. A., and Vatankhah, S.: A tutorial and open source software for the efficient
evaluation of gravity and magnetic kernels, Comput. Geosci., 144, 104575, <a href="https://doi.org/10.1016/j.cageo.2020.104575" target="_blank">https://doi.org/10.1016/j.cageo.2020.104575</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>14</label><mixed-citation>
      
Jessell, M., Ogarko, V., de Rose, Y., Lindsay, M., Joshi, R., Piechocka, A., Grose, L., de la Varga, M., Ailleres, L., and Pirot, G.: Automated geological map deconstruction for 3D model construction using map2loop 1.0 and map2model 1.0, Geosci. Model Dev., 14, 5063–5092, <a href="https://doi.org/10.5194/gmd-14-5063-2021" target="_blank">https://doi.org/10.5194/gmd-14-5063-2021</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>15</label><mixed-citation>
       Li, X. and Chouteau, M.: Three-dimensional gravity modeling in all space, Surv. Geophys., 19, 339–368,
<a href="https://doi.org/10.1023/A:1006554408567" target="_blank">https://doi.org/10.1023/A:1006554408567</a>, 1998.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>16</label><mixed-citation>
       Luo, Y. and Yao, C.: Forward modeling of gravity, gravity gradients, and magnetic anomalies due to complex
bodies, J. China Univ. Geosci., 18, 280–286, <a href="https://doi.org/10.1016/S1002-0705(08)60008-4" target="_blank">https://doi.org/10.1016/S1002-0705(08)60008-4</a>, 2007.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>17</label><mixed-citation>
       Nagy, D.: The gravitational attraction of a right rectangular prism, Geophysics, 31, 362–371,
<a href="https://doi.org/10.1190/1.1439779" target="_blank">https://doi.org/10.1190/1.1439779</a>, 1966.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>18</label><mixed-citation>
       Nagy, D., Papp, G., and Benedek, J.: The gravitational potential and its derivatives for the prism,
J. Geodesy, 74, 552–560, <a href="https://doi.org/10.1007/s001900000116" target="_blank">https://doi.org/10.1007/s001900000116</a>, 2000.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>19</label><mixed-citation>
       Okabe, M.: Analytical expressions for gravity anomalies due to homogeneous polyhedral bodies and
translations into magnetic anomalies, Geophysics, 44, 730–741, <a href="https://doi.org/10.1190/1.1440973" target="_blank">https://doi.org/10.1190/1.1440973</a>, 1979.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>20</label><mixed-citation>
      
Pirot, G., Joshi, R., Giraud, J., Lindsay, M. D., and Jessell, M. W.: loopUI-0.1: indicators to support needs and practices in 3D geological modelling uncertainty quantification, Geosci. Model Dev., 15, 4689–4708,
<a href="https://doi.org/10.5194/gmd-15-4689-2022" target="_blank">https://doi.org/10.5194/gmd-15-4689-2022</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>21</label><mixed-citation>
       Plouff, D.: Gravity and magnetic fields of polygonal prisms and application to magnetic terrain
corrections, Geophysics, 41, 727–741, <a href="https://doi.org/10.1190/1.1440645" target="_blank">https://doi.org/10.1190/1.1440645</a>, 1976.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>22</label><mixed-citation>
       Qiang, J., Zhang, W., Lu, K., Chen, L., Zhu, Y., Hu, S., and Mao, X.: A fast forward algorithm for
three-dimensional magnetic anomaly on undulating terrain, J. Appl. Geophys., 166, 33–41,
<a href="https://doi.org/10.1016/j.jappgeo.2019.04.009" target="_blank">https://doi.org/10.1016/j.jappgeo.2019.04.009</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>23</label><mixed-citation>
       Snopek, K. and Casten, U.: 3GRAINS: 3D Gravity Interpretation Software and its application to density
modeling of the Hellenic subduction zone, Comput. Geosci., 32, 592–603, <a href="https://doi.org/10.1016/j.cageo.2005.08.008" target="_blank">https://doi.org/10.1016/j.cageo.2005.08.008</a>, 2006.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>24</label><mixed-citation>
      
Thomas, M. D.: Gravity prospecting for massive sulphide deposits in the Bathurst Mining Camp, New Brunswick, Canada, in: Proceedings of Exploration 97: Fourth Decennial International Conference on Mineral Exploration, edited by: Gubins, A. G., GEO F/X, 837–840, <a href="https://www.911metallurgist.com/wp-content/uploads/2015/10/Gravity-Prospecting-For-Massive-Sulphide-Deposits-in-the-Bathurst-Mining-Camp-New-Brunswick-Canada.pdf" target="_blank">https://www.911metallurgist.com/wp-content/uploads/2015/10/Gravity-Prospecting-For-Massive-Sulphide-Deposits-in-the-Bathurst-Mining-Camp-New-
Brunswick-Canada.pdf</a> (last access: 11 June 2026), 1997.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>25</label><mixed-citation>
       Ulug, R. and Karslıoglu, M. O.: SRBF_Soft: a Python-based open-source software for regional gravity
field modeling using spherical radial basis functions based on the data-adaptive network design methodology, Earth
Sci. Inform., 15, 1341–1353, <a href="https://doi.org/10.1007/s12145-022-00790-y" target="_blank">https://doi.org/10.1007/s12145-022-00790-y</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>26</label><mixed-citation>
      
Vogel, C. R.: Computational methods for inverse problems, SIAM, <a href="https://doi.org/10.1137/1.9780898717570" target="_blank">https://doi.org/10.1137/1.9780898717570</a>, 2002.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>27</label><mixed-citation>
      
Wang, D., Chen, B., Wei, K., Peng, J., and Guo, R.: GM3D-1.0, Zenodo [code], <a href="https://doi.org/10.5281/zenodo.19674359" target="_blank">https://doi.org/10.5281/zenodo.19674359</a>, 2025a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>28</label><mixed-citation>
      
Wang, D., Chen, B., Wei, K., Peng, J., and Guo, R.: G&amp;M3D 1.0: an Interactive Framework for 3D Model Construction and Forward Calculation of Potential Fields, Zenodo [data set], <a href="https://doi.org/10.5281/zenodo.17512458" target="_blank">https://doi.org/10.5281/zenodo.17512458</a>, 2025b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>29</label><mixed-citation>
       Wellmann, J. F., Thiele, S. T., Lindsay, M. D., and Jessell, M. W.: pynoddy 1.0: an experimental platform
for automated 3-D kinematic and potential field modelling, Geosci. Model Dev., 9, 1019–1035,
<a href="https://doi.org/10.5194/gmd-9-1019-2016" target="_blank">https://doi.org/10.5194/gmd-9-1019-2016</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>30</label><mixed-citation>
       Wu, L. Y. and Tian, G.: High-precision Fourier forward modeling of potential fields, Geophysics, 79,
G59–G68, <a href="https://doi.org/10.1190/geo2014-0039.1" target="_blank">https://doi.org/10.1190/geo2014-0039.1</a>, 2014.


    </mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>31</label><mixed-citation>
       Yuan, Y., Cui, Y., Chen, B., Zhao, G., Liu, J., and Guo, R.: Fast and high accuracy 3D magnetic anomaly
forward modeling based on BTTB matrix, Chinese J. Geophys.-Ch., 65, 1107–1124, <a href="https://doi.org/10.6038/cjg2022P0126" target="_blank">https://doi.org/10.6038/cjg2022P0126</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>32</label><mixed-citation>
       Zhang, Y. and Wong, Y. S.: BTTB-based numerical schemes for three-dimensional gravity field inversion,
Geophys. J. Int., 203, 243–256, <a href="https://doi.org/10.1093/gji/ggv301" target="_blank">https://doi.org/10.1093/gji/ggv301</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>33</label><mixed-citation>
       Zhao, G., Chen, B., Chen, L., Liu, J., and Ren, Z.: High-accuracy 3D Fourier forward modeling of gravity
field based on the Gauss-FFT technique, J. Appl. Geophys., 150, 294–303, <a href="https://doi.org/10.1016/j.jappgeo.2018.01.002" target="_blank">https://doi.org/10.1016/j.jappgeo.2018.01.002</a>, 2018.

    </mixed-citation></ref-html>--></article>
