Closed soetpotet closed 5 years ago
The pyGIMLi-based idea of generating a unique list of sensors (independent on whether used as geophone or shot) is originated from ERT where electrodes are naturally used for both current and potential. I confess this might not be instructive from a seismic point of view but we will not change the data container to have two lists.
In seismics, shots and geophones might be colocated, but often they are not or only partly. In any case it is the users task to generate this list, if he cannot just import the data using one of the supported formats. If your shots and geophones are completely different, this task should be easy: just concatenate the list of sensor and geophone positions and add the number of shots to the index in the geophone list, that's it.
Thanks for the quick reply!
@soetpotet Just as an addition: The crosshole example shows how to construct such da data container from Python. You can add a t
column and scheme.save("myfile.sgt")
to save it.
https://www.pygimli.org/_examples_auto/seismics/plot_3_crosshole_tomography.html
Thanks for the hint, @florian-wagner :)
@halbmy, I'm not sure if I understood you correctly, but this is how my file looks (see attachment). The shots go from -0.1 to 14.3 and the geophones from 0 to 14.2, then I've got the measurements. I think it works correctly judging by the traveltime curves I get.
However, when I perform the inversion, ra.invert()
, I get the following error:
An error ocurred while starting the kernel
C:/msys64/home/Guenther.T/src/gimli/gimli36/src/meshentities.cpp: 34 GIMLI::Boundary* GIMLI::findBoundary_(const std::set&) pls. check, this should not happen. There is more then one boundary defined.2
Boundary 0x1c68f2ca8f0 rtti: 22 id: 0 N: 0 1 marker: 1
Boundary 0x1c6954db090 rtti: 22 id: 177 N: 4 0 marker: 𔂫
I don't really understand what the error is about? What are these boundaries? I'm doing all of this following the Koenigsee example script, so should I maybe create my own mesh then?
Thanks again!
The error is due to the fact that your sensor positions are not sorted and the mesh generation fails. You just have to sort the sensor indices before anything else:
ra = Refraction('BG_test.sgt.txt')
ra.dataContainer.sortSensorsX() # sort sensors in ascending order
ra.invert() # add some options
ra.showResult()
You might wonder why the resulting section is so thin. Have a look at your data you will see that almost all traveltimes are linear, i.e. there is no increase in the slope indicating an increasing velocity. So I'm afraid there's not much information in it.
Hi again @halbmy,
Thank you for the explanations!
I see what you mean about the velocity changes. This is part of a timelapse acquisition (and also a rather quick, non-meticulous first picking) so let's hope we get to see more changes in the further datasets :)
Cheers
We note that for classical refraction cases like yours we should do a sortX
internally in the createParaDomainPLC
function. Thanks for reporting.
Is it possible to comment out a line from a Koenigsee example and still use the file?
Yes, you should be able to comment a line by a preceding hash character (#
) or to delete it, but you will have to decrease the number of data just before the data token accordingly.
Hi,
I'm using your Koenigsee example as a guide to read and invert my own seismic data but I was wondering how I should write the file in case the # of shots and geophones is not the same and the shots are not at geophone positions either. Do I start by defining the geophone points, and then continue with the shot points before writing the measurements? Or something completely different?
Thanks a lot!