Asymmetry in apparent chargeability pseudosection

Hi everyone,

I’m seeing a small asymmetry in apparent chargeability values, even though both the model and acquisition geometry are symmetric. For the same setup, Res2Dmod gives perfectly symmetric results.

Example for n = 4:

Res2Dmod:
-0.2177, -0.3199, -0.4280, -0.3513, 0.4801, 2.0045, 2.8253, 2.9724, 2.8253, 2.0045, 0.4801, -0.3513, -0.4280, -0.3199, -0.2177

SimPEG**:**
-0.2026, -0.3042, -0.4233, -0.4104, 0.2409, 1.6922, 2.6721, 2.9124, 2.7807, 2.0253, 0.5631, -0.3351, -0.4446, -0.3343, -0.2247

The pseudosection looks symmetric visually, but the values are not perfectly mirrored.

What could cause this asymmetry in SimPEG? How can I resolve this?

Thanks!

Hi @kianadmvnd. Thanks for opening this thread. A few weeks ago Devin Cowan idenfied a similar bug but on apparent conductivity in natural sources receivers: Fix bug in apparent conductivity by dccowan · Pull Request #1736 · simpeg/simpeg · GitHub

Would you mind opening an issue in GitHub with a minimal example that reproduces the bug? Alternatively, would you share such example here?

SimPEG_dyke_800.ipynb (443.1 KB)

Hi, thanks for your reply.

I’ve attached the notebook for my example that demonstrates the asymmetry. In this case, I’m using a uniform structured mesh across the entire domain.

Hi @kianadmvnd . I spent some time with your notebook and I noticed the source of the asymmetry you experience.

After defining the chargeability model you ran the ip_survey.drape_electrodes_on_topography method. Since your topography is a constant zero height and your electrodes are already at that height, there’s no need to run that function. The issue arises from the fact that such method also shifts the horizontal coordinates of the electrodes to place them above the cell centers (if the shift_horizontal argument is set to True, which is the default).

So, your electrodes before you ran the method look like this (showing only the receivers for the first source):

ip_survey.source_list[0].receiver_list
[Dipole(m: [50.  0.]; n: [75.  0.]),
 Dipole(m: [75.  0.]; n: [100.   0.]),
 Dipole(m: [100.   0.]; n: [125.   0.]),
 Dipole(m: [125.   0.]; n: [150.   0.]),
 Dipole(m: [150.   0.]; n: [175.   0.]),
 Dipole(m: [175.   0.]; n: [200.   0.]),
 Dipole(m: [200.   0.]; n: [225.   0.]),
 Dipole(m: [225.   0.]; n: [250.   0.]),
 Dipole(m: [250.   0.]; n: [275.   0.]),
 Dipole(m: [275.   0.]; n: [300.   0.]),
 Dipole(m: [300.   0.]; n: [325.   0.]),
 Dipole(m: [325.   0.]; n: [350.   0.]),
 Dipole(m: [350.   0.]; n: [375.   0.]),
 Dipole(m: [375.   0.]; n: [400.   0.]),
 Dipole(m: [400.   0.]; n: [425.   0.]),
 Dipole(m: [425.   0.]; n: [450.   0.]),
 Dipole(m: [450.   0.]; n: [475.   0.]),
 Dipole(m: [475.   0.]; n: [500.   0.]),
 Dipole(m: [500.   0.]; n: [525.   0.]),
 Dipole(m: [525.   0.]; n: [550.   0.]),
 Dipole(m: [550.   0.]; n: [575.   0.]),
 Dipole(m: [575.   0.]; n: [600.   0.]),
 Dipole(m: [600.   0.]; n: [625.   0.]),
 Dipole(m: [625.   0.]; n: [650.   0.]),
 Dipole(m: [650.   0.]; n: [675.   0.]),
 Dipole(m: [675.   0.]; n: [700.   0.]),
 Dipole(m: [700.   0.]; n: [725.   0.]),
 Dipole(m: [725.   0.]; n: [750.   0.]),
 Dipole(m: [750.   0.]; n: [775.   0.]),
 Dipole(m: [775.   0.]; n: [800.   0.])]

And after running the method:

[Dipole(m: [46.875  0.   ]; n: [71.875  0.   ]),
 Dipole(m: [71.875  0.   ]; n: [96.875  0.   ]),
 Dipole(m: [96.875  0.   ]; n: [121.875   0.   ]),
 Dipole(m: [121.875   0.   ]; n: [146.875   0.   ]),
 Dipole(m: [146.875   0.   ]; n: [171.875   0.   ]),
 Dipole(m: [171.875   0.   ]; n: [196.875   0.   ]),
 Dipole(m: [196.875   0.   ]; n: [221.875   0.   ]),
 Dipole(m: [221.875   0.   ]; n: [246.875   0.   ]),
 Dipole(m: [246.875   0.   ]; n: [271.875   0.   ]),
 Dipole(m: [271.875   0.   ]; n: [296.875   0.   ]),
 Dipole(m: [296.875   0.   ]; n: [321.875   0.   ]),
 Dipole(m: [321.875   0.   ]; n: [346.875   0.   ]),
 Dipole(m: [346.875   0.   ]; n: [371.875   0.   ]),
 Dipole(m: [371.875   0.   ]; n: [396.875   0.   ]),
 Dipole(m: [396.875   0.   ]; n: [421.875   0.   ]),
 Dipole(m: [421.875   0.   ]; n: [446.875   0.   ]),
 Dipole(m: [446.875   0.   ]; n: [471.875   0.   ]),
 Dipole(m: [471.875   0.   ]; n: [496.875   0.   ]),
 Dipole(m: [496.875   0.   ]; n: [521.875   0.   ]),
 Dipole(m: [521.875   0.   ]; n: [546.875   0.   ]),
 Dipole(m: [546.875   0.   ]; n: [571.875   0.   ]),
 Dipole(m: [571.875   0.   ]; n: [596.875   0.   ]),
 Dipole(m: [596.875   0.   ]; n: [621.875   0.   ]),
 Dipole(m: [621.875   0.   ]; n: [646.875   0.   ]),
 Dipole(m: [646.875   0.   ]; n: [671.875   0.   ]),
 Dipole(m: [671.875   0.   ]; n: [696.875   0.   ]),
 Dipole(m: [696.875   0.   ]; n: [721.875   0.   ]),
 Dipole(m: [721.875   0.   ]; n: [746.875   0.   ]),
 Dipole(m: [746.875   0.   ]; n: [771.875   0.   ]),
 Dipole(m: [771.875   0.   ]; n: [796.875   0.   ])]

Now the electrodes don’t fall on the nodes of the mesh. And since the simulation is nodal, it needs to interpolate to predict observations on arbitrary points. Such interpolation explains the non-exact symmetry you mentioned.

If you leave the survey unmodified, you’ll notice that the symmetry can be reproduced. I’m attaching two notebooks that show a DC and an IP forward, with checks for the symmetry in the apparent conductivity and chargeabililty. Also note that I’m creating air cells in the mesh.

ip-forward.ipynb (878.7 KB)

dc-forward.ipynb (907.8 KB)

1 Like