gempy-project / gempy

GemPy is an open-source, Python-based 3-D structural geological modeling software, which allows the implicit (i.e. automatic) creation of complex geological models from interface and orientation data. It also offers support for stochastic modeling to address parameter and model uncertainties.
https://gempy.org
European Union Public License 1.2
986 stars 235 forks source link

unconformity, fault, serie model #93

Closed gasiva closed 6 years ago

gasiva commented 6 years ago

I'm running the example in the CORE - Geological modeling section. If I set series_distribution={'younger_serie' : 'Unconformity', 'fault_serie1': 'fault', 'older_serie': ('Layer2', 'Layer1')} to model a stratigraphic serie cut by a fault and capped by a younger formation, the model is not completely created and the fault position is wrong.

image

Leguark commented 6 years ago

right now a fault cutting just a series is not implemented. Faults always have to be at the top of the sequential pile and cut through all the series. That feature is in the pipeline but will take a few months yet

gasiva commented 6 years ago

@Leguark Can crosscutting faults be modeled? I mean fault displacing another fault.

Leguark commented 6 years ago

hey there, so the answer is yes and no. It is implemented but it does not have a nice UX function that you can call too easily. Basically it is done through the property faults_relationships (or something like that) which is a boolean array that define which fault offset which fault. Sadly right now I did not find a notebook where I do it but I will try in the following weeks to get make one

gasiva commented 6 years ago

I've found how to set faults relationships:

geo_data.faults_relations = pd.DataFrame(np.array(relation_matrix), index=geo_data.series.columns, columns= geo_data.series.columns, dtype='bool')

the method geo_data.set_fault_relation() didn't work.

Below the modeling results of an antiformal structure displaced by a normal fault (older) and a strike slip fault (younger): image

Why the normal fault (red) change convexity across the strike-slip one (purple)? Morever one of the stritigraphic orientation is not considered in the model (the yellow one in the lower-left corner of the XZ view, well below the bottom of the surface).

Here are my input data:

orientations X,Y,Z,azimuth,dip,polarity,formation 750,750,1550,275,20,1,argille 250,1250,1550,260,15,1,argille 1750,750,1050,95,65,1,argille 1250,1250,1050,85,70,1,argille 1250,750,1050,85,75,1,faglia1 750,1250,1050,95,70,1,faglia1 1000,1000,1050,5,85,1,faglia2 1500,1500,0,85,90,1,argille 250,250,500,275,85,1,argille

interfaces X,Y,Z,formation 750,750,1500,argille 250,1250,1500,argille 1750,750,1000,argille 1250,1250,1000,argille 1250,750,1000,faglia1 750,1250,1000,faglia1 500,1000,1000,faglia2 1500,1000,1000,faglia2

Leguark commented 6 years ago

I am glad you are going forward.

I would say that your problems come from under-constrain models. As a rule of thumb 2 points per fault-sector is going to give you better results, otherwise the mathematical system is too in-stable. Just let me know if the problem does not get fixed

lllxllll commented 5 years ago

I wonder can I modelling with gempy if my formation has no faults?

Leguark commented 5 years ago

https://github.com/cgre-aachen/gempy/blob/master/notebooks/examples/Model%201%20-%20Horizontal%20stratigraphic.ipynb