Wireframe thickness for complex ore bodies
Does anyone know of a function that can be used to generate wireframe thickness in a complex ore body to write that attribute to the block model?
For some background. In a thin planar vein wireframe thickness is easily calculated and and blocks can be diluted or handled accordingly.
I am modeling a complex skarn and on the outskirts of the ore bodies there are thinner blobby areas that I have modeled but likely wont support cost effective mining and want these to drop out of the resource table but stay in the interpretation as a exploration and guiding tool.
I am looking for a way to approximate the "thickness" in these areas. To be clear these are not isolated spheres that can be cut out using a volume restriction.
I have run into a clever idea in the past for a 2D example were someone created a point with lines in eight directions and clipped the lines based on the 2d shape and the shortest line was the approximate zone thickness. Something like this in 3D is probably the solution but there is a lot of coding to do this.
My question is: has anyone worked out a hack with the current available functionality?
I'm thinking maybe something like using percent models of various sizes and where >50% is outside the thickness is below a certain threshold. Thinking out loud, but more or less like this.
Customer support service by UserEcho
Thinking out loud myself might it be possible to use the distance from wire frame option to code the distance up and down the hole from the wireframe contact - I am guessing the distance will meet at a mid point between two contacts and that will give you a thickness of distance*2? I would guess you need to make a composite file of your required resolution and add that to the drillhole distance to write the distance to - but might that work? This distance is normal to the wireframe contact so should be relatively close (might get some edge effects in places?). I am sure someone with better maths than me could work out how to code the thickness to a table?
Good idea Ron - maybe a better way is to create a grid of 2 point vertical strings across the region (a number of ways you might do this). Now use the Pierce Point function to calculate the entry and exit points of these strings with the wireframe. Use Extract (Average) to generate an output file of the mid-points. Now calculate distance to wireframe and then double it. If your initial grid matched the block model you could now populate the block model with these values..
This is a problem that I've tried to solve in the past but generally on vein systems with a more constant orientation. Some things that I've played arround with are as follows.
1. Clipped Strings. Generate strings on a regular grid that pass well through the wireframe at roughly perpendicular orientations to mineralization. Use Strings, Utilities, Clip to Wireframe and keep inside. Then calculate the length of the strings. Getting this into the BM would require some thought but if you could generate the midpoint of the string with the thickness attribute you could write this in as a nearest neighbour or an IDW1 with x points in a neighbourhood.
2. Hanging wall and foot wall. For IM veins I've previously generate HW and FW surfaces along with solids. Exported the Wireframe for the HW as points and triangles, then used distance to wireframe calculation on the points file to calculate distance to the FW. This gives a nice point cloud visualization of thickness. But its hard to get it writen to the BM. One option that might work is a very skewed search elipsoid with IDW1 and max 1 sample or similar. Or POV conversion on the point cloud, contour the thickness, convert to stings, POV back transform the stings and write to the BM. Looking at your deposit it could be a lot of manual work to generate the surfaces though.
3. Use an inclined block model with a fairly small block in the dip and stike directions, then on the thickness direction have a huge block so there is one block accross the thickness. When restricting the block model to wireframes using block factors and simplified factor estimation restrict the stike and dips directions to 1, but put a big old number like 100 accross stike (assuming this isn't limited to 10 for block factors??), then use a function of the factor and the parant size to ascertain the width. Kind of like a seam block model. This obviously wont work very well for paralel or sub paralel birfurcations and the block centroids are going to be out, so writing the the grade model could be difficult.
4. I've suggesfully done similar to the above by having 1 block size down dip and along stike, but sub blocking accross, then extracting the accumulation of the thickness accross stike based on a constant field of the RL coord and the cross section (it was a rotated BM again so need to generate cross sections for each block row as the east coordinate was not constant and write the section number to the BM) and writing it back into the model with an index. Also I'm meaning to play about with doing this on a POV conversion and block model flattening while converting to a seam block model. Again this rather single structure focused for veiny deposits.
5. Something I've not tried but could work. Use wireframe advanced repair and remove thin slithers by a minimum pinch thickness equal to the MSW. You could then do a boolean against the parant wireframe and identify areas which are below the the MSW and flag them for additional planned mining dilution.
Thanks for your comments, Richard.
Your Clipped Strings suggestion is effectively the same as my implementation of Ron's suggestion. I proposed vertical strings, but they can, of course, be any orientation. I can describe the workflow in more detail if needed.
There is another way to handle the HW and FW scenario. You can use the Wireframe | Calculations | Compare function. If you make the HW the Reference wireframe, then this function will calculate the distance of each vertex in the FW to the HW, and write that value (which is the thickness) to the FW wireframe as a vertex attribute. The advantage of this method is that you can easily colour code the FW wireframe based on thickness. Should you want the individual points, you can export the FW wireframe as a Micromine file, selecting the export vertex attributes option.
I've just tried the strings method with calculate pierce points and extraction on a faulted subertical vein deposit and it worked quite well. The only downside as sugested was edge effects where a sting is closer to the "end" of a wireframe rather than the wall, but this is fixable with bottom cut from the histogram, or through writing the azi and inclination to wireframe and looking for outliers on a stereonet.
Yes I had considered the downside that you mentioned. Good suggestions to fix this problem. Another option is to output the "Inclination to surface" value when calculating the distance. This should also indicate which are edge points.