| Message/Author |
|
|
|
|
OK, its been a while since a new version came out, but after a flurry of easter/early summer code development its here. http://www.coulthard.org.uk/downloads/visualcaesar.htm Tomorrow I shall post up some notes on the main changes. If you want to look at the source code 6.0i.cs is the latest version I am working on. Tom |
|
|
|
|
Notes on CAESAR version 6.0 There area no massive changes in the model since the last release, but there are quite a few subtle changes under the hood so to speak. Notably, a couple of small errors were found in the erosion and deposition functions and these have been tidied up. Much work has also been spent on increasing the speed of operation. This has largely involved using a profiler to examine which parts of the code are being called to much and increasing efficiency there. I estimate the model may be up to 100% faster for reach based simulations and certainly a good percentage quicker in catchment mode. I have also experimented with using threading to make use of multicore processors - and this focused on the erode and depositoin funtions (which typically consume up to 50% of run time). But, in order to maintain the integrity of the code (to prevent simultaneous variable update) I had to lock certain variables, and whilst I could get two processors being used at once, the overhead meant the model ran at the same speed/slower. There is scope for development on this, which would mean re-arranging more of the code - but I stopped short of this. The main changes have been in the integration and testing of the lateral erosion function. This uses the edge counting method to determine curvature (see Coulthard & Van de Wiel 2006) and then this is used in a simple erosion rule to move sediment from the banks into the channel. The hard part has been determining how sediment is moved across the channel - this is required to allow point bars to build up etc.. Firstly, the amount sediment eroded from a cell is determined - how much is picked up. Then we need to calculate how much of this sediment should be moved in the main direction of flow and how much should be moved laterally... This is carried out by working out the radius of curvature of every wet cell (this is carried out by smoothing the absolute - positive - value of the edge algorithm across the cells) which effectivly works out how 'bendy' a cell within the channel is. Depending on the curvature (bendyness) of the channel up to 25% of the sediment is then moved across the channel from outside bend to inside. The direction (from outside to inside) is determined by smoothing the edge values across the channel (inside bends have -ve values outside +ve). The remaining 75% or more is then moved according to the discharge from that cell to others. This seems to work really well - and you can set this to operate by checking the lateral erosion check box. I have tested it in reach AND catchment mode. Importantly it is a very computationally consumptive function so is called only every 10 iterations. More on what the values in the lateral tab mean later on in this document. There are also now three different methods for calculating the shear stress and also how sediment is moved. On the numerical tab, bedslope method one is the 'classic' or original way. Shear stress is calculated (using depth * slope * grav * roe) and used to erode sediment in every direction where there is a positive bed slope. Bedslope method two calculates the shear stress according to the MAX slope * depth etc.. in one direction only (the max slope direction). Then material is eroded according to that shear stress and distributed according to the bedslope (in more than one direction if necessary). The third method, uses the discharge to calculate a velocity to calculate the shear stress (tau) also accounting for the drag co-efficient. This is my favourite way to calculate the shear stress, as it is not so heavily influenced by very local changes in bedslope - that can effect methods 1 and 2 quite severely. THere is also a check on the maximum velocity allowed here. CAESAR does not model supercritical flow (yet - a weir eqtn could be used) so it can lead to some over high velocities. This can result in too much local erosion. To prevent this, the velocity (used to calc shear stress) can be limited - the default is 5 (and in simualtions rarely if ever exceeded) - though reducing this to say 2 can significantly speed up the model - though possibly at the expense of realism. Altogether using velocity to calc shear stress does allow features like scour pools to develop - and I may have seen pool-riffle structures appear (and disappear) during flood events - but I could have been imagining it! Calculating the discharge passing through each cell was not an easy task - and thats something for another post! But is pretty much the same as in the past version. I shall go through changes on a tab by tab basis. Files. This is pretty much the same as the last version - but I have moved some of the boxes/tabs around so they are more logically grouped. Lateral erosion. This is trimmed down significantly. Check boxes for whether you have lateral or not. Note: lateral only really works if you calculate Tau using velocity (numerical tab). Otherwise if you use bedslope, when the model builds up a point bar (for example) this will raise the local slope and the point bar will disappear.. Lateral erosion rate is a constant used in the formulae described lower down the page. Numbner of passes for edge smoothing filter is how many times a smoothing filter is passed over the edge (bank) cells when calculating the radius of curvature. Increasing this results in smooother bends, decreasing leads to more sinuous bends. Note that if you increase this much above 100 you will also reduce the actual value used to calculate the radius of curvature (because you are smoothing it) so the rate of lateral erosion will also reduce (can be compensated by increasing the lateral erosion rate). The two equations/methods below determine how much material is eroded from the outside edge of bends. THe methods are the same, except method 2 uses 1/radius of curvature - which is calculated from the edge value. I have no comment as to which is better, worse or more realisitic. I use method 1 fine. This is then multiplied by the near bank BED shear stress, time step, and the lateral erosion rate. I would try lateral erosion rates of 0.0001 to start with... I have not calibrated this parameter yet - but increasing the lat erosion rate does lead to more rapidly eroding banks and if high enough braiding. Numerical. Not too many changes here, except things have been moved around a little. Important additions include a new tabs for bedslope method 2 (see description above) and also a text box to enter the max velocity used to calculate tau (see description above). There is also a box below this (which was on the lateral tab) which allows you to change the amount of sediment recirculated (when operating in reach mode) when the recirculate check box is checked during a model run. In reality, the model cannot put 100% of the sediment eroded from the base back in the top (thats another post too!) but it does allow re-circulation. All the other tabs are pretty much the same. (I would ignore the dune model tab for now - thats what I'm playing with at the moment!) Other useful additions. There is a pause and resume button and a check box so you can see what values you had set in the tabs when the model is running (though you cannot actually change most of them whilst its running!) I've also been using the google earth option to output graphics instead of the avi writer option. If you check the google earth output and input a date and timestep for output, it will save a .png graphics file of the output in a folder called animation. I then use programs such as virtualdub to easily stitch the pictures together to make a movie. Katharine Welsh (Liverpool) has made some great additions to the slope process component, and Arnaud Temme (Wageningen) has updated the google earth part so it works anywhere in the world - but I have not updated version 6 with these yet, but I fully intend to. Right thats about all for now, any questions please post below! |
|
|
|
|
OK, found an error in the erode() function. Needs extra conditions to the if statement to stop it trying to erode cells on the top and bottom edge of the DEM. Changed in 6.0j.cs - which I shall post up later when I've figured out the ftp from home! Tom |
|
|
|
|
Also - if its taking much longer to run than 5.9, try changing the 'max vel to calc tau' value in the numerical tab to 2. This was hard coded in 5.9. This will speed things up considerably, as it will restrict the velocity used to calc the shear stress. Of course this may not be correct - or represent the real world (which is why it defaults to 5) but will nether the less speed things up. Tom |
|
|
| Back to top |
|