1"use strict";(globalThis.webpackChunkvrgs_docs_v_3_1=globalThis.webpackChunkvrgs_docs_v_3_1||[]).push([[11429],{94333(e,t,n){n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"tutorial/tutorial-fractures/tf050-intensity","title":"Measuring fracture intensity","description":"Measuring how fractured the rock is \u2014 P10 along a scan line, and P21/P32/P33 intensity maps across the outcrop mesh \u2014 and what each measure can and cannot tell you.","source":"@site/docs/tutorial/tutorial-fractures/tf050-intensity.md","sourceDirName":"tutorial/tutorial-fractures","slug":"/tutorial/tutorial-fractures/tf050-intensity","permalink":"/docs/next/tutorial/tutorial-fractures/tf050-intensity","draft":false,"unlisted":false,"editUrl":"https://github.com/vrgeoscience/vrgs_docs_v3/tree/master/docs/tutorial/tutorial-fractures/tf050-intensity.md","tags":[],"version":"current","sidebarPosition":5,"frontMatter":{"sidebar_position":5,"description":"Measuring how fractured the rock is \u2014 P10 along a scan line, and P21/P32/P33 intensity maps across the outcrop mesh \u2014 and what each measure can and cannot tell you.","keywords":["fracture intensity","P10","P21","P32","P33","scan line","Terzaghi","spacing"]},"sidebar":"docs","previous":{"title":"Orientations and fracture sets","permalink":"/docs/next/tutorial/tutorial-fractures/tf040-orientations-and-sets"},"next":{"title":"Building a DFN","permalink":"/docs/next/tutorial/tutorial-fractures/tf060-building-a-dfn"}}');var r=n(74848),i=n(28453);const a={sidebar_position:5,description:"Measuring how fractured the rock is \u2014 P10 along a scan line, and P21/P32/P33 intensity maps across the outcrop mesh \u2014 and what each measure can and cannot tell you.",keywords:["fracture intensity","P10","P21","P32","P33","scan line","Terzaghi","spacing"]},l="Measuring fracture intensity",o={},h=[{value:"The measures",id:"the-measures",level:2},{value:"P10: scan lines",id:"p10-scan-lines",level:2},{value:"P21 / P32 / P33: intensity maps",id:"p21--p32--p33-intensity-maps",level:2},{value:"The one parameter that matters",id:"the-one-parameter-that-matters",level:3},{value:"The trap in P32",id:"the-trap-in-p32",level:3},{value:"Displaying the result",id:"displaying-the-result",level:3},{value:"See also",id:"see-also",level:2}];function c(e){const t={a:"a",admonition:"admonition",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"measuring-fracture-intensity",children:"Measuring fracture intensity"})}),"\n",(0,r.jsxs)(t.p,{children:["Orientation tells you which way the fractures run. ",(0,r.jsx)(t.strong,{children:"Intensity"})," tells you how\nmany there are, and it is the number that drives everything predictive \u2014 flow,\nstrength, and the DFN."]}),"\n",(0,r.jsxs)(t.p,{children:["VRGS measures it two ways: along a ",(0,r.jsx)(t.strong,{children:"line"})," you place, and across the ",(0,r.jsx)(t.strong,{children:"whole\noutcrop surface"})," as a map. They answer different questions and it is worth\nbeing clear which one you need."]}),"\n",(0,r.jsx)(t.h2,{id:"the-measures",children:"The measures"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{}),(0,r.jsx)(t.th,{children:"Definition"}),(0,r.jsx)(t.th,{children:"Units"}),(0,r.jsx)(t.th,{children:"Measured from"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"P10"})}),(0,r.jsxs)(t.td,{children:["fractures per unit ",(0,r.jsx)(t.strong,{children:"length"})]}),(0,r.jsx)(t.td,{children:"m\u207b\xb9"}),(0,r.jsx)(t.td,{children:"a scan line"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"P21"})}),(0,r.jsxs)(t.td,{children:["trace length per unit ",(0,r.jsx)(t.strong,{children:"area"})]}),(0,r.jsx)(t.td,{children:"m\u207b\xb9"}),(0,r.jsxs)(t.td,{children:["fracture ",(0,r.jsx)(t.strong,{children:"traces"})," on the mesh"]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"P32"})}),(0,r.jsxs)(t.td,{children:["fracture area per unit ",(0,r.jsx)(t.strong,{children:"volume"})]}),(0,r.jsx)(t.td,{children:"m\u207b\xb9"}),(0,r.jsxs)(t.td,{children:["orientation ",(0,r.jsx)(t.strong,{children:"glyphs"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"P33"})}),(0,r.jsx)(t.td,{children:"fracture volume per unit volume (\u2248 porosity)"}),(0,r.jsx)(t.td,{children:"\u2013"}),(0,r.jsx)(t.td,{children:"P33 = aperture \xd7 P32"})]})]})]}),"\n",(0,r.jsxs)(t.p,{children:["The one to keep hold of: ",(0,r.jsx)(t.strong,{children:"P10 and P21 are what an outcrop can show you. P32 is\nwhat a model needs."})," A 2D exposure cannot directly measure area per unit\nvolume, so P32 is always derived \u2014 either stereologically from P21, or by fitting\na DFN. That derivation is where most of the uncertainty in a fracture model\nlives."]}),"\n",(0,r.jsx)(t.h2,{id:"p10-scan-lines",children:"P10: scan lines"}),"\n",(0,r.jsxs)(t.p,{children:["If you made scan lines in ",(0,r.jsx)(t.a,{href:"/docs/next/tutorial/tutorial-fractures/tf020-mapping-traces",children:"step 1"}),", the results are\nalready in their properties:"]}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Property"}),(0,r.jsx)(t.th,{children:"Meaning"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"P10"})}),(0,r.jsx)(t.td,{children:"Fracture count divided by scan-line length."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Set Spacing"})}),(0,r.jsx)(t.td,{children:"Mean raw 3D distance between consecutive fractures along the line."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Normal Set Spacing"})}),(0,r.jsx)(t.td,{children:"The same distance projected onto the set's mean pole \u2014 true perpendicular spacing."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.strong,{children:"Fisher K"})}),(0,r.jsx)(t.td,{children:"Concentration of the logged fracture orientations."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsxs)(t.td,{children:[(0,r.jsx)(t.strong,{children:"Mean Dip"})," / ",(0,r.jsx)(t.strong,{children:"Mean Azimuth"})]}),(0,r.jsx)(t.td,{children:"The mean orientation of the fractures the line crossed."})]})]})]}),"\n",(0,r.jsxs)(t.admonition,{title:"Raw P10 depends on where you put the line",type:"warning",children:[(0,r.jsx)(t.p,{children:'A scan line perpendicular to a set crosses every fracture in it. A scan line\nparallel to that set crosses almost none. Both give a "correct" P10 for a\ncompletely different rock.'}),(0,r.jsxs)(t.p,{children:["This is the ",(0,r.jsx)(t.strong,{children:"Terzaghi"})," bias, and VRGS corrects for it \u2014 but only when each\nlogged fracture has a measured orientation, which means a ",(0,r.jsx)(t.strong,{children:"From intersections"}),"\nscan line. A ",(0,r.jsx)(t.strong,{children:"From Points"})," scan line has no per-fracture orientations, so the\ncorrection, the Fisher statistics and the normal spacing are all undefined and\nreported as zero."]}),(0,r.jsx)(t.p,{children:"If a scan line shows a suspiciously round zero for those fields, that is what\nhappened."})]}),"\n",(0,r.jsx)(t.p,{children:"Place several scan lines in different orientations rather than one. Comparing\
1ntheir corrected P10 is a far better estimate than trusting any single line."}),"\n",(0,r.jsx)(t.h2,{id:"p21--p32--p33-intensity-maps",children:"P21 / P32 / P33: intensity maps"}),"\n",(0,r.jsxs)(t.p,{children:["Instead of one number for one line, this computes intensity ",(0,r.jsx)(t.strong,{children:"at every vertex of\nthe mesh"})," and stores it as a colour-mappable attribute \u2014 so you can see where\nthe outcrop is more fractured."]}),"\n",(0,r.jsxs)(t.p,{children:["In the ",(0,r.jsx)(t.strong,{children:"Data tree"}),", right-click the triangulated mesh:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"P21 Map"})," \u2014 the full command. Prompts for every parameter, and produces P21,\nP32 and P33."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Radial Basis Function (RBF) Area"})," \u2014 a quick path that asks only for the\nradius and uses sensible defaults."]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"Start with the quick path to see whether the radius is sensible, then re-run the\nfull command once you know."}),"\n",(0,r.jsx)(t.h3,{id:"the-one-parameter-that-matters",children:"The one parameter that matters"}),"\n",(0,r.jsxs)(t.p,{children:["Every value is computed inside a ",(0,r.jsx)(t.strong,{children:"search sphere"})," of radius ",(0,r.jsx)(t.em,{children:"R"})," centred on each\nvertex. ",(0,r.jsx)(t.em,{children:"R"})," is a bandwidth, not a detail setting:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Small R"})," \u2014 high spatial detail, but noisy, with few fractures per sphere."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"Large R"})," \u2014 smooth and stable, but blurs the variation you were looking for."]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["A reasonable starting point is ",(0,r.jsx)(t.strong,{children:"a few times the mean fracture spacing"}),", which\nyour scan lines have just given you. That is the practical reason to do the scan\nlines first."]}),"\n",(0,r.jsx)(t.p,{children:"Both halves of every ratio are clipped exactly to the sphere \u2014 a trace that only\npartly crosses it contributes only the length inside, and a triangle straddling\nit contributes only the area inside \u2014 so the result is a true local intensity\nthat varies continuously as the sphere sweeps across the mesh."}),"\n",(0,r.jsx)(t.h3,{id:"the-trap-in-p32",children:"The trap in P32"}),"\n",(0,r.jsxs)(t.p,{children:["P21 is measured from your traces, and traces are real observations. ",(0,r.jsx)(t.strong,{children:"P32 is\nmeasured from the orientation glyphs"})," \u2014 the virtual ellipse VRGS draws for each\nmeasurement \u2014 and the glyph's size ",(0,r.jsx)(t.em,{children:"is"})," the modelled fracture extent."]}),"\n",(0,r.jsxs)(t.p,{children:["So P32 depends directly on the glyph display settings. ",(0,r.jsx)(t.strong,{children:"Auto Glyph Size"})," sizes\neach glyph to the extent of the vertices actually digitised for that\nmeasurement, which ties it back to how big the fracture was on the outcrop. With\nglyph sizes left at some arbitrary default, P32 is an arbitrary number with\nunits."]}),"\n",(0,r.jsx)(t.p,{children:"Check the glyph settings before you read a P32 map, not after."}),"\n",(0,r.jsx)(t.admonition,{title:"P33 needs an aperture",type:"note",children:(0,r.jsxs)(t.p,{children:["Leave the ",(0,r.jsx)(t.strong,{children:"aperture"})," at 0 and the P33 layer is all zero \u2014 which is correct\nrather than broken, since P33 is aperture \xd7 P32 and you have not supplied one.\nFill it in only if you have an aperture measurement worth using."]})}),"\n",(0,r.jsx)(t.h3,{id:"displaying-the-result",children:"Displaying the result"}),"\n",(0,r.jsxs)(t.p,{children:["The maps come back as attribute layers on the mesh. Display them exactly like\nany other attribute \u2014 see ",(0,r.jsx)(t.a,{href:"/docs/next/tutorial/tutorial-basics/ta060-add-attributes",children:"Attribute generation and\nanalysis"}),": pick a perceptually\nuniform colour map, and use ",(0,r.jsx)(t.strong,{children:"Clip"})," to stretch the colour scale across the\nrange that actually matters rather than letting one hot spot flatten everything\nelse."]}),"\n",(0,r.jsx)(t.h2,{id:"see-also",children:"See also"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.a,{href:"/docs/next/general/fractures-structure/fracture-intensity-mapping",children:"Fracture Intensity Mapping"})," \u2014 every parameter, the weighting kernels, and the glyph-size settings in full."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.a,{href:"/docs/next/general/meshes-point-clouds/charts-and-plots",children:"Charts, Histograms and Filtering"})," \u2014 reading the distribution of an intensity attribute."]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["Next: ",(0,r.jsx)(t.a,{href:"/docs/next/tutorial/tutorial-fractures/tf060-building-a-dfn",children:"building a DFN"}),"."]})]})}function d(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},28453(e,t,n){n.d(t,{R:()=>a,x:()=>l});var s=n(96540);const r={},i=s.createContext(r);function a(e){const t=s.useContext(i);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.