Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The Block Model step allows users to load in block models which can then be used for reporting purposes. This process is exactly the same as the ‘Block Model’ Block Model step in Rapid Reserver.

Table of Contents

Overview

Block Model Import instructions see here.

Info

Reserve Model is a collection of block models. Each project loads a single .resmodel file at a time.

...

Button

Description

Creates a new Reserve Reserves Model (.resmodel file)

Opens an existing Reseve Reserves Model

Edit the currently loaded Reserve Model

Removes the currently loaded Reserve Model

Export the currently loaded Reserve Model to CSV

...

Creating Reserves Model

To create a new Reserve Model, press the New button, , which will open the Reserve Model Generator.

...

Loading Block Models

Located at the top left-hand side of the Reserve Generator is the “Block Model” panel. Here, block models can be introduced to the model and as well as removed. The process of loading in a block model as a CSV is outlined below.

  1. Press the blue plus button  > select “CSV File” option > import “bm1“pit1a.csv” file.Set

...

2. In the Import CSV File window, set the green Header Line to match the header text.

3. Set the yellow Data Offset to match the first row of data.

4. Press OK to finish.

...

...

Tip

When importing Block Model CSV, you’ll see a preview of the first 100 rows of this CSV. It's a good time-saving feature, as your site Block models CSVs can be of a very large size and take a long time to open.

Reservable Model Generator Overview

Once you complete an import, in the Reservable Model Generator window you’ll see:

  1. List of imported Block Models.

  2. All the fields contained in the imported Block Model listed on a right hand side, as well as feature to create and choose Custom Variable, that can be missing, but required for mapping to one of the fields.

  3. Default fields that every single Reserves model needs to have.

  4. Minimum and Maximum columns to clamp numbers by block to be >= Minimum and <= Maximum.

  5. Format selection column.

  6. Mapping fields to be populated.

  7. List of errors without resolving which you will not be able to generate your Reserves model.

  8. Row Parcel Mappings template.

  9. Buttons to Generate Reserves Model or Cancel changes made.

...

Basic Default Fields Mapping

  • Once the block model has loaded, its header fields are listed in the Variables panel on the right

...

Note

If the name of a block model appears red, it means the absolute path to the file can’t be found. The path to the blockmodel must be relinked in order to use it.

...

  • .

  • To map variables to the fields you can:

    • manually type it in,

    • drag and drop,

    • double click.

  • X, Y and Z are blocks coordinates.

  • DX, DY and DX are blocks dimensions.

  • For the Volume field use the formula N("DX")*N("DY")*N("DZ").

    • For the DryTonnes field use the formula N("DX")*N("DY")*N("DZ")*N("SG").

    • For the WetTonnes field use the formula N("DX")*N("DY")*N("DZ")*N("SG")/0.95 or N("DX")*N("DY")*N("DZ")N("SG")(1+N("moi")).

  • Numeric fields use the N(“field”) syntax, and text fields use the T(“field”) syntax.

...

Generating Reserves Model

To check if the values are correct, generate a preliminary basic Reserves Model by hitting Generate button.

Upon completion Reservable Model Generator window will close and you’ll be directed back to the main Block Model page, where you can see:

  • Reserves model based on a single Block Model.

  • Path to the folder where it is stored.

  • Count of blocks and model extents.

  • Summary with populated fields and materials grouped as “rock” (as specified Parcel).

Editing Reserves Model

Press Edit button to come back to the Reservable Model Generator and input additional information.

...

Adding Grades

Reserve fields are the components that provide structure for the Reserve model. There are three types of fields that can be created , Sum, Weighted and Class. Sum by clicking the relevant icon in the toolbar: Sum Fields , Weighted fields , and Class Fields  can be created by clicking the relevant icon in the toolbar. When a new field is created, it is expected that a block model variable will be mapped into it; however, it is possible to leave a field unmapped.

...

The table below provides a brief description of each field and how they behave when aggregated.

Field Type

Description

Add Additive button - Sum fields

