Surface Production Targeting and Blending
Surface Production Targeting and Blending
Surface Production Targeting and Blending
Copyright 2009 Gemcom Software International. All rights reserved. Gemcom Software International publishes this documentation for the sole use of MineSched licenses. Without written permission you may not sell, reproduce, store in a retrieval system, or transmit any part of the documentation. For such permission, or to obtain extra copies please contact your local Gemcom Office. Gemcom Software International Level 8 190 St Georges Terrace Perth, Western Australia 6000 Telephone: (08) 94201383 Fax: (08) 94201350 While every precaution has been taken in the preparation of this manual, we assume no responsibility for errors or omissions. Neither is any liability assumed for damage resulting from the use of the information contained herein. All brand and product names are trademarks or registered trademarks of their respective companies.
Products MineSched 6.1 Surpac 6.1 Document Release Date March 2010
Table of Contents
Overview ...................................................................................................................................4 Data Storage and Familiarisation ............................................................................................5
Task: Setup Data Management Hierarchy ............................................................................................ 5 Task: Set Your Working Directory ......................................................................................................... 5 Data Review ............................................................................................................................................. 5
Targets ....................................................................................................................................13
Quality Targets ....................................................................................................................................... 13 Task: Review the Current Schedule ................................................................................................... 13 Task: Add a Quality Target to the Schedule ....................................................................................... 14 Task: Add Flexibility to the Schedule .................................................................................................. 17 Task: Explore the Options for Meeting the Targets ............................................................................ 21 SCOPE LEVELS .................................................................................................................................. 22 SWITCH ............................................................................................................................................... 24 Task: Create a Process Target ........................................................................................................... 26 Task: Minimise the Rehandling .......................................................................................................... 29 Material Ratio Targets ............................................................................................................................ 31 Task: Add a Strip Ratio ....................................................................................................................... 31 Material Classes and Resource Capacities ............................................................................................ 33 Task: Investigate the Effects of Material Classes on Resource Capacities ....................................... 33 Task: Create a Schedule that has a Constant Ore Production .......................................................... 35 Parameters and Precedences to Help Meet Targets ............................................................................. 37 LOCATION_PRIORITY ....................................................................................................................... 38 RECALC_ACTIVE_LOCATIONS_AT_PERIOD_START .................................................................... 38 SCOPE_LEVELS_ACTIVE_LOCATION_CALCS ............................................................................... 39
Overview
Surface Production Scheduling can be challenging because many options are available to move resources around the various locations of the excavation at short notice. The schedule is usually designed to achieve a constant production rate, target grade at a process point or points or combinations of both. This tutorial is aimed at the beginner to give a working knowledge of surface production scheduling in MineSched without complex scheduling scenarios. This tutorial will be a brief exploration of the concepts within MineSched used to initially set up a schedule. This tutorial is an extension of the surface scheduling setup tutorial and the material movement tutorial and it covers targeting and blending at stockpiles and processes and material ratio targets. Subsequent tutorials in this series will extend the schedule further to look at options available to make the schedule more practical, short term polygon sequencing and different output result types. Requirements This tutorial assumes that you have a reasonably advanced knowledge of Surpac. If you are a new Surpac user, you should go through the Introduction to Surpac tutorial, the Block Modeling tutorial and the Mine Design tutorial before going through this tutorial. This tutorial is the third in a series of tutorials designed to teach the common functionality within the MineSched Production Module. The results of this tutorial will be used to complete the next tutorial. An understanding of surface scheduling techniques is required to complete this tutorial. You must have completed both the Surface Production Schedule: Initialisation tutorial and the Surface Production Schedule: Material Movement prior to attempting this tutorial to understand some of the concepts. You will also need: To have Surpac V6.1 or higher installed on your computer. To have MineSched V6.1 installed into your version of Surpac. The data set accompanying this tutorial. You can use the data you finished with from the previous tutorial or new data is supplied with this tutorial.
Objectives The objective of this tutorial is to give you a basic understanding of how to setup a surface production schedule and report on this. This tutorial focuses on the targeting and blending aspects of scheduling. It is not intended to be exhaustive in scope, but will show the workflows needed to achieve results. You can then refine and add to these workflows to meet your specific scheduling requirements. Workflow
Page 4 of 40
Many files are also created during the scheduling process such as reports, parameter files, log files and animation files. It is for this reason that it is important to manage your data so that it is easy to locate, access and analyse. Some of the parameter options within MineSched allow the user to store filenames using a relative path or an absolute path. Using relative paths means that the schedule data will be transportable between various data storage systems and can be operated from several different locations. This makes it very important to store your data logically to facilitate this functionality as well as assisting other users to understand and locate your data readily.
Data Review
The data was also reviewed in the previous tutorial, however it is shown here again for reference. Open the files pit_design1.dtm and pit_stage_a1.dtm. Using DTM properties, change the colour of the stage A pit.
Page 5 of 40
The files show a final pit design and an initial stage A for this pit. The Stage A subpit is developed first to quickly establish cash flow for the project then the remainder of the pit is mined. Now open the block model and display it.
Page 6 of 40
The block model contains four attributes. Attribute grade material sg type Cancel the form when finished. Graphically constrain the block model to show only the blocks where the grade > 1 Description The quality value of the commodity MineSched material class The specific gravity or density of the block The rock type. Either air, oxide, transition or fresh
Page 7 of 40
To get an indication of grade distribution, colour the model by the grade attribute. Select a cutoff range that corresponds to the mining grade ranges selected for profitability. Grade Range <1 1 to 3 >3 Description Waste Low Grade High Grade
Page 8 of 40
Page 9 of 40
Opening a Scenario
For every schedule there must be at least one scenario file.
MineSched will open the Scenario History Window which shows all of the scenarios that have recently been manipulated.
Page 10 of 40
3. Select the Surface Production Material Movement 1 scenario file and apply the form. MineSched will open the scenario and present you with the last screen that was presented when the scenario was saved previously. In this case it was the Locations section of the Setup Schedule Step.
4. We will make a second copy as a new scenario in order to keep our previous scenario unedited in case we need to return to it later. In the menu choose Scenario > Save As
Page 11 of 40
5. Save the scenario as Surface_Production_Targeting_and_Blending_1.minesched_prod 6. The new scenario is ready to be used. MineSched has made a copy of the results folder to maintain the data structure for each individual scenario.
Page 12 of 40
Targets
Targets
There are two types of targets in MineSched: Quality Targets and Material Ratio Targets. Quality targets relate to targeting average values of any of the qualities defined in the Define Geology Step. These grade targets are usually pre-defined by limitations in the processing circuit designed to maximize the recovery at the process. Material Ratio targets relate to desired ratio between material classes as they are mined from the mining locations. A common example is a strip ratio. These ratios are used to ensure the costs of mining are balanced out between material that is costly to mine (waste) and material that provides a return. A schedule where targets are important usually contains a combination of both types of targets and sometimes there are multiple targets that need to be achieved. When different targets are competing in a schedule, MineSched calculates the best balance possible given the information entered into the schedule.
Quality Targets
Quality Targets can be one of the main drivers for defining which blocks are mined during which periods in the schedule. The targets are used to build stockpiles of a given grade or to maintain a constant head grade at a plant or process. In this section we will look at how to enter quality targets and use them in a schedule and investigate the effect these targets have on the mining sequence. First lets familiarize ourselves with the results of the schedule prior to adding targets.
2. Go to the Publish Results Step and create the custom reports and view them. 3. Save the results as a different name so we can compare these with the results we create later. Note the average recovered grade. This gives us an indication of what values are possible to use when targeting. TIP: It is a good idea to create a simple schedule and view the results prior to adding the targets. The average grades generated in the report and the timing of when these grades appear in the schedule give you an excellent preview of what is possible to set as targets. Often, decision makers in a mining company can define the target for the mine without seeing this data and are unaware that the desired target is not possible to achieve.
Page 13 of 40
Targets
Page 14 of 40
Targets
2. Based on the results, the average grades that are possible to sustain on each stockpile is 2.3g/t for the Low Grade Stockpile and 3.8g/t for the High Grade Stockpile. These are the values we will target. In this example we will look at defining the target on the stockpiles rather than at the MILL. We will look at the MILL later. We should not have any problems targeting these values as these are the overall averages. It is possible to target other values, in this case, MineSched will do the best it can to meet these targets each period, based on the available blocks. 3. Go to the Targets section of the Setup Schedule Step.
Destination All Targets must be associated with a destination. Destinations for quality targets include Stockpiles and processes only. Materials Define the material class(es) that contribute towards the defined target. Quality Which defined quality or user calculation is the target to be set for. Value What is the specific value of the quality we wish to target. Lower Threshold When the target value is defined for a process and rehandling is an option, what is the lower threshold value before rehandling takes place.
Page 15 of 40
Targets
Upper Threshold When the target value is defined for a process and rehandling is an option, what is the upper threshold value before rehandling takes place. Priority What is the priority of this target in relation to other defined targets. Date/Event At what date or event does this defined rule become active. Delay A delay can be added to the Date/event. 4. Add the following Targets.
5. Create the Schedule and view the results. Add the Quality Targets Chart to the Dashboard.
6. The results have not changed. This is because there is no flexibility in the schedule to allow MineSched to selectively choose blocks.
Page 16 of 40
Targets
As can be seen from the way that the mining locations have been defined there is only one constant mining direction and the consolidate blocks forces the schedule to maintain a constant face across the entire pit. 1. The best way to give flexibility to the schedule is to allow mining to occur in any available block. To do this, change the mining direction to none and clear the consolidate blocks option. This must be done for both mining locations.
Page 17 of 40
Targets
3. The results are slightly better, but not significantly enough. We need to add further flexibility to the schedule if we are to achieve the desired targets. The next place we can add flexibility is by changing the mining sequence. Currently STAGE_2 begins after STAGE_1 is complete. Change the sequence in the Production Rates grid to allow both locations to be mined simultaneously.
Page 18 of 40
Targets
5. The results are significantly better, however, the last change we have made presents a problem. 6. Create the graphical output and animate the schedule.
Blocks in STAGE_2 are being mined before the blocks above them in STAGE_1 have been mined. This has created an invalid schedule. When there are multiple locations defined and there is a geospatial relationship involved between these locations, this must be defined in MineSched. This represents a precedence between blocks, that is, blocks in one location take precedence and must be mined before blocks in another location are mined. Blocks within the same location automatically have their precedence defined by MineSched. For cross-location precedences, this is handled by a spatial relationship.
Page 19 of 40
Targets
7. Go to the Precedences Section of the Setup Schedule Step and add the spatial relationship. STAGE_1 is the primary location as these blocks must be mined first. STAGE_2 will be the secondary location.
8. Create the schedule and view the results. Also validate the schedule with the graphical results.
Page 20 of 40
Targets
The schedule is still not perfect. While the grades have stabilized they are not exactly meeting the defined targets. What issues do we have with the schedule that need to be addressed? The schedule is not very practical. The way the mining blocks are sequenced to meet the targets is not practical to physically mine. The grades will need to be stabilized further for processing.
Making the schedule more practical will be covered in the next tutorial in this series. In this tutorial we are only looking at various options for targeting. The practicality issues to deal with include random looking block sequence and multiple benches being mined at one time.
Page 21 of 40
Targets
SCOPE LEVELS
The change in block size did not make any impact on the ability to meet the defined targets. In this case, due to the nature of the deposit, this is not a suitable option to help us meet the targets. 2. Set the block size of the mining locations back to 50 x 50. 3. There are parameters that control how the targets are utilized. These can be found on the Target Properties panel in the Targets Section. 4. One property that can be used is the SCOPE_LEVELS. The scope levels can be defined separately in the vertical direction and the horizontal direction, however in this tutorial we will only look at the SCOPE_LEVELS option that is used in all directions. What is SCOPE_LEVELS?
SCOPE LEVELS
Scoping levels allow MineSched to look ahead of the current available blocks to the blocks available at the next level or as many levels as is specified. Scoping Levels can be applied in the horizontal or the vertical direction or in both directions. The larger this is set the more blocks MineSched is able to factor into its calculations. A side effect to this is that the number of calculations increases and so the schedule may take longer to process.
Page 22 of 40
Targets
SCOPE LEVELS
Having scope levels not set, means that only blocks in level 1 (that is the currently available blocks) are used in the calculations to seek targets. When SCOPE_LEVELS is set to 2, the values of the blocks at level 2 will be factored in to the calculations and at SCOPE_LEVELS 3, the next available blocks will become available. Scope levels can be applied in the horizontal plane, the vertical plane or both planes. Based on this, MineSched can make strategic mining decisions. For instance the target cannot be met this period, but if this block is scheduled for this period, that will make the following blocks available for next period which will help me maintain my targets. Defining a large number of scope levels is not always the best for scheduling. A large number brings blocks into the calculations that can influence the sequence of the current blocks selected. Should blocks that may not be mined for a year influence our decisions today? As scoping levels increases the number of blocks in the calculations the schedule will take longer to process. Care should be taken when choosing how many levels to including the scoping. A rule of thumb is to start with 3 scope levels and increase or decrease one at a time if necessary. 5. Add a SCOPE_LEVELS of 3 for the mining locations.
Page 23 of 40
Targets
SWITCH
The SCOPE_LEVELS is helping meet the targets earlier on in the schedule. Another option to assist in meeting the defined targets is the SWITCH option.
SWITCH
The switch value determines what percentage of time elapsed in the period that MineSched moves from one targeting algorithm to the next. MineScheds target scheduling uses two very different algorithms when choosing which blocks to mine. These algorithms in MineSched are heuristic in nature. The first algorithm is used initially in the scheduling period when a high performance algorithm is best employed. The second algorithm is used later in the scheduling period when an optimization technique is used to zero in on the targets. By default, the target scheduling switches algorithms three quarters of the way through each scheduling period. Setting the SWITCH to 0.25 for example, indicates that for the first quarter of the period MineSched will use the high performance algorithm and for the remaining three quarters of the period MineSched will use the optimization algorithm. As a rule of thumb reduce the SWITCH as your number of targets increase. The trade-off is performance as processing time will increase as SWITCH decreases. Also it is not a general rule that the lower the switch setting, the better the results. Setting the switch too low often detracts from achieving your targets. It can be worthwhile to experiment with different SWITCH settings, for example 0.75, 0.5, 0.25. 7. Set the SWITCH to 0.9. SWITCH is a global parameter, that is it is something that governs the schedule as a whole so this option will only be available when the location field is blank because the SWITCH is independent to any locations.
Page 24 of 40
Targets
SWITCH
This deposit is notoriously difficult to meet the targets from the mining. The reason for this is due to the distribution of ore in the deposit, the fact that the ratio of ore to waste is relatively low and that the grade increases with depth with a small supergene enrichment zone. TIP: The block size we have chosen is 50 x 50 in the XY direction, however the bench height chosen is 10. This gives an interim slope of the pit wall of 1/5 or 11 degrees. In some cases it is advantageous to expose lower areas of the pit sooner. This is done by increasing the ratio of the depth of the block to the horizontal block size by either increasing the bench height or reducing the mining block size. No perfect solution can be found by placing targets on the stockpiles and trying to meet them from the mining. In this case the solution lies in the blending.
Page 25 of 40
Targets
The above chart has been added using the Added to Process chart. It was then customized with the following options.
2. Add a target at the MILL. The target will be 2.5 (from the reports this is the average grade already at the mill). The target will be applied on all of the materials at the mill.
Page 26 of 40
Targets
4. The targets are met perfectly. MineSched determines the amounts of materials drawn from the low and high grade stockpiles required to meet the target grade at the MILL. Check the reports to see the amounts drawn from the stockpiles each period to meet the target.
Page 27 of 40
Targets
It can be seen that towards the end of the schedule the high grade stockpile is not being drawn from. This is because towards the end of the pit, the average grade is much higher than the head grade requested at the mill, so to meet the blend, MineSched draws more from the low grade stockpile than from the high grade stockpile. With some upgrades to the MILL, later in the schedule it can be possible to increase the head grade that can be processed at the mill. 5. Change the target grade to 3.3. This grade will take effect from 01/01/2010.
As the head grade increases there are less ore tonnes required to produce the number of ounces. This is reflected in the chart above.
Page 28 of 40
Targets
The targets are being met successfully, however there is much material rehandling. This adds a large cost to our schedule. In preference it is better to send material that meets the required target directly to the process and only send material to the stockpiles if blending is required to meet the target specifications.
Page 29 of 40
Targets
Once the material movement rules have been defined we need to instruct MineSched on how to handle material that either meets or does not meet the defined targets. This is done using target thresholds. 2. Go to the Targets section and add thresholds as shown below.
MineSched will use these thresholds to determine the path that material takes to the process. For example if the average grade of the blocks mined for the period is 2.47 (in the first year) then that group of blocks will be delivered directly to the mill for processing. If the blocks that are mined are outside of the thresholds, say 2.8 then the blocks will be delivered to the stockpiles and material will be drawn from the stockpiles to satisfy the MILL requirements. MineSched will attempt to minimise the rehandling by swapping blocks from the mining with blocks from the stockpile until the quality result for the period falls within the target threshold values, or until no further improvements can be made. 3. Create the schedule and view the results.
Page 30 of 40
Targets
Notice that the grades are not met exactly anymore. This is the cost of shipping material directly to the process. The values, however, will fall inside the defined thresholds unless insufficient material is available.
In the above method the value is given as 5.7 for the ratio between destinations of WASTE_DUMP : HG_STK LG_STK. The 5.7 represents a value of 5.7:1.
Page 31 of 40
Targets
In the above method the value is given as 0.149 for the ratio of MILL : (all_destinations). The 0.149 represents that 14.9% of the total production should be ore. 3. Using either method, add the material ratio target and create the schedule. View the results. There should be a Strip Ratio Chart that was added in a previous tutorial.
4. The strip ratio is being honoured as often as possible and the quality targets are still being honoured. It is possible that the schedule can be improved by changing some of the options discussed throughout this tutorial. For example changing the block size to 25 x 25 for both mining locations and adding SCOPE_LEVELS of 3 and a SWITCH of 1, the results look very favourable. Try these options and create the schedule. If you choose to do this the schedule will take much longer to run as the number of blocks has increased by 4 times and the number of calculations will increase due to the scope levels.
Page 32 of 40
Targets
5. One problem exists. Create the graphical results and view the animation. Does the schedule look practical?
6. The schedule is not very practical. This will be dealt with in the next tutorial. With each additional constraint that is added to make the schedule more realistic, this will reduce the ability of MineSched to meet the defined targets. 7. If you changed the block size and added the target parameters, change them back now and turn off the target parameters to allow the schedule to process faster.
Page 33 of 40
Targets
2. Go to the Resource Capacities panel of the Resources Section in the Setup Schedule Step. Change the resource capacity as shown below by adding the HG_FR material class to the materials field.
3. Create the schedule and view the results. The Production Values chart is most useful for this analysis.
4. It can be seen that even though the capacity of the resource was 100, over 16,500,000 was mined in the first period. This is to do with the definition of the Material classes field in the resource capacities panel. A resource will always mine all materials however the capacity of a resource can be defined such that the resource does not stop mining until a certain quantity of a particular material class(es) is reached. The Materials field is not a filter on materials for the resource, it is a list of material classes that contributes towards the capacity of the resource. As defined above, the resource will continue to mine all materials each day until it has mined 100 cubic metres of HG_FR. As this material is not present until the lower parts of the pit, 16,500,000 cubic metres of all materials must be mined before 100 cubic metres of HG_FR can be mined. TIP: A common mistake by users is to assign a resource as a WASTE resource and a resource as an ORE resource with the theory that these are the only materials that these resources will mine. However this is not correct methodology for a longer term schedule as a single mining block contains multiple material classes. In real life you would not have an excavator move to a 50 x 50 block and carefully dig all of the ore from that block and leave behind the waste then move off that mining block and allow another excavator to move onto the block and mine all of the waste. Mining resources are assigned to locations and this is typically how the resources are defined. When it comes to shorter term scheduling a
Page 34 of 40
Targets
location can be defined as either an ore location or a waste location and the resources will be assigned accordingly.
2. Create the schedule and view the results. It is not necessary to change the MAX_RATE values in the production rates grid as, even though the rate is 35,000, the resource capacity is still capped at 9,041 tonnes per day. 3. Create a new chart that shows the contribution of materials to the production amounts (ore and waste only).
Page 35 of 40
Targets
As can be seen the schedule produces an exact and constant amount of ore each period, however the chart indicates that some periods are producing too much material overall, especially period 2. The report confirms this analysis.
4. The total amounts are controlled by using a material ratio target. We can use the same target entry we defined previously. Turn this target on. In this case though we need to change the value. We would still like our excavator fleet to produce approximately 30,000 cubic metres per day. As the capacity has changed to tonnes of ore this equates to approximately 75,500 tonnes per day. So the ratio we should be targeting is 9041/75500 = 0.12
Page 36 of 40
Targets
LOCATION_PRIORITY
6. Importantly, at 75,500 tonnes per day the production should never exceed 2,340,500 tonnes. It can be seen that period 15 (March 2010) is over-producing. Better results may be achieved by reducing the block size and/or adding target parameters. The results below were achieved by reducing the block size to 25 x 25. No targeting parameters were used.
Page 37 of 40
Targets
LOCATION_PRIORITY
LOCATION_PRIORITY
Valid Values any positive number. The lower the number the higher the priority and priorities do not need to be integers. When target scheduling and MineSched looks at all of the available blocks from all of the active locations, if all of the blocks have the same value, MineSched will choose the block(s) from the location that has the highest priority. In the schedule in this tutorial, the geometry of the blocks means that using this parameter will not give any further benefit for meeting the targets. An example of where this parameter is useful is in a layered deposit. Consider the following example where locations are layered on top of each other.
In the above example it is desirable to drop down to expose the ore as fast as possible. When MineSched comes to schedule this there is no reason to drop down as when it mines a waste block from LOCATION_A, it exposes a waste block from LOCATION_B, now it has two waste blocks to choose from, one in LOCATION_A and one in LOCATION_B. With no reason to mine the block from LOCATION_B, MineSched will mine the block in LOCATION_A because this opens more blocks in the schedule later for flexibility. By adding LOCATION_PRIORITIES, this issue is resolved.
Now when MineSched schedules this deposit, it will first mine a block in LOCATION_A which will expose the block in LOCATION_B. When selecting the next block, it will choose the block in LOCATION_B because that block has a higher priority. This will then expose the ore block which will be mined to meet the defined targets. Note the example above does not take into account lags which will be explained in the next tutorial.
RECALC_ACTIVE_LOCATIONS_AT_PERIOD_START
Valid Entries yes or no This parameter is used to permit MineSched to recalculate which active locations are selected to meet defined targets. This parameter is used in conjunction with the parameter MAX_ACTIVE_LOCATIONS which is used to define a subset of locations that are scheduled from within a set of locations. As there are only two locations in this tutorial and both are active, this parameter will not provide any benefit to meeting defined targets. This parameter is used when defined targets change each period. When MineSched initially chooses the best subset of active locations within a group of locations these locations are continued to be mined until one of those locations is completed and then the next location to be added into the subset of active locations based on the criteria defined in the targets. When targets change each period, it is logical that the active locations would need to change also to meet these targets.
Page 38 of 40
Targets
SCOPE_LEVELS_ACTIVE_LOCATION_CALCS
SCOPE_LEVELS_ACTIVE_LOCATION_CALCS
Valid Entries any integer value greater than zero When calculating which active locations to select for mining, scope levels can be used. This parameter is used in conjunction with MAX_ACTIVE_LOCATIONS and RECALC_ACTIVE_LOCATIONS_AT_PERIOD_START. Normally when selecting the active locations that should be used to meet defined targets, all of the blocks in a location are used to determine which locations would give the best results. When targets vary over time, better results would be achieved when RECALC_ACTIVE_LOCATIONS_AT_PERIOD_START is used. With the use of this parameter it is possible that the active locations could change each period. Given this is the case it makes no sense to use all of the blocks in a location to decide on the active locations. The use of SCOPE_LEVELS_ACTIVE_LOCATION_CALCS allows MineSched to only use a portion of the blocks of a location to determine which locations would be best to select as active locations when meeting defined targets. The scope levels here work the same way as scope levels in the target parameters. Setting a value of one (1) for this parameter will mean that only the first available blocks in a location will be used in the calculations to determine the best active locations to meet the defined targets.
Page 39 of 40
Where to Next?
SCOPE_LEVELS_ACTIVE_LOCATION_CALCS
Where to Next?
This concludes this tutorial. In this tutorial we have explored Adding Quality Targets to Stockpiles Adding Quality Targets to Processes Blending From Stockpiles Material Ratio Targets Target Parameters Scheduling Parameters related to targeting The data for this tutorial will be used for the next tutorial in this series. In the next tutorial we will explore the use of fill locations and the various parameters and mining methods used in MineSched to turn a target schedule into a practical mining schedule. Some further exploration of outputs will also be looked at including end of period surfaces.
Page 40 of 40