Difference between revisions of "SCHISM FAQ"

From ccrmwiki
Jump to: navigation, search
Line 15: Line 15:
  
 
See [[Debugging after a run crashes]].
 
See [[Debugging after a run crashes]].
 
==I'd like to add some passive tracer transport to SCHISM. How can I interface my own code to it?==
 
There are 3 interface points in the serial version; you can find them by searching for "user-defined tracer part". (1) In module global, define the total # of tracers you have in ntracers; (2) Define your own initial condition for each tracer at prism centers; (3) Define 3 arrays: source/sink (bdy_frc), surface (flx_sf) and bottom (flx_bt) b.c. Also don't forget to add the output flags, transport method (upwind or TVD) and horizontal b.c. etc in param.in. The actual call looks like: do_transport_tvd(1,up_tvd,tvd_mid2,flimiter2,ntracers). Consult the source code inline comments for more details.
 
  
 
==How to impose river discharge if the depth is negative there?==
 
==How to impose river discharge if the depth is negative there?==

Revision as of 10:02, 12 January 2015


My results show platform/compiler/CPU dependency

Due to some intricate differences between different compilers/platforms some minor differences in results are expected. Bit-by-bit match of results using different numbers of CPUs is impossible also. But the differences should be small and should stablize over time iteration.

Run crashed with a fort.11 error message "QUICKSEARCH: no intersecting edge...."

First you need to check the results before the crash (e.g. surface velocity) to see if anything is outrageously wrong. If the results look reasonable, this may be related to the version of SCHISM you are using; contact the developers for more info.

How to do a tidal simulation with SCHISM?

The simplest way is to use SCHISM 2D. If you have to use SCHISM 3D, make sure the bottom boundary layer is reasonably resolved.

My run crashed; how can I find out why?

See Debugging after a run crashes.

How to impose river discharge if the depth is negative there?

In many estuaries the depths (with reference to MSL) are often negative. In SCHISM, the total depth (i.e., depth + elevation) must be positive at all times on open boundary nodes. A simple workaround is to artificially set a positive depth (say, 5m) along a small segment near the river boundaries (or add a small segment of "channel" with 5m beyond the boundary; usually ~100m will do). The depth can change sharply from 5m to negative values. Because of the imposed discharge, the inundation algorithm will quickly push water downstream and set up a surface slope automatically.

An alternative is to use an initial condition for elevation (elev.ic).

I have large velocity at open boundary

In hydrostatic models the incoming velocity should be specified at open boundary. Over-specification i.e. elevation+velocity b.c. there usually avoids the problem.

In reality it's often difficult to find velocity b.c., and so a useful way is to use 1-way nesting approach. Run SCHISM (in 3D or 2D, barotropic or baroclinic modes; obviously 2D model is the cheapest) for a larger or same grid, with indvel=1, and then use the scripts in Utility/OneWayNestScripts/ (in the source code bundle) to generate uv3D.th (follow the instructions in README) together with ifltype=4 in bctides.in. This approach is especially useful when the boundary is away from region of interest.