Difference between revisions of "SCHISM FAQ"

From ccrmwiki
Jump to: navigation, search
(Created page with " ==My results show platform/compiler/CPU dependency== Due to some intricate differences between different compilers/platforms some minor differences in results are expected. ...")
 
Line 17: Line 17:
 
See [[Debugging after a run crashes]].
 
See [[Debugging after a run crashes]].
  
<!--==I'd like to add some passive tracer transport to SELFE. How can I interface my own code to it?==
+
==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?==
==How do I set up sflux/ using NARR (North America only) files in the Utility Library for atmospheric model (nws=2)?==
+
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.
==How do I prepare my own netcdf files for atmospheric model (nws=2)?==
+
 
 +
An alternative is to use an initial condition for elevation (elev.ic).
 +
 
 
==I have large velocity at open boundary==
 
==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.

Revision as of 21:12, 2 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.

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?

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.