When aggregating multiple block model cells, the value of these fields will be summed together. Sum fields include quantity fields such as volume, tonnes and gold ounces.

Add Weight Averaged button - Weighted fields

When aggregating multiple block model cells, the value of these fields will be weight averaged by there their parent Sum field. Weighted fields need to be nested under a Sum field.

Add Text button - Class fields

Creates subtotals of a sum field, such as Indicated / Inferred / Measured. When aggregating multiple block model cells, these fields behave like Sum fields.

Generating the Reserve Model

If the Errors panel is blank, and once all fields are mapped, press Generate to build the reserve model.

...

Once the reserve model file has been generated, in the Reserves Summary panel you will see a block model summary for each loaded block model.

  • Use the Min/Max toggle to inspect the data for missing or rubbish values.

  • Check the material types, tonnes and grades for ballpark accuracy.

...

Since all grades are weight averaged by Dry tonnes, add three weight-averaged fields “Head_Fe”, “Head_Al” and “Head_Si” and map corresponding fields to them.

...

Creating Ore and Waste parcels using “IF” statement

To make different parcels and define Ore and Waste use the “IF” statement N("<...>") <= 0 ? 0 : N("<...>").

Different formulas and operators that you use to create Block Model fields expressions can be found in the SC. Block Model Formulas section.

  1. Type in a condition or the statement to test, which will be N(“Fe”) greater than (“>”) 60 return (“?”) “ore” otherwise (“:”) call it “waste”.

...

2. Regenerate Reserves Model (override existing one).

3. Review grades in the Reserves Summary.

4. Use Min/Max toggle to display minimum and maximum values.

...

Creating Ore and Waste parcels using Custom Variables

Normally Ore and Waste definitions are more complex and multiple grades and types inputs are required. In this case, use Custom Variable functionality to define different properties through the Script Editor. Scripting language is C#.

  1. Return to the Reservable Model Generator by pressing Edit.

  2. Press Custom Variables button at the top right corner to open Script Editor window.

...

There are multiple different types of variables you can create, mains are Text and Double. In this example we will practice to create a Text Variable.

...

3. Delete not applicable rows (in this example, lines from 15 to 31).

4. Define variable you wish to create (Parcel).

5. Create variable called “fe” to reference all the grades within the Block Model. Use semicolon to close the formula. double fe = context.N("Fe");

6. Write a simple IF statement, such as if (fe>60) return "ore"; else return "waste";

7. To check if the statement is correct, press the Compile button.

...

If you did a mistake, the Compile Error window will pop up, showing row and column of an error with a short description of its type.

...

8. Press OK to confirm changes.

9. In the list of available variables on the right you will see a new variable CustomT("CustomTextVar") in bold, map it to the Parcel field.

...

10. Regenerate Reserves Model (override existing one).

11. Review grades in the Reserves Summary.

Creating more detailed on the grade binning variable

Advantage of creating Custom Variable via the Script Editor is that there it’s possible to add more complicated variables.

  1. Update the created variable by adding lines with a breakdown of parcels based on Fe content as shown below, or copy preconfigured formula from the SC. Block Model Custom Variables page.

...

2. Map this new custom variable to the Parcel field.

3. Regenerate Reserves Model.

4. Review grades in the Reserves Summary. Based on populated values, you should see “hg”, “mg”, “lg1”, “lg2”, “minw” and “w” parcels added.

...

Adding Extra Fields

So far we mapped only default block model fields and fields for Heads Fe, Al and Si. Now we can create and map additional fields for Lumps and Fines.

Add extra fields to map variables available from your Block Model.

  1. Add a Sum (Add Additive icon) field - Fines_Volume - to calculate fines volume use inline formula N("DX")*N("DY")*N("DZ")*N("fines_pct").

  2. Add a Sum (Add Additive icon) field - Fines_Tonnes_Dry - to calculate dry tonnes of fines use inline formula N("DX")*N("DY")*N("DZ")*N("SG")*N("fines_pct").

  3. Add four Weight Averaged fields (Add Weight Averaged icon) - Fines_Fe, Fines_Al, Fines_Si, Fines_Pct - map corresponding numerical fields to them.

  4. Add a Sum (Add Additive icon) field - Fines_Tonnes_Wet- to calculate wet tonnes of fines use inline formula N("DX")*N("DY")*N("DZ")*N("SG")N("fines_pct")(1+N("moi")).

  5. Repeat for Lumps.

    1. You can use Find and Replace functionality.

