/* * $Id: hydram.h,v 1.1.1.1 2005/09/18 22:05:49 dhmunro Exp $ * declare workers to convert hydra bnd specs into HX_boundary arrays */ /* Copyright (c) 2005, The Regents of the University of California. * All rights reserved. * This file is part of yorick (http://yorick.sourceforge.net). * Read the accompanying LICENSE file for details. */ #ifndef HYDRAM_H #define HYDRAM_H /* ------------------------------------------------------------------------ */ /* on input: * blo[b][0] - unused * blo[b][1:3] - [ni, nj, nk] for this block * on output: * blo[b][0] - global offset to start of this block * blo[b][1] - stride for j in this block * blo[b][2] - stride for k in this block * blo[b][3] - total number of nodal points in this block * return value: * largest ni*nj, nj*nk, or nk*ni in the entire mesh */ extern long hydra_blks(long nblks, long (*blo)[4]); /* on input: * ibnd - if <0 the mark to place in the bound array * scratch - length is return from hydra_blks * blos[4] - returned from hydra_blks for s block * blor[4] - returned from hydra_blks for r block * bnds[4] - boundary description for s block * bndr[4] - boundary description for r block * bnd[0] - pn (+- 1 2 3) for this boundary * bnd[1] - jp (hydra in-memory 2nd dim stride) for this boundary * bnd[2] - kp (hydra in-memory 3rd dim stride) for this boundary * n - number of nodes in ndxr, ndxs lists * ndxs[n] - hydra in-memory indices of nodes in s block * ndxr[n] - hydra in-memory indices of corresponding nodes in r block * may be NULL to set bc instead of bnd * mbnds - if ndxr!=0, mbnds[ibnd] is the first blkbnd for this bnd * rblock - if ndxr!=0, the r mesh block * on output: * bound[i][3] - set to ibnd on for all faces specified in ndxs[] * return value: * ibnd for next call to hydra_bnd, or 0 if ibnd<0 on input * <0 indicates failure (illegal or inconsistent input arrays) */ extern long hydra_bnd(long ibnd, long (*bound)[3], long *scratch, long *blos, long *blor, long *bnds, long *bndr, long n, long *ndxs, long *ndxr, HX_blkbnd *mbnds, long rblock); /* on input: * ibnd - if <0 the mark to place in the bound array * blo[4] - returned from hydra_blks for this block * bnd[4] - boundary description for this block * bnd[0] - pn (+- 1 2 3) for this boundary * bnd[1] - jp (hydra in-memory 2nd dim stride) for this boundary * bnd[2] - kp (hydra in-memory 3rd dim stride) for this boundary * n - number of nodes in ndxr, ndxs lists * ndx[n] - hydra in-memory indices of nodes in s block * on output: * tbound[i][3] - set to ibnd on for all nodes specified in ndxs[] * return value: * 0-origin index along pn direction for this bc * <0 indicates failure (illegal or inconsistent input arrays) */ extern long hydra_mrk(int ibnd, long (*tbound)[3], long *blo, long *bnd, long n, long *ndx); /* on input: * tbound[i][3] - set to ibnd on for all nodes in block * blo[4] - returned from hydra_blks for this block * n - number of bcs in tcheck * tcheck[2*n] - tells which faces in tbound to scan: * tcheck[0] - 1, 2, 3 for i, j, k, 0 means skip entry * tcheck[1] - i j or k index value * on output: * bound[i][3] - set to ibnd on for all faces implied by tbound * return value: * 0-origin start index * <0 indicates no start cells */ extern long hydra_adj(long (*bound)[3], long (*tbound)[3], long *blo, long n, long *tcheck); /* ------------------------------------------------------------------------ */ #endif