Replies: 29 comments 15 replies
-
Hi |
Beta Was this translation helpful? Give feedback.
-
I don't understand. You have real data. And you have a model? But the model consists of points? Note that a model is a discretized (e.g. by triangles, quadrangles, tetrahedra, hexahedra etc.) subsurface representation with piece-wise constant values. Please have a look at the modelling examples. |
Beta Was this translation helpful? Give feedback.
-
If your model is already in a mesh with piece-wise constant resistivity you have to create it, otherwise create a new one and make interpolation from your point data. Please have a look at the examples and tutorials on mesh generation, interpolation and ERT simulation. Don't hesitate to come back with a specific question (e.g. with code parts, images, files etc.). |
Beta Was this translation helpful? Give feedback.
-
Hello, I am trying to use PyGimli to invert a 1-D GPR waveform for a research project, I am a real beginner. I already have a FDTD forward operator, but I am struggling to set up the inversion and the start model using regions. Thanks in advance for all your help ! First of all, I want to try a blocky inversion considering a two-layer model (with absorbing boundary conditions at the end). Each layer is only charaterized by its dielectric permittivity (eps) for now. So, I have two thicknesses and two parameters to invert.
I am using a createStartModel function because I did not know how to set up regions like thicknesses and eps. The I set up the forward model and the inversion framework using a model vector composed of my thicknesses and eps.
After setting my forward model, I launch the inversion. The start model is correctly launched I guess. But then the number of parameters (4 at the begininng) goes to 3 during the first iteration ! An then it crashes.
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
Hello again, Thanks for your quick answer 👍 I modified my forward operator to add a semi-infinite layer at the end of my 1-D model. Moreover the start model is also OK. The inversion using a Marquardt-Levemberg scheme runs : the results below are from an inversion from the two-layer model. The inversion is highly sensible to the starting model (not a suprise !). I would like to define boundaries for each parameter of the inversion, but it seems that the pg.trans.Log, pg.transLogLU commands are not working as in the example showed on Transfrom2021.
Here is some results of the Occam inversion using a model with 20 layers with thickness of 20 cm.
Thanks again ! |
Beta Was this translation helpful? Give feedback.
-
Thickness and epsilon values should of course be treated differently, with different limits etc. So the best way is a region-specific behaviour. The block model generation automatically creates nProperties+1 regions.
For region-specific bounds, you should have a look at the 2022 Transform tutorials (https://github.com/gimli-org/transform2022).
|
Beta Was this translation helpful? Give feedback.
-
The current The runChi1 method step by step decreases or increases the regularization parameter until the data are fitted within noise, using a global regularization scheme with a fixed objective function. For a Marquardt type inversion (where the regularization is only local and the regularization parameter is varied), this does NOT make any sense as mentioned above. The same holds for the L-curve. |
Beta Was this translation helpful? Give feedback.
-
Yes, that's normal. Actually we could name it To check whether all is correct, you can save the data using
|
Beta Was this translation helpful? Give feedback.
-
Hi!
It seems correct, but in the function: |
Beta Was this translation helpful? Give feedback.
-
The message is not an error but just a warning. |
Beta Was this translation helpful? Give feedback.
-
Joint inversion is indeed a simple task for pyGIMLi but here you don't need it. You just need to create your data file holding all the electrodes and appropriate quadrupoles. The latter is of course a bit complicating, but there are several papers on designing crosshole ERT arrays. |
Beta Was this translation helpful? Give feedback.
-
I can't get any meaning of this sentence. The electrode positions have nothing to do with the array chosen and of course both are independent on the resistivity distribution. Crosshole ERT has nothing to do with joint inversion. As the examples demonstrate, of course you can use complex resistivity, but you should start with real-valued first. In case you don't mean IP but complex structures, this is of course all up to you. |
Beta Was this translation helpful? Give feedback.
-
Hello everyone, I am trying to invert traveltime refraction seismics data and ERT data using the same mesh. This is not (yet) a joint inversion, I just want to use the same unstructured mesh to invert data separately on a conventional way.
Here is my protocol to create the common mesh: From a open topography polyline (created with createPolygon, IsClosed=False), I used the function appendTriangleBoundary from meshtools to create a first mesh with only one region. This mesh was used for the traveltime inversion. Something like the example in the API documentation :
Then, I used the function appendTriangleBoundary again to create a « far away » zone on the first mesh. This new composed mesh was used for the ERT inversion, since I can retrieve the inverted ERT data on the same region (background excluded) as the traveltime inverted velocities.
I tried to invert the travel time data using the ERT mesh, but it does not seem to recognize the boundaries or the regions. Here is the error I get :
Thanks again for your help and support, let me know if you need more information, Cheers, |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
You're not the only one to be puzzled. The unified data format was created (for ERT) long time ago when we have been working with Matlab instead of Python. Therefore we counted from one in the file (and 0 meaning infinite electrode). However, in Python it makes more sense to count from zero. But when creating data containers in Python you will have to count from zero but it will be saved to file as one. |
Beta Was this translation helpful? Give feedback.
-
Hello again!
it seems to mean the 'dmag' is the impedance we measured (Unit: Ohms)however, the 'dmag' is extracted from "data['rho']" simulated by |
Beta Was this translation helpful? Give feedback.
-
Q1: Q2: to describe the IP error we use the token iperr which is default 1% but you can pass a phase error by Q3: seed sets the random generator to a specific state so that the noise is always the same. See |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
The intrinsic phase (phi) is always negative (resistivity phase, or positive for conductivity phase) for physical reasons, and this is what you measure in the lab as long as the probe is rather homogeneous. In contrast, the apparent phase can be positive as a result of negative sensitivities, which are the weighting factors. Typically, it is reported that such an effect occurs for chargeable material in good conductors (typically shallow layers) but I can well image that for dipole-dipole data it can also occur for anomalies deeper than the penetration depth as the sensitivity is negative there, too: Dahlin, T. & Loke, M.H. (2015): Negative apparent chargeability in time-domain induced polarisation data. J. Appl. Geoph. 123, http://dx.doi.org/10.1016/j.jappgeo.2015.08.012 |
Beta Was this translation helpful? Give feedback.
-
Dear Professor! |
Beta Was this translation helpful? Give feedback.
-
Q1: there should be no difference whether you use k=-1 or k=1 and switch M and N Q2: No, I think that's correct. The (real-valued) model vector consist of real and imaginary parts but that's implemented. Q3: Yes, you're right. We should use the noisified data. Q4: Not sure and no time for a deep look. |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
For synthetic data, you should know your error and fit your model accordingly. For field data, you should have a look at the misfit distribution, e.g. as done in |
Beta Was this translation helpful? Give feedback.
-
Dear professor, I suddenly came up with a question about ERT in the 2D domain: In the two examples of '2D crosshole ERT inversion' and the example 'ERT field data with topography', there is no setting on whether there is a topography effect. At the same time, in the input files (in class of Datacontainer) of these two examples, the coordinates of the sensors are both in the form of (x, 0, z). So, how does pygimli determine whether the input file is a data form crosshole or data with topography |
Beta Was this translation helpful? Give feedback.
-
The z coordinate could indeed be a topography or a (negative) depth below the surface (including topography). The decision is made on the mesh, whether the upper surface is constant zero (flat earth, electrodes possibly in the subsurface) or not (topography). A 2D inversion is done on a 2D mesh containing two dimensions, i.e. x and y positions. If the data file has y=0 and z not, the dimensions are swapped so that it matches the mesh. But this is done automatically. |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
For new topics we should create a new discussion with a proper title so that is better found. |
Beta Was this translation helpful? Give feedback.
-
Hey all, I was wondering if anyone knows of a way to save the simulated traveltimes for refraction tomography synthetic/forward models to a file. I can't seem to find anything about it in the documentation. I would like to try and compare the synthetic model I've gotten with a tomographic inversion using that same simulated data in Refrainv.py and compare them! |
Beta Was this translation helpful? Give feedback.
-
👋 Welcome!
We’re using Discussions as a place to connect with other members of our community without opening issues. We hope that you:
build together 💪.
To get started, comment below with an introduction of yourself and tell us about what you do with this community.
Beta Was this translation helpful? Give feedback.
All reactions