...

Use the Import Template button to populate preconfigured fields and mappings (available in your Sample Dataset folder).

  • blockmodelfields.abmf - fields.

  • blockmappings.abms - mappings.

...

Adding multiple Block Models

Press the blue plus icon to download additional Block Models you wish to combine within one Reserves Model.

  • Import CSV-files pit2a and pit3a from your Sample Dataset folder.

For each of the imported Block Models fields are the same. Within the Reserves Model for each of the Models you are importing in you have to have the same structure (number of fields and fields themselves). If in source models different variables or different names are uses, you can change fields mapping, but not the fields.

Copping Mappings

  1. In “pit1a” Block Model table use <SHIFT> or <CTRL> buttons to select all or multiple fields.

  2. Press the Copy Mappings icon at the top toolbar to copy selected mappings to the clipboard.

...

Pasting Mappings

  1. Navigate to the imported “pit2a” Block Model and multi select all the empty fields to be mapped with custom variables.

  2. Press Paste Mappings icon at the top toolbar to populate selected fields with the mapping imported.

...

3. Repeat for “pit3a” Block Model.

Tip

To copy and paste fields mappings between multiple Block Models you can also use <CTRL+C> and <CTRL + V> hotkeys.

Exporting Fields and Mappings

You can export created fields and all or the selected parcel mappings using the Export button at the top toolbar. Exported sets will be saved in “.abmf” (for fields) or “.abms”/”.abmm” (all/selected mappings) format.

...

Combined Reserves Model

Once you are satisfied with added fields and mapping for each Block Model, generate one common Reserves Model, which will combine all of the above.

Info

Before generating Reserves Model make sure that no issues listed in the Errors panel. You cannot generate reserves until all the errors are resolved, if any, refer to the bottom error panel for more details.

...

Review the Reserves Summary, it will update depending on which one you click on.

If you need to validate built Reserves model against the source one, use the Export buttons to save all or the selected parcels and fields to CSV or Text format.

...

Block Model Formulas and Logical Operators

There are a number of expressions available to use in the Reserve Model Generator.

Expand
titleBlock Model Formulas

A+B

Add A and B

A-B

Subtract B from A

A*B

Multiply A and B

A/B

Divide A by B

A.ToLower()

Convert all upper case text (HG, Hg, hg) into lower case (hg)

Math.Min(A,B)

Return the minimum of A and B

Math.Max(A,B)

Return the maximum of A and B

N("density") <= 0 ? 0 : N("volume")

If density is less than or equal to zero, return zero volume, else return the volume field

A.Substring(0,Math.Min(3,A.Length))

Return the first three letters of A

( RowT("material")=="waste1" || RowT("material")=="waste2" ) ? "waste" : RowT("material")

If material is waste1 or waste2, then return "waste", else return the "material"

Expand
titleLogical Operators

And

&&

If A is "true" and B is "true" and C is "true", then return "true", else return "false"

Or

||

If A is "true" or B is "true" or C is "true", then return "true", else return "false"

Equal to

==

If A is equal to B, return "true", else return "false"

Not equal to

!=

If A is not equal to B, return "true", else return "false"

Greater than

>

If A is greater than B, return "true", else return "false"

Greater than or equal to

>=

If A is greater than or equal to B, return "true", else return "false"

Less than

<

If A is less than B, return "true", else return "false"

Less than or equal to

<=

If A is less than or equal to B, return "true", else return "false"

Note

Note

If in the Reserves Model Generator the name of a block model appears red, it means the absolute path to the file can’t be found. The path to the blockmodel must be relinked in order to use it.

...

Once you are satisfied, press the blue play button  to proceed to the next step.