The curvilinear fault deformation method takes a planar fault and 'wraps' it around a cylinder with some given radius, with some orientation and static point.

In order to preserve the energy release of the fault the distance between subfaults must be maintained, meaning that the chord (straight line) distance between subfaults in the curvilinear fault must equal the distance in the planar fault, rather than the distance around the cylinder surface.

If desired deformations in the down dip and down strike can be performed independently. Depending on implementation this operation can be commutative, meaning order of deformation does not matter.

Further work would be to allow spherical deformations, however special attention must be paid to preserve subfault to subfault distances.

Math behind it

Points on the surface of a cyclinder

As the subfault to subfault distances for the planar and deformed faults are the same, the center of curvature, the static point and some given point to be moved form an isosceles triangle, with the base between the static and given points. This allows us to calculate the angle between the center point to static subfault vector and the center point to final location of any given subfault, as this will be the ratio of the rake/dip offsets and central angles will be constant.

For subfaults adjacent (delta dx or dy is 1) to the static subfault we get the formula:

dy_theta = 2*arcsin((dy/2)*(1/r))

With (dy) - the subfault distance in either the dip or strike direction. (r) - the radius of curvature.

To get the angle for subfaults further away we can simply take the integer multiple of this value, as per its strike or dip offset relative to the static subfault.

Distance and angle to deformed location

These calculations are done relative to the fault plane.

Aside from the static subfault each point will be moved away from the fault plane (usually down) some distance (dxn) and towards the static subfault some amount (dyn):

dxn = r - r*cos(n*dy_theta)

dyn = n*dy - sin(n*dy_theta)

As a result the distance the subfault will move is:

dn = sqrt(dxn2+dyn2)

Deformation movement

Along dip deformation

The angle the subfault will move, relative to the fault plane is:

dn_theta = arctan(dxn/dyn)

The subfaults will be moved in the downdip direction, for most planar faults this will be perpendicular to the strike, but for some planar and all multiplane faults this will be a defined direction.

The dip of the plane must be added to the relative angle, meaning each subfault will have the following operation performed on it:

3d_shift(subfault_location, distance=dn, bearing=downdip, altitude_angle=dip+dn_theta


  • No labels