##============================================================================== # Creation of a two-dimensional finite difference grid ##============================================================================== setup.grid.2D <- function(x.grid=NULL, y.grid=NULL) { ## check input gn <- names(x.grid) if (! "x.up" %in% gn) stop("error in setup.2Dgrid: x.grid should be a list that contains x.up") if (! "x.down" %in% gn) stop("error in setup.2Dgrid: x.grid should be a list that contains x.down") if (! "x.mid" %in% gn) stop("error in setup.2Dgrid: x.grid should be a list that contains x.mid") if (! "x.int" %in% gn) stop("error in setup.2Dgrid: x.grid should be a list that contains x.int") if (! "dx" %in% gn) stop("error in setup.2Dgrid: x.grid should be a list that contains dx") if (! "dx.aux" %in% gn) stop("error in setup.2Dgrid: x.grid should be a list that contains dx.aux") if (! "N" %in% gn) stop("error in setup.2Dgrid: x.grid should be a list that contains N") gn <- names(y.grid) if (! "x.up" %in% gn) stop("error in setup.2Dgrid: y.grid should be a list that contains x.up") if (! "x.down" %in% gn) stop("error in setup.2Dgrid: y.grid should be a list that contains x.down") if (! "x.mid" %in% gn) stop("error in setup.2Dgrid: y.grid should be a list that contains x.mid") if (! "x.int" %in% gn) stop("error in setup.2Dgrid: y.grid should be a list that contains x.int") if (! "dx" %in% gn) stop("error in setup.2Dgrid: y.grid should be a list that contains dx") if (! "dx.aux" %in% gn) stop("error in setup.2Dgrid: y.grid should be a list that contains dx.aux") if (! "N" %in% gn) stop("error in setup.2Dgrid: y.grid should be a list that contains N") ## Packaging of results Res <- list(x.up = x.grid$x.up, x.down = x.grid$x.down, x.mid = x.grid$x.mid, # position of centre of the grid cells, vector of length N x.int = x.grid$x.int, # position grid cell interfaces , vector of length N+1 dx = x.grid$dx, # thickness of grid cells , vector length N dx.aux = x.grid$dx.aux, # auxiliary vector with distances between centre of adjacent cells, first and last: half of cell size, vector of length N+1 x.N = x.grid$N, # number of vertical grid layers y.up = y.grid$x.up, y.down = y.grid$x.down, y.mid = y.grid$x.mid, # position of centre of the grid cells, vector of length N y.int = y.grid$x.int, # position grid cell interfaces , vector of length N+1 dy = y.grid$dx, # thickness of grid cells , vector length N dy.aux = y.grid$dx.aux, # auxiliary vector with distances between centre of adjacent cells, first and last: half of cell size, vector of length N+1 y.N = y.grid$N) # number of horizontal grid layers class(Res) <- "grid.2D" return(Res) }