remove jni assignments
All checks were successful
studiorailgun/fluid-sim/pipeline/head This commit looks good

This commit is contained in:
unknown 2024-03-10 20:34:11 -04:00
parent 2bd92fb719
commit 3e591442c9
3 changed files with 6 additions and 244 deletions

View File

@ -23,7 +23,6 @@
* A chunk
*/
typedef struct {
jobject jchunk;
float * d[27];
float * d0[27];
float * u[27];
@ -32,14 +31,6 @@ typedef struct {
float * u0[27];
float * v0[27];
float * w0[27];
jobjectArray jd;
jobjectArray jd0;
jobjectArray ju;
jobjectArray jv;
jobjectArray jw;
jobjectArray ju0;
jobjectArray jv0;
jobjectArray jw0;
int chunkMask;
} Chunk;
@ -122,15 +113,6 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
u0 = (*env)->GetObjectField(env,chunkJRaw,u0JId);
v0 = (*env)->GetObjectField(env,chunkJRaw,v0JId);
w0 = (*env)->GetObjectField(env,chunkJRaw,w0JId);
newChunk->jd = jd;
newChunk->jd0 = jd0;
newChunk->ju = u;
newChunk->jv = v;
newChunk->jw = w;
newChunk->ju0 = u0;
newChunk->jv0 = v0;
newChunk->jw0 = w0;
newChunk->jchunk = chunkJRaw;
newChunk->chunkMask = chunkMask;
for(int j = 0; j < 27; j++){
if((chunkMask & CHUNK_INDEX_ARR[j]) > 0){
@ -161,27 +143,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
//solve chunk mask
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
//old assignments
// chunkJRaw = getChunk(i);
// chunkMask = (*env)->GetIntField(env,chunkJRaw,chunkmaskJId);
// d = getBuffArr(dJId);
// d0 = getBuffArr(d0JId);
// u = getBuffArr(uJId);
// v = getBuffArr(vJId);
// w = getBuffArr(wJId);
// u0 = getBuffArr(u0JId);
// v0 = getBuffArr(v0JId);
// w0 = getBuffArr(w0JId);
Java_electrosphere_FluidSim_addSourceToVectors(
DIM,
chunkMask,
@ -201,7 +163,6 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
//swap vector fields
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
float * tmpArr;
@ -224,16 +185,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
//copy neighbors
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
copyNeighborsRaw(DIM,chunkMask,0,1,currentChunk->u);
copyNeighborsRaw(DIM,chunkMask,0,2,currentChunk->v);
copyNeighborsRaw(DIM,chunkMask,0,3,currentChunk->w);
@ -248,31 +200,13 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
//solve vector diffusion
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_solveVectorDiffuse(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
}
//update array for vectors
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
@ -287,16 +221,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
//update array for vectors
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
@ -311,31 +236,13 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
//setup projection
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_setupProjection(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
}
//update array for vectors
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u0);
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v0);
copyNeighborsRaw(DIM,chunkMask,0,1,currentChunk->u0);
@ -349,30 +256,12 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
for(int l = 0; l < LINEARSOLVERTIMES; l++){
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_solveProjection(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
}
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u0);
copyNeighborsRaw(DIM,chunkMask,0,1,currentChunk->u0);
}
@ -382,32 +271,14 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
//Finalize projection
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_finalizeProjection(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
}
//set boundaries a final time for u,v,w
//...
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
@ -427,7 +298,6 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
//swap vector fields
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
float * tmpArr;
@ -450,16 +320,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
//copy neighbors
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
copyNeighborsRaw(DIM,chunkMask,0,1,currentChunk->u);
copyNeighborsRaw(DIM,chunkMask,0,2,currentChunk->v);
copyNeighborsRaw(DIM,chunkMask,0,3,currentChunk->w);
@ -473,16 +334,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
//update border arrs
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
@ -499,31 +351,13 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
//advect
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_advectVectors(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
}
//update neighbor arr
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
@ -537,16 +371,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
//update array for vectors
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
@ -561,31 +386,13 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
//setup projection
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_setupProjection(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
}
//update array for vectors
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u0);
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v0);
copyNeighborsRaw(DIM,chunkMask,0,1,currentChunk->u0);
@ -599,30 +406,12 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
for(int l = 0; l < LINEARSOLVERTIMES; l++){
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_solveProjection(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
}
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u0);
copyNeighborsRaw(DIM,chunkMask,0,1,currentChunk->u0);
}
@ -632,32 +421,14 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
//Finalize projection
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_finalizeProjection(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
}
//set boundaries a final time for u,v,w
//...
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
u0 = currentChunk->ju0;
v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
@ -689,7 +460,6 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
{
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
Java_electrosphere_FluidSim_addDensity(DIM,chunkMask,currentChunk->d,currentChunk->d0,timestep);
}
@ -709,10 +479,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
}
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
jd = currentChunk->jd;
jd0 = currentChunk->jd0;
copyNeighborsRaw(DIM,chunkMask,0,0,currentChunk->d);
copyNeighborsRaw(DIM,chunkMask,0,0,currentChunk->d0);
}
@ -722,16 +489,11 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
for(int l = 0; l < LINEARSOLVERTIMES; l++){
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
u = currentChunk->ju;
v = currentChunk->jv;
w = currentChunk->jw;
Java_electrosphere_FluidSim_solveDiffuseDensity(DIM,chunkMask,currentChunk->d,currentChunk->d0,currentChunk->u,currentChunk->v,currentChunk->w,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
}
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
setBoundsToNeighborsRaw(DIM,chunkMask,0,currentChunk->d);
}
@ -751,7 +513,6 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
}
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
copyNeighborsRaw(DIM,chunkMask,0,0,currentChunk->d);
copyNeighborsRaw(DIM,chunkMask,0,0,currentChunk->d0);
@ -761,7 +522,6 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
{
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
Java_electrosphere_FluidSim_advectDensity(DIM,chunkMask,currentChunk->d,currentChunk->d0,currentChunk->u,currentChunk->v,currentChunk->w,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
}
@ -770,7 +530,6 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
{
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
chunkJRaw = currentChunk->jchunk;
chunkMask = currentChunk->chunkMask;
setBoundsToNeighborsRaw(DIM,chunkMask,0,currentChunk->d);
}

View File

@ -160,6 +160,8 @@ public class FluidSim {
static double lastTime = 0;
public static void simChunks(FluidSim[][][] simArray, int step, float timestep){
// simArray[0][1][2].density0ArrayView[5] = 3.0f;
List<FluidSim> chunksToSim = new LinkedList<FluidSim>();
//
//init data for upcoming frame

View File

@ -22,7 +22,8 @@ public class Main {
public static void main(String args[]){
int dim = 5;
int dim = 3;
int vdim = 2;
int i = 0;
long time = 0;
long lastTime = 0;
@ -36,9 +37,9 @@ public class Main {
Mesh.initShaderProgram();
FluidSim[][][] simArray = initFluidSim(dim,1,dim);
FluidSim[][][] simArray = initFluidSim(dim,vdim,dim);
Mesh[][][] meshArray = initMeshes(dim,1,dim,simArray);
Mesh[][][] meshArray = initMeshes(dim,vdim,dim,simArray);