Skip to content
Snippets Groups Projects
Commit d84721a4 authored by Amira Abdel-Rahman's avatar Amira Abdel-Rahman
Browse files

integrated simulation

parent 818a4faf
Branches
No related tags found
No related merge requests found
Pipeline #5333 passed
......@@ -19,69 +19,197 @@ initEditor();// todo enclose into class
// assembler.run();
/////////////simulation////////////////////
/////////////assmebly////////////////////
var assembler= new Assembler(three,GLOBALS,1,50,[new THREE.Vector3(0,0,0)],[new THREE.Vector3(GLOBALS.gridSize/2.0*GLOBALS.voxelSpacing,0,0)]);
assembler.run();
// old simulation stuff
// var setup;
// $.getJSON("./simulation/json/setup.json", function(json) {
// setup=json.setup;
// setup.viz.colorMaps=[coolwarm,YlGnBu, winter ,jet];
/////////////simulation////////////////////
///new simulation stuff
var sim; //todo change location
var setup=JSON.parse(JSON.stringify(setupEmpty));
// var ex=gui.add(globalSetup, 'exageration', 0, 10e4).listen();
// var sp=gui.add(globalSetup, 'speed', 0, 5).listen();
// var sp=gui.add(globalSetup, 'updateStress').listen();
// });
var static=true;
// var setup={//empty
// nodes: [
// ],
// edges: [
// ],
var latticeSize=10;
var voxelSize=5;
var globalSetup={
exageration:10e10,
speed:3.0,
updateStress:false
// //material properties - AISI 1095 Carbon Steel (Spring Steel)
// ndofs : 3*6,
};
var material,supports,loads;
// animation : {
// showDisplacement : true,
// exageration : 2000,
// speed:3.0
setup.voxelSize=voxelSize;
setup.gridSize=GLOBALS.gridSize
// },
// viz : {
document.addEventListener('runNode', function (e) {
solveParallel(10);
}, false);
// minStress:-500,
// maxStress: 500,
// colorMaps:[coolwarm,YlGnBu, winter ,jet],
// colorMap:0,
document.addEventListener('addNode', function (e) {
resetMetavoxels(e);
}, false);
// },
// solve: solveFea,
// bar:false
document.addEventListener('removeNode', function (e) {
resetMetavoxels(e);
}, false);
// };
// var node=true;
// // init();
// // initRhino3dm(1,10,createVoxelnotRhino,true,true);
// // play ();
function resetMetavoxels(e){
setup=sim.reset();
//get present voxels
var present=[];
console.log(GLOBALS.timeline)
GLOBALS.timeline.forEach(step => {
// // drawStructure();
// // colorEdges();
// // animate();
// var size=5;
document.addEventListener('runNode', function (e) {
// var tgt=cy.$id(e.detail.id);
// runNode(tgt); //local run node //TODO CHANGE ADD CLOSURE
// console.log(GLOBALS.occupancy);
// console.log(GLOBALS.timeline[0]);
// simulate(size,GLOBALS.timeline,createVoxelnotRhino );
// init();
// drawStructure();
// colorEdges();
// animate();
if(step[0].addRemove){
present.push(step[0])
} else {
}, false);
for (var i=present.length-1; i>=0; i--) {
var e= present[i];
if ( (e.addRemove && e.x==step[0].x&&e.z==step[0].z &&e.y==step[0].y)) {
present.splice(i, 1);
break; //<-- Uncomment if only the first term has to be removed
}
}
}
});
present.forEach(step => {
var latticeCoordinates=new THREE.Vector3(step.x,step.z,step.y);
var pos= latticeCoordinates.clone().multiplyScalar(voxelSize)
createVoxel(setup,voxelSize,pos,material.area,material.density,material.stiffness);
});
restrainFromBox(setup,supports);
loadFromBox(setup,loads);
sim.update(setup);
}
rhino3dm().then(async m => {
console.log('Loaded rhino3dm.');
_rhino3dm = m; // global
material={
area:1.0,
density:0.028,
stiffness:10000000
};
var material2={
area:1.0,
density:0.028,
stiffness:1000000
};
setup.hierarical=false;
setup.voxelSize=voxelSize;
const position=new THREE.Vector3(0,0,0);
const position2=new THREE.Vector3(voxelSize*2,0,0);
///
//try bounding box conditions
// var support=new _rhino3dm.BoundingBox([-voxelSize/2+position.x,-voxelSize/2+position.y,-voxelSize/2+position.z], [voxelSize/2+position.x,voxelSize/2+position.y,voxelSize/2+position.z]);
var support=new _rhino3dm.BoundingBox([-voxelSize/2,-voxelSize/2,-voxelSize/2], [voxelSize/2+voxelSize*GLOBALS.gridSize,-voxelSize/4,voxelSize/2+voxelSize*GLOBALS.gridSize]);
// var temp=voxelSize*latticeSize-voxelSize;
// var load=new _rhino3dm.BoundingBox([-voxelSize/2+position.x,-voxelSize/2+position.y,0-voxelSize/2+position.z], [voxelSize/2+position.x,voxelSize/2+position.y,temp+voxelSize/2+position.z]);
var load=new _rhino3dm.BoundingBox([-voxelSize/2,-voxelSize/2,-voxelSize/2], [voxelSize/2+voxelSize*GLOBALS.gridSize,voxelSize/2+voxelSize*GLOBALS.gridSize,voxelSize/2+voxelSize*GLOBALS.gridSize]);
// var temp1=voxelSize*latticeSize-3*voxelSize;
// var matB=new _rhino3dm.BoundingBox([-voxelSize/2+position2.x,-voxelSize/2+position2.y,temp1-voxelSize/2+position2.z], [voxelSize/2+position2.x,voxelSize/2+position2.y,temp]);
var dof=[true,true,true,true,true,true];
supports=[[support,dof]];
loads=[[load,{x:0,y:-100,z:0}]];
// var diffMaterialBox=[[matB,material2]];
///
// lateralLoadSetup(setup,position,latticeSize,voxelSize,createVoxel,supports,loads,material);
// changeMaterialFromBox(setup,diffMaterialBox);
// var latticeCoordinates=new THREE.Vector3(0,0,0);
// var latticeCoordinates1=new THREE.Vector3(1,0,0);
// var pos= latticeCoordinates.clone().multiplyScalar(voxelSize).add(position);
// var pos1= latticeCoordinates1.clone().multiplyScalar(voxelSize).add(position);
// createVoxel(setup,voxelSize,pos,material.area,material.density,material.stiffness);
// createVoxel(setup,voxelSize,pos1,material.area,material.density,material.stiffness);
// restrainFromBox(setup,supports);
setup.viz.colorMaps=[YlGnBu,coolwarm, winter ,jet];
setup.viz.minStress=10e6;
setup.viz.maxStress=-10e6;
setup.viz.exageration=globalSetup.exageration;
setup.solve=solveParallel;
setup.numTimeSteps=100;
// setup.supports=supports;
// setup.loads=loads;
sim= new threejs1(setup,"webgl1","graph",static);
sim.init();
// three.drawConstraintBoundingBoxes([support],[load]);
// gui.add(three.setup,"numTimeSteps", 0, 500).listen();
// gui.add(three.setup,"solve");
// document.getElementById("footer2").innerHTML = "Press solve for structure simulation.";
// more stuff
});
function solveParallel(numTimeSteps){
// document.getElementById("footer2").innerHTML = "Running...";
/////////////////////////////////////////////////////
var dt=0.0251646; //?? todo change to recommended step
var dt=0.01; //?? todo change to recommended step
setTimeout(function() {
simulateParallel( setup,numTimeSteps,dt,static,2);
}, 1);
// var dt=0.0251646; //?? todo change to recommended step
// simulateParallel(setup1,numTimeSteps,dt);
///////////////////////////////////////
// updateColors();
// sim.animate();
// three1.animate();
/////////////////////
}
......@@ -96,11 +96,11 @@ body,html{width:100%;height:100%;padding:0;margin:0;}
}
#webgl1{
top:100;
top:var(--top);
bottom: var(--bottom);
overflow-y: hidden;
font-family: var(--font);
color: var(--color2);
color: var(--color1);
}
#graph{
......
......@@ -34,7 +34,7 @@
<div id="simulation">
<div id="threejs1">
<div class="header1">
<div class="header2">
<i> Simulation </i>
</div>
<div class="dragbar2"></div>
......@@ -131,36 +131,41 @@
<!-- simulation stuff -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<!-- <script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script> -->
<script src="./rhino3dm.js"></script>
<!-- <script async type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script>
<script async type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/compute.rhino3d.js"></script> -->
<script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script>
<script type="text/javascript" src="./metavoxels/01_Code/191115_NodeJsJulia/demos/rhino3dm.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script>
<!-- simulation -->
<!-- <script src="./simulation/lib/stats.js"></script>
<script src="./simulation/lib/SVGRenderer.js"></script>
<script src="./simulation/lib/js-colormaps.js"></script>
<script src="./simulation/lib/LineSegments2.js"></script>
<script src="./simulation/lib/LineSegmentsGeometry.js"></script>
<script src="./simulation/lib/Line2.js"></script>
<script src="./simulation/lib/LineMaterial.js"></script>
<script src="./simulation/lib/LineGeometry.js"></script>
<script src="./simulation/lib/GeometryUtils.js"></script>
<script src="./simulation/fea/beamFea.js"></script>
<script src="./simulation/visualization/geometry.js"></script>
<script src="./simulation/visualization/utils.js"></script>
<script src="./simulation/visualization/main.js"></script> -->
<script src="./metavoxels/01_Code/191115_NodeJsJulia/lib/stats.js"></script>
<script src="./metavoxels/01_Code/191115_NodeJsJulia/lib/SVGRenderer.js"></script>
<script src="./metavoxels/01_Code/191115_NodeJsJulia/lib/js-colormaps.js"></script>
<script src="./metavoxels/01_Code/191115_NodeJsJulia/lib/LineSegments2.js"></script>
<script src="./metavoxels/01_Code/191115_NodeJsJulia/lib/LineSegmentsGeometry.js"></script>
<script src="./metavoxels/01_Code/191115_NodeJsJulia/lib/Line2.js"></script>
<script src="./metavoxels/01_Code/191115_NodeJsJulia/lib/LineMaterial.js"></script>
<script src="./metavoxels/01_Code/191115_NodeJsJulia/lib/LineGeometry.js"></script>
<script src="./metavoxels/01_Code/191115_NodeJsJulia/lib/GeometryUtils.js"></script>
<!-- <script src="./metavoxels/01_Code/191115_NodeJsJulia/fea/beamFea.js"></script> -->
<!-- <script src="./simulation/visualization/geometry.js"></script> -->
<script src="./metavoxels/01_Code/191115_NodeJsJulia/visualization/utils.js"></script>
<script src="./metavoxels/01_Code/191115_NodeJsJulia/visualization/geometry.js"></script>
<script src="./metavoxels/01_Code/191115_NodeJsJulia/visualization/main.js"></script>
<script src="./metavoxels/01_Code/191115_NodeJsJulia/fea/parallelFea.js"></script>
<!-- assembler control -->
<script src="./assembly/assemblerControl/utils.js" type="text/javascript"></script>
<!-- <script src="./assembly/assemblerControl/utils.js" type="text/javascript"></script>
<script src="./assembly/assemblerControl/setup.js" type="text/javascript"></script>
<script src="./assembly/assemblerControl/processing.js" type="text/javascript"></script>
<script src="./assembly/assemblerControl/serialMonitor.js" type="text/javascript"></script>
<script type="text/javascript" src="./assembly/assemblerControl/bootstrap-multiselect.js"></script>
<script type="text/javascript" src="./assembly/assemblerControl/bootstrap-multiselect.js"></script> -->
<!-- code -->
......
Subproject commit 5d349cccfa3df367a5f84228dd07044d4eece9b0
Subproject commit b2033373c07ec89f2d77ba88702f244c2ca4966b
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment