(This module is available only in MVS)
General Module Function
Surf_cut receives any 3D field into its left input port and it receives a surface (from scat_to_tin, geologic_surface, slice, etc.) into its right input port. Its function is similar to shape_cut. It adds a data component to the input 3D field referencing the cutting surface. With this new data component you can use a subsettting module like plume_volume to pass either side of the 3D field as defined by the cutting surface, thereby allowing cutting of structures along any surface. The surface can originate from a TIN surface, a slice plane or a geologic surface. The cutting surface can be multi-valued in Z, which means the surface can have instances where there are more one z value for a single x, y coordinate. This might occur with a wavy fault surface that is nearly vertical, or a fault surface with recumbent folds.
Surf_cut recalculates when either input field is changed or the "Accept" button is pressed.
The general approach with surf_cut is:
Create a cutting surface representing either a fault plane, a scouring surface (unconformity), or an excavation.
Create a 3D model of the object you wish to cut.
Pass the 3D model into the left port of surf_cut, and the cutting surface to the right port of surf_cut and hit accept. Note that since this is for faulting, then the second surf_cut is needed with a translate module upstream for offsetting that fault block.
Here's a picture of the network fragment for this approach. ![]()
Use plume_volume modules to pass each side of the 3D model to downstream modules. In the case of the fault block note that one branch has been sent to a translate module for offsetting the fault block (this work MUST be done before surf_cut). The plume_volume modules subset on the surf_cut data component thus passing either the positive values or negative values (depending on whether you are sending the right or left block to be rendered).
An erosional surface can be achieved (or an excavation or unconformity), on an already cut block. In the same example, the translated fault block has another surf_cut performed, but this time using the ground surface from the original geologic input file.
Here's a picture of the same application but focused on a slightly different portion of the application for this approach. ![]()
Now you have created a model with two blocks that are actually two versions of the same geologic model. One model is rendered with the surf_cut data component above "0.0". The other model is rendered with the surf_cut component below "0.0" AND it has been translated. But wait, we also used another surf_cut module to cut the up-thrown block with the original topographic surface.
Here's a picture of model showing the two fault blocks, the fault plane and the eroded surface. ![]()
Module Input Ports
surf_cut has two input ports. Surf_cut receives any 3D field into its left input port that should be connected to or after Explode_and_Scale. It receives a surface (from geologic_surface, scat_to_TIN or Read_UCD) into its right input port.
Module Output Ports
surf_cut has one output port which outputs a field with an additional "surf_cut" data component which is zero at the cutting surface, less than 0.0 on one side of the surface, and greater than 0.0 on the other side.
Module Status: Interruptible
This module's computational processes can be terminated (interrupted) using the "C Tech" icon in the Windows Notification Area (aka System Tray) in the lower right corner of your desktop. If you hover over the icon, it will tell you the status of the module and expected completion time. Double-Right-Clicking will terminate the process. Note that if you do stop any process, the output of the module is corrupted and any downstream module's results are not usable. You will need to re-run the module.
Module Control Panel
The module’s control panel is shown above. The only type-in parameter is search level, which is set to 12.00 by default.
The "Run" toggle controls whether the module will run when applications are loaded or data changes. When this is on, the module runs when applications are loaded or the "Accept" button is pushed. When it is off, the module will not run.
The "Nodes in search" type_in determines the maximum number of nodes that are used in the search for the nearest node or edge when cutting through all nodes in the 3D volume. Higher values result in more accurate cutting, but longer compute times. Raise this number if any problems occur with the module's ability to cut along the surface you are using.
The "Extended search algorithm" toggle is yet another level of accuracy and should only be chosen if the cutting process is not honoring the input surface well. It also increases compute times dramatically but should always result in equal or greater accuracy.
The "Reverse Cutting Surface Normal" toggle flips the normal vector of the cutting surface. In other words, this changes the "sign" of the surf_cut data component. This is useful for certain applications where you want the distance from the surface to be positive on a particular side. This is most applicable when you intend to use merge_fields and downstream cut multiple surf_cut surfaces with a single plume_volume (or plume_shell) module.
The "Project Surfaces" toggle will cause the cutting surface to be projected to the extents of the input model. This can be less accurate if there are sharp corners in the cutting surface.
NOTE: The subsetting level values are in model units. So if you type-in a value of 10.0 and your units are feet, the resulting surface will be rendered 10.0 feet away from the input surface. This may have functional use for visualizing the advancement of a pit excavation.
Related Modules
Example of a network fragment for two fault blocks cut by a non-planar surface:
Notice that the translate module has been renamed 'translate_block_offset' for clarity.
Example of network fragment (from same application) for cutting the translated fault block with a geologic surface.
Notice that one of the surf_cut modules has been renamed 'surf_cut_for_topo' to show which surf_cut module is performing the erosional cutting (topography) vs. the surf_cutting for the fault block.
Resulting model after running the above described application.
© 1994-2018 ctech.com