add tsection type interfaces
This interface combines grids which do not have clean interfaces. The type of interface has not been tested or verified here.
This commit is contained in:
48
multigrid/examples/tsection.json
Normal file
48
multigrid/examples/tsection.json
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"grids": {
|
||||
"default": {
|
||||
"operators": {
|
||||
"xi": "upwind9",
|
||||
"eta": "upwind9"
|
||||
}
|
||||
},
|
||||
"grid0": {
|
||||
"x": "linspace:-5:5:101",
|
||||
"y": "linspace:0:5:50",
|
||||
"boundary_conditions": {
|
||||
"south": "multi:grid1(0,61):grid2(0,41)",
|
||||
"north": "vortex",
|
||||
"east": "vortex",
|
||||
"west": "vortex"
|
||||
}
|
||||
},
|
||||
"grid1": {
|
||||
"x": "linspace:-5:1:61",
|
||||
"y": "linspace:-5:0:50",
|
||||
"boundary_conditions": {
|
||||
"south": "vortex",
|
||||
"north": "multi:grid0(0,61)",
|
||||
"east": "grid2",
|
||||
"west": "vortex"
|
||||
}
|
||||
},
|
||||
"grid2": {
|
||||
"x": "linspace:1:5:41",
|
||||
"y": "linspace:-5:0:50",
|
||||
"boundary_conditions": {
|
||||
"south": "vortex",
|
||||
"north": "multi:grid0(60,101)",
|
||||
"east": "vortex",
|
||||
"west": "grid1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"integration_time": 2.0,
|
||||
"vortex": {
|
||||
"x0": 0.0,
|
||||
"y0": 0.0,
|
||||
"mach": 0.5,
|
||||
"rstar": 0.5,
|
||||
"eps": 1.0
|
||||
}
|
||||
}
|
||||
@@ -143,6 +143,27 @@ pub fn json_to_grids(
|
||||
names.iter().position(|other| other == grid).unwrap(),
|
||||
int_op,
|
||||
)
|
||||
} else if let Some(multigrid) = dir.strip_prefix("multi:") {
|
||||
let grids = multigrid.split(":");
|
||||
sbp::euler::BoundaryCharacteristic::MultiGrid(
|
||||
grids
|
||||
.map(|g| {
|
||||
let rparen = g.find('(').unwrap();
|
||||
let gridname = &g[..rparen];
|
||||
|
||||
let gridnumber =
|
||||
names.iter().position(|other| other == gridname).unwrap();
|
||||
|
||||
let paren = &g[rparen + 1..];
|
||||
let paren = &paren[..paren.len() - 1];
|
||||
let mut pareni = paren.split(',');
|
||||
let start = pareni.next().unwrap().parse::<usize>().unwrap();
|
||||
let end = pareni.next().unwrap().parse::<usize>().unwrap();
|
||||
|
||||
(gridnumber, start, end)
|
||||
})
|
||||
.collect::<Vec<_>>(),
|
||||
)
|
||||
} else {
|
||||
sbp::euler::BoundaryCharacteristic::Grid(
|
||||
names.iter().position(|other| other == dir).unwrap(),
|
||||
|
||||
Reference in New Issue
Block a user