Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings
gempy-project

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

surfaces in geomodel#976

MarinCronograph started this conversation inGeneral
Jan 7, 2025· 2 comments· 4 replies
Discussion options

Hi,
question about column and content of geo_model.surface_points_copy.df.columns,
I have bulit geomodel and trying to propagate in the right order to property model, strat units however seem somewhat not in the right position.

when i print content of geo_model.surface_points_copy.df.columns, i saw Index(['X', 'Y', 'Z', 'id', 'nugget'], dtype='object').

After that i tried to add 'formation' column, to geo_model.surface_points_copy , from surface and orientation (initial input files) to be able to better relate to strat units but it seems that surfaces are only recognized by IDs that are not by default included in surface and orentation files.

I tried to introduce IDs to different strat units in INPUT files but this just creates more mess as down the line IDs and formation names seem not being able to match betwen INPUT files , geo_model.surface_points_copy and a file created in between (lineage INPUT files , file created in between for filtering purposes and geo_model.surface_points_copy )

My question is there a point imposing IDs in INPUT files to try to match IDs and strat units down the line geomodel and property model? I find it hard to display what is what on geomodel and property model down the line. Any advices?

rgds

Marin Mirošević
mail:marin.mirosevic@gmail.com

You must be logged in to vote

Replies: 2 comments 4 replies

Comment options

Hi@MarinCronograph,
thanks for your question. First of all I agree that this is not very straightforward in the current state. As far as I know the decision to "lock" the dataframe was mainly made to increase stability and the IDs mainly optimize efficiency.

geo_model.surface_points_copy.df is purely a copy of what gempy uses, and changing anything about it should not change anything.

To help with your problem I would like to understand exactly, what you are trying to achieve. I might not get this sentence completely:

I have bulit geomodel and trying to propagate in the right order to property model, strat units however seem somewhat not in the right position.

Some thoughts that might help:

You can get the mapping between IDs and element names usinggeo_model.structural_frame.element_id_name_map

If you want to populate your final model with properties, you would generally use the resulting lithology block (geo_model.solutions.raw_arrays.lith_block). The ids and corresponding element names used in this block can be found here (and yes I agree that it is not a godd idea that two different things are called id):
geo_model.structural_frame.elements_names
geo_model.structural_frame.elements_ids

Let me know if this helps or what exactly you are trying to achieve.

Cheers,
Jan

You must be logged in to vote
3 replies
@MarinCronograph
Comment options

hi@javoha ,

thanks forthe answer,

My thought is that if IDs and STRAT_UNIT names are all the time “together” in all the steps from input data through geomodel to property model . To have more control over what is placed where would make things a lot more robust, I assume though.

Have built a property model (Porosity model ) from Geomodel but have little means of control if Strat_units are placed correctly.

I also think some facilitation of “printing/visualization” function for surface names and strat_units, in 3d, down the line (input files- geomodel- property model ) would be very good, for both geomodel and property model.

Presently in the current Gempy version , that is possible, in a way, but very hard to put together with a visualized geomodel or visualized property model.

But as you wrote geo_model.solutions.raw_arrays.lith_block, might hold the”key”

By the way probably importantto say thati am taking Porosities from wells, porosities connected to Strat_units, I made a separate file for this and had to match with geo_model.surface_points_copy.df so geomodel and property model will be in sync, at least tried. Got results interpolated but have suspicion geomodel and por model strat_units (interpolated porosities ) r not in sync.

p.s
with this "I have bulit geomodel and trying to propagate in the right order to property model, strat units however seem somewhat not in the right position."-I meant right order- when it comes to Strat_units, i got gaps so assuming that order of Strat_units down the line has not been taken correct by the script -

Rgds

Marin Mirošević
mail:marin.mirosevic@gmail.com

@javoha
Comment options

Hi,

you are probably right that things can always be improved. But let's try to get exactly on the same page regarding the target. Populating a structural geological model with properties is not an inherent part of gempy. Very generally speaking this is a step I would perfom after I computed this model.

The way I do it:

  1. Compute a strucural geologicial model

  2. Coordinates of the regular grid are stored undergeo_model.grid.regular_grid.values

  3. The corresponding lithology are stored undergeo_model.solutions.raw_arrays.lith_block

  4. If you have a one to one mapping e.g porosity of x for formation y, you can just map them to a copy of the lithology block. Alternatively you can also perform something like kriging in a single element to get a more realistic property distribution. Here is an example of how this might look (performed on this model:https://docs.gempy.org/examples/geometries/g07_combination.html#sphx-glr-examples-geometries-g07-combination-py)

  5. I have visualized this separately in pyvista in this case.

image

Is this generally what you aim for or am I not getting the point?

@MarinCronograph
Comment options

Hello Jan@javoha

to explain better, initally i have input files for surfaces and orientations (classical input files for gempy) . I sucessfuly built structural model with clear start_units(formations) defined in 2 input files.

Structural model has 1 fault.

I have also produced a file (holding well ) data that basically have same surfaces depths as defined in the initial file (surface points) , vertically points , you could say, r grouped by X and Y and that thing I used when placing wells vertically through each Formation (strat_unit). On this file I have defined porosities connected to each Well and Formation.

Since it is not possible or feasible with gempy to import Well logs (values , for e porosity), that will be upscaled down theline , I have determined on each Formation(start_unit) single porosity value.

I want to match formations from structural model and this file to distribute porosities on wells . I want to distribute in a such way that POR is kriging distibuted each/separate in its Formation(strat_unit).

I have succeeded to a degree when it comes distributing well porosities but have no meaning of displaying formations (strat_units) with POR model.

So I would say matching in this case is the problem, I have also spotted error messages when it comes to grid_points as non-existing or not matching arrays.

Perhaps we can have a short chat on teams or similar about or I can send you files on your email, my e-mail, if you are interested:marin.mirosevic@gmail.com

P.S maybe not so important but maybe i should mention that I am using Anaconda Spyder.

Kind regards,

Marin Mirošević

Comment options

Hi@javoha,

I am relatively new to Gempy and have generated some models. However, I am stuck at trying to distribute properties in those layers. I have input data from wells (blocked logs) and maps for control. I am intrigued about how you distributed the property in the graphic above. Can you please elaborate on the python package/script used for this?

Thanks
-Ravi

You must be logged in to vote
1 reply
@javoha
Comment options

Hi@IoTNoobie,

thanks for your interest! In this very simple example I extracted the grid coordinates and the respective lthology ID (stored ingeo_model.solutions.raw_arrays.lith_block) from gempy. I converted this information to a block/voxel model using the pyvista package.
I extracted a single structural element by ID and performed a Gaussian Simulation only within this structural element using the GSTools package.
Note that a completely arbitrary varigoram was used here and variogram modeling in these settings can get rather tricky (depending on things like data availability and coverage as well as anisotropies, etc.).

The code for this example is available here:
https://github.com/cgre-aachen/egu25_gempy_workshop/blob/main/outlook_notebooks/Property_modeling_EGU25.ipynb

We are also hoping to provide a gempy-plugin in the feature to streamline this functionality a bit.

I hope this helps and let me know if you have any further questions.

Cheers,
Jan

Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Category
General
Labels
None yet
3 participants
@MarinCronograph@javoha@IoTNoobie

[8]ページ先頭

©2009-2025 Movatter.jp