SEDIMENT SPORESPhotovoltaics_ Harvest sun energy
Electrical Energy
Compressed Air Chamber_ Storage
Electrical energy stored as mechanical energy
SEDIMENT SPORESPhotovoltaics_ Harvest sun energy
Electrical Energy
Compressed Air Chamber_ Storage
Electrical energy stored as mechanical energy
Conduct Pipe
Transmit Electrical PowerAir powered Electrical turbine
Mechanical energy turned into Electrical energy on demand
Energy
Power
Sys
tem
Rat
ed P
ower
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015
500
0
1,000
1,500
2,000
2,500
3,000
Pop
ulat
ion
in M
illio
ns
2010 2015 2020 2025 2030
3
0
6
9
12
15
18
PumpedHydroCompressed
Air
LithiumIon
High Speed Flywheel
Ultra-capacitor
1kW
1 se
c
Dis
char
ge T
Ime
1 m
in1
hr10
hrs
10kW 100kW
System Rated Power
1MW 10MW 100MW 1GW
Superconductingmagnetic
Lead Acid
FlowBatteries
(Zn-Br, VR)
SodiumSulfur
Battery
ID_CMKF83
SEDIMENT SPORES
COMPRESSED AIR: FUTURE OF ENERGY STORAGE
Resource: http://www.gtmresearch.com
Resource: http://www.gainsma.com
Resource: http://www.gtmresearch.com
Resource: http://www.microbelibrary.org/asmonly/details.asp?id=2851&Lang
According to Georges Bataille entropy is, by definition, excess energy; an overproduction. The current world is heavily investing in renewable energy due to new laws, potential carbon taxes, etc., in which energy technological efficiencies will grow exponentially coinciding with Moore’s Law. If people are unable to control this growing energy production, the future will face the same problem we do today, excess energy we call waste and therefore the ability to store energy efficiently is more critical than producing energy itself. Interestingly enough, Abu Dhabi finds itself at the center of this polemic being one of the worlds largest oil suppliers. This mass amount of stored energy has created a rapidly growing city and population that has produced excess tertiary space in its sprawl development. However, these spaces will eventually densify but it is uncertain the future energy that will facilitate such growth knowing that oil wells will inevitably run out. Many nations have been investing in their underground salt mines to store energy in the highly efficient form of compressed air. Why could not Abu Dhabi do the same with their oil wells, augmenting
space devoid of its original use? The project puts in place a similar initiative by using devoid city space and excess materials and matter from city growth to create an energy storage and production land art piece on Site 3. Architecture is another word for system in which entropy is its structural blindness. In this context, waste is a repressed condition of architecture in which the project creates new material structures with waste by looking at systems of nature. The interest of entropy, waste and excess was derived from the context of the site as well as past land artists such as Robert Smithson and conceptual artist Marcel Duchamp. The project addresses the “structural blindness”, as Smithson puts it, of waste in the building process. By using waste as a instrument and a sand calcifying bacteria that feeds on urea, as an architecture, the proposal intends to challenge viewers perception of how space in a rapidly growing city is created and understood. This is not to battle entropy but on the contrary, to embrace it showing its repressed potentials in an urban context.
‘READY MADE’ STORED ENERGY = OIL
Present Abu Dhabi Future Abu Dhabi Expansion
DRY OIL WELL = CHALLENGE FOR ENERGY CREATION NEW ENERGY GENERATION = CHALLENGE TO CREATE NEW ENERGY STORAGE
?
CALCIFICATION (Bacteria Bacillus pasteurii)
Energy Photovoltaics
SITE 3
Sun Chart
ENTROPY REINTERPRETED = ENERGY PRODUCTION AND STORAGE SANDSTONE LANDART
City Growth = Excavated Building Soil
Potential Energy Storage System Comparison
UAE Population Growth
Production of Grid Scale Energy Storage
Masdar City
Madinat Khalifa A
Bain Al Jessrain
Officers City
Mangrove Village
Madinat Khalifa C
Madinat Khalifa B
Mahawi
Mohammed Bin Zayed City
Mussafah Industrial Area
Abu Dhabi International Airport
CITY EXPANSION
Site 3 was selected for this very reason. It is itself, a leftover space that is blocked from view by foliage. Such places are only noticed, or not noticed, once created. That is to say, we only see the dust once it has settled. The site is situated between 3 freeways near the airport and seemed to have the least value of the three sites thus proving the most potential. The forms of the land art piece are derived from the behaviors of its constructors. By creating a program that mimics a sand calcifying bacteria (Bacillus pasteurii) behaviors we are able create emergent forms out of adjacent excavated building sand brought on site. When the city grows, the land art piece grows as well. Placing molds within the piles of sand and adding the bacteria, the forms created by bacteria are shown at multiples scales relating to the human and microbe alike. This complex and organic patterning allows for multiple spatial features and habitats allowing for public viewing as well as solar energy harvesting and storage for thousands of homes.
Compressd Air Chamber
//global variablesimport processing.opengl.*;
PrintWriter output;PeasyCam cam;
int ureaNum = 90;PeasyCam cam;PeasyCam cam;
final int SOIL_X = 2;int ureaNum 90;t ureaNum 90
final int SOIL Y = 2;final int SOIL_X 2;final int SOIL_X 2final int SOIL Z = 2;final int SOIL_Y 2;final int SOIL_Y 2
final int ENV_X = 50;final int SOIL_Z 2;final int SOIL_Z 2final int ENV Y = 50;final int ENV_X 50;final int ENV_X 50final int ENV Z = 50;final int ENV_Y 50;final int ENV_Y 50
Sand mySoil[][][] = new Sand[SOIL_X][SOIL_Y][SOIL_Z];final int ENV_Z 50;final int ENV_Z 50
kWorld world1;PFont font2;
World world1World world1int textState = 0;
PFont font2; Font font2;boolean state;textState 0;textState
//setupvoid setup(){
//setup//setup colorMode(HSB, 100);
void setup(){void setup(){ size(720, 720, P3D);olorMode(HSB, 100);orMode(HSB, 100)
cam = new PeasyCam(this, 300);cam.setMinimumDistance(1);
am new PeasyCam(this, 300);m new PeasyCam(this, 300);m.setMaximumDistance(1000000);
cam.setMinimumDistance(1);cam.setMinimumDistance(1)
//lists world1 = new kWorld();
//lists //lists
//World for (int i = 0; i < 10; i++) {
//World //WorldBacteria(new Bacteria(new kVec
for (int i 0; i < 10; i++) {for (int i 0; i < 10; i++-ENV_X,ENV_X),random(-ENV_Y, ENV_Y),random(-ENV_Z, ENV_Z))
Bacteria(new Bacteria(new kVecBacteria(new Bacteria(new kVec new kVec(random(-1,1),random(-1,1),random(-1,1)), 2, 16));,ENV_X),random( ENV_Y, ENV_Y),random( ENV_Z, ENV_Z))V_Y, ENV_Y),random( ENV_Z, ENV_Z)
}));)
//instantiate urea for (int i = 0; i < ureaNum; i++) {
//instantiate urea //instantiate urea world1.addUrea(new Urea(new kVec(random(-50, 50), random(-50, 50),(random(-50, 50)))));
for (int i 0; i < ureaNum; i++) { for (int i 0; i < ureaNum; i++) }
));)//initialize the Sands
}for(int i=-SOIL X;i<SOIL X;i++){
//initialize the Sands //initialize the Sandsfor(int j=-SOIL Y;j<SOIL Y;j++){
for(int i SOIL_X;i<SOIL_X;i++){for(int i SOIL_X;i<SOIL_X;i++){ for(int k=-SOIL_Z;k<SOIL_Z;k++){
for(int j SOIL_Y;j<SOIL_Y;j++){ for(int j SOIL_Y;j<SOIL_Y;j++){ int spaceX = ENV_X/SOIL_X;
or(int k SOIL_Z;k<SOIL_Z;k++){t k SOIL_Z;k<SOIL_Z;k++)int spaceY = ENV Y/SOIL Y;
int spaceX ENV_X/SOIL_X;nt spaceX ENV_X/SOIL_X; int spaceZ = ENV Z/SOIL Z;
int spaceY ENV_Y/SOIL_Y;int spaceY ENV_Y/SOIL_Y; world1.addSand (new Sand(new kVec (i*spaceX,j*spaceY,k*spaceZ)));
int spaceZ ENV_Z/SOIL_Z; int spaceZ ENV_Z/SOIL_Z; }Z)));)
} }}
} }}
}}}
rtToTxt() {xport.txt");rtToTxt() { rtToTxt() {
ize(); i++) {List.get(i);ize(); i++) {ze(); i++)+ a.pos.z);
List.get(i); ist.get(i); }
z);)
put.flush();put.close();put.flush();put.flush();c-12.vlw");
put.close();ut.close();});)
//drawoid draw(){
//draw//draw
55,255,0);om = 1600;55,255,0);255,255,0);
Spd = 0.02;om 1600;om 160045)*cSpd),
Spd 0.02;Spd 0.020,0, 0,0,-1);45) cSpd),45) cSpd),
*/, 1);1);
orld1.run(); /
d1.render();orld1.run();orld1.run()
});)
yPressed(){key == 'x'){portToTxt();key x ){key x ){
}();)
}*/ } }
d export(){ if(mousePressed)
d export(){d export(){ {d))
textFont(font2); {
on: " + frameCount + ".dxf"); textFont(font2);textFont(font2)
state = true;););
textState = 50; state true;state true
}0;0}}}
void endExport(){))
endRaw();{});)
class kWorld{ ArrayList population;
ArrayList ureaList;rrayList population;rayList population; ArrayList trailList; ArrayList ureaList;ArrayList ureaList;
ArrayList bacList; ArrayList trailList;ArrayList trailList;
ArrayList sandList; ArrayList bacList; ArrayList bacList;
kWorld() { population = new ArrayList();
kWorld() { kWorld() ureaList = new ArrayList();
population new ArrayList();pulation new ArrayList(); trailList = new ArrayList(); ureaList new ArrayList();ureaList new ArrayList();
bacList = new ArrayList(); trailList new ArrayList();trailList new ArrayList();
sandList = new ArrayList(); bacList new ArrayList(); bacList new ArrayList();
}();)
//instant.void run(){ //instant.instant.
for(int i = 0; i < sandList.size(); i++){ void run(){void run(){
Sand att = (Sand) sandList.get(i); for(int i 0; i < sandList.size(); i++){r(int i 0; i < sandList.size(); i++)
att.step(this);d) sandList.get(i);andList.get(i);
//tempSand.updateSand(this); att.step(this); att.step(this);
}is);)
for (int i = 0; i < population.size(); i++) { } }
Bacteria a = (Bacteria) population.get(i); for (int i 0; i < population.size(); i++) { for (int i 0; i < population.size(); i++)
a.step(this);pulation.get(i); ation.get(i);
}s);;
for(int i = 0; i < ureaList.size(); i++){ Urea tempUrea = (Urea) ureaList.get(i);
for(int i 0; i < ureaList.size(); i++){or(int i 0; i < ureaList.size(); i++) //tempUrea.update();
a (Urea) ureaList.get(i);(Urea) ureaList.get(i); //tempUrea.render(); //tempUrea.update();/tempUrea.update();
}r();)
//do stuff with calcification }
/* for(int i = 0; i < trailList.size(); i++){ //do stuff with calcification //do stuff with calcification
Calc tempCalc = (Calc) trailList.get(i); / for(int i 0; i < trailList.size(); i++){/ for(int i 0; i < trailList.size(); i++)
tempCalc.update(); (Calc) trailList.get(i);Calc) trailList.get(i);
//tempCalc.render(); tempCalc.update(); tempCalc.update();
}*/der();r();
for(int i = 0; i < trailList.size(); i++){ } / } /
Calc att = (Calc) trailList.get(i);or(int i 0; i < trailList.size(); i++){nt i 0; i < trailList.size(); i++)
att.update();c) trailList.get(i);ailList.get(i);
//tempCalc.render(); att.update(); att.update();
}r();)
//do stuff with bacteria }
for(int i=0; i< bacList.size(); i++){ //do stuff with bacteria//do stuff with bacteria
Bacteria tempBac = (Bacteria) bacList.get(i); for(int i 0; i< bacList.size(); i++){r(int i 0; i< bacList.size(); i++)
//tempBac.update();(Bacteria) bacList.get(i)cteria) bacList.get(i)
//tempBac.render(); //tempBac.update();/tempBac.update();
}er()()
} }}
//add void addSand(Sand att) {
//add//add sandList.add(att);addSand(Sand att) {nd(Sand att)
}tt)t
void addBacteria (Bacteria a) { } }
population.add(a);acteria (Bacteria a) {(Bacteria a) {
}a);)
void addBac (Bacteria a) { }}
bacList.add(a);Bac (Bacteria a) {c (Bacteria a) {
}a);)
void addUrea(Urea at) { } }
ureaList.add(at);addUrea(Urea at) {ea(Urea at)
}t);)
void addCalc(Calc att) { } }
trailList.add(att); addCalc(Calc att) {ddCalc(Calc att)
}t);)
//remove void killUrea(Urea at){
//remove//remove ureaList.remove(at);void killUrea(Urea at){llUrea(Urea at)
}t);)
void killBac(Bacteria a){ } }
population.remove(a);void killBac(Bacteria a){lBac(Bacteria a)
}a);)
//rendervoid render(){
//rendernderandList.size(); i++) {
void render(){void render(){nd) sandList.get(i); andList.size(); i++) {dList.size(); i++)
att.render();sandList.get(i); dList.get(i);
}r();;
pulation.size(); i++) {a) population.get(i); pulation.size(); i++) {ulation.size(); i++)
a.render();ulation.get(i); tion.get(i);
}r();;
reaList.size(); i++) {rea) ureaList.get(i); reaList.size(); i++) {aList.size(); i++)
at.render();ureaList.get(i); aList.get(i); //at.update();
at.render(); at.render();}
e();)trailList.size(); i++) {
} }Calc) trailList.get(i); trailList.size(); i++) {trailList.size(); i++)
//att.render();c) trailList.get(i); ailList.get(i);
}r();;
} }}
}}}
e.commons.math.*;import peasy.*;mmons.math. ;mmons.math. ;
ns.math.geometry.*;import peasy. ;import peasy. ;
import kGeom.*;import kRender.*;
import kGeom. ;import kGeom. ;
class Bacteria{CANCEL_TRAIL = 0;
class Bacteria{class Bacteria//states
RAIL 0;AIL kVec pos;
//states// kVec vel;kVec pos;kVec pos;kVec acc; kVec vel kV
float maxForce; kVec acc; c
float maxVel;oat maxForce;at maxForce
float closestAttDist; float maxVel; float maxVel
float rangeOfVision;float closestAttDist;float closestAttD
//constructor Bacteria(onstructornstructor
kVec _pos, Bacteria(BkVec vel,
kVec _pos,kVec _posfloat maxVel,
kVec _vel,kVec _vel float _maxForce){
float _maxVel,float _maxVel,
pos = kVec.clone(_pos); vel = kVec.clone(_vel); pos kVec.clone(_pos)pos kVec.clone(_pos)
maxVel = maxVel;l kVec.clone(_vel); ec.clone(_vel);
acc = new kVec(0,0,0); maxVel _maxVel; _maxVel
maxForce = _maxForce;acc e ec(0,0,0);c new kVec(0
}rce;e
void step(kWorld world){ updatePop(world.population);
updateAtt(world.ureaList);pdatePop(world.population);datePop(world.population);
updateA(world.population); updateAtt(world.ureaList); updateAtt(world.ureaList);
updateSand(world.population); updateA(world.population); updateA(world.population);
vel.plus(acc); vel.limit(maxVel);
vel.plus(acc) vel.plus(acc) pos.plus(vel);.limit(maxVel); axVel);
acc = new kVec(0,0,0); pos.plus(vel) pos.plus(vel)
});
//behaviors
// calculates new location void updatePop(ArrayList pop){
// calculates new locationcalculates new location
kVec sepC = separateCalc(world1.trailList); kVec sep = separate(pop); // Separation
kVec sepC separateCalc(world1.trailList);ec sepC separateCalc(world1.trailList)kVec coh = cohesion(pop); // Cohesion
kVec sep separate(pop); // SeparationVec sep separate(pop); // Separation float currentPh = getSandPh(world1.sandList); //ph
kVec coh cohesion(pop); // Cohesion kVec coh cohesion(pop); // Cohesion
// Arbitrarily weight these forces sepC.scale(180.0);
y weight these forceseight these forces sep.scale(100.0); sepC.scale(180.0);epC.scale(180.0);
coh.scale(.008); sep.scale(100.0);ep.scale(100.0);
// Add the force vectors to acceleration acc.plus(sepC);rs to accelerationceleration
acc.plus(sep); acc.plus(sepC);cc.plus(sepC); acc.plus(coh); acc.plus(sep);acc.plus(sep);
vel.plus(acc); vel.limit(maxVel);
vel.plus(acc) vel.plus(acc) pos.plus(vel);.limit(maxVel); axVel);
acc = new kVec(0,0,0); // reset acc to 0 each iteration pos.plus(vel); pos.plus(vel)
borders(); render(); borders();ers()
}();)
float getSandPh(ArrayList sandList){ float rangeOfVis;
ArrayList sandList){ayList sandList){int winner=-1;
float rangeOfVis;at rangeOfVis;float minDistSoFar = 10;
int winner 1; int winner 1 for(int i = 0; i < sandList.size(); i++){
float minDistSoFar 10; float minDistSoFar 10; Sand s = (Sand) sandList.get(i);or(int i 0; i < sandList.size(); i++){nt i 0; i < sandList.size(); i++)
kVec sTarget= kVec.clone(s.pos); float d = sTarget. distance (pos); kVec sTarget kVec.clone(s.pos); Vec sTarget kVec.clone(s.pos);
if (d < minDistSoFar){sTarget. distance (pos); rget. distance (pos);
minDistSoFar = d; if (d < minDistSoFar){< minDistSoFar)
winner = i;nDistSoFar d;oFar d
}r i;i
} }}
float ph = 0.0; if(winner!=-1){ float ph 0.0; float ph 0.0;
Sand myWinner = (Sand)sandList.get(winner); if(winner! 1){ if(winner! 1)
ph = myWinner.ph; d)sandList.get(winner)andList.get(winner)
}h;
return ph; }
}h;h
void updateAtt(ArrayList ureaList){ } }
int TimeCount = 0;t(ArrayList ureaList){ArrayList ureaList){
int ureaCount = ureaList.size(); int TimeCount 0;int TimeCount 0
kVec sum = new kVec(0,0,0);nt ureaCount ureaList.size();ureaCount ureaList.size()
float closestAttDist = 40; //closest agents can be to the attractor in order for them to be affected kVec sum new kVec(0,0,0);Vec sum new kVec(0,0,0);
int closestAtt = 0;them to be affectedem to be affected
// loop through all the attractors for(int i = 0; i<ureaList.size(); i++){
// loop through all the attractors // loop through all the attractors // find the closest attractornt i 0; i<ureaList.size(); i++){ 0; i<ureaList.size(); i++
Urea att = (Urea) ureaList.get(i); // find the closest attractorthe closest attracto
kVec attTarget = kVec.clone(att.pos); Urea att (Urea) ureaList.get(i); Urea att (Urea) ureaList.get(i);
float attDist = attTarget.distance(pos); if(attDist < closestAttDist){
closestAttDist = attDist; if(attDist < closestAttDist){ttDist < closestAttDist)
closestAtt = i;stAttDist attDist;ist attDist
}t i;i
seek urea and increase vector cohesion and separation avoid trails(separate) and sand(obstruction)make trail after eating urea; accelerate calcify sand when trail is within distance x
Number of Chambers...............100Total Volume of Chambers........22,000m³Air Compression.......................30 atm
PRESSURE x VOLUME = ENERGY
30 atm x 22,000m³ = 66,874,500,000 joules
1 MW = 1,000,000 joule/s
66,874,500,000 Joules/1,000,000 = 66,874 MW/sec
Maximum Storage Capacity
66,874MW/2.2MW =
35 days of energy storage at 2.2MW per day
Surface Area of Photovoltaics.............76,990 m²Energy Produced by 1m²............................72 W
72watts x 76,000 =5.4 MW(1 MW = 1,000,000 W)
Capacity Factor of 40% = 2.2MW
1 MW Powers 1000 homes
2.2 x 1000 =
2,200 homes annually
Indigenous Plants................45,500 m²
Desert.....................................3,500m³
Calcified Sand Forms...........128,000m³
TOTAL...................................177,000m³
Total Site Area.....................238,000m³
177,000/238,000 =
74% of site as potential habitats
for ( f int i = 0; i < sa San d att = ( att =att tattttatt ttttt ttttatt att aatt aaataatt tttttttttttttt Sa for (int i 0; i < sar (int i 0 <
fofofofofofofoforforforr (for ((((or (or ((ffoforor (ffforforfoff (oofo (fofo ((iniiiint i =int i =int i =nt i =nt i =nt i =nt i =t int i =int i =ii =i =nt i =t i = 0t i = 0nt i = 0int it i ==nt i =int i =nt i =t int i =iinnt int i ==i t it iinintt int i ==nt =nt i =in ==int i =i =nt i =inttt int inntttttnn ; i < popBaBaBacBaBaBaBBaaacacacacBaacacBaB BacBBBB BB BBa BaBa BB BB B BB cBac BaBac BacBBBacBaBBB cc BacBaaaccBacBacBacBBBacaaccc BB c BBBaaaaaaaaBaccBBBaaaaacccccccc iateriateriteria a teria a =a =a =a =a a a =aaaa =ria a =teria ateria a a aa a =a =a =teria a ==ter a =teria a =a =teria a =a =a =teria a =a =a =teria a =a =teria ateria a ==t aaa =a =a =aa ==teria ateria a =aaaaterria aaaa t ria aa a t (Bacteri ( a for (fofofofor (oror ( iinnnnnnntnt i 0nt i innnt i nt i iinnnt nnn i i ii ; i < pop for ( 0i ; i < pop
f ((fofofofffoforfor forforforforfor ((for (for (f (fof ((ofor (fofor (for ((o (for ( for (for (for ( for (for ( for ( for (foor (forfor for ( for ((fforfor ( for for ( for ((fffofooro for ( for (( for (for f ffffo ( for (ffooo forfor ( intiintntnt i = 0ntiiintnintiintnntnintintininnntinininntntinnniininntnnnntininntinnntnttttiinnnntnttinnnntt ; i < uU UUUr Ur UUrUr UrrereUre U UrrereUr U UUrre Urrrrrerrrere Urrr Urr U Ur rr U UUUU a at = (Ur
or (ooooor (or ((r (oor (or (r or (or ((((iinnnnnnnntttttttt i 0iiiinnnintnttintttnntttt ; i < uniin ; i < u
fo for ( int i = 0; i < t Cal c att = (Cor (int i 0; i < tint i 0; i < t
impimimpmmmmport pmpmpmport pepompooport peimport peort peort ort peort peort port prt prtrtort peort peport peport peport pemmmpopoimport pimport peort prt rt prt pport pempppoimport peort port pert peort peimpmimport pmppooort rt petport peport pempoport petmimpoport ptt peimimppoortrtimport pttt emport pp t eiimport t ptport pemport import pmp t pport ppepo tport pet peeimport pimport pemport ppo t ppmimp peeppppppp pp asyasy.assyasy.sysy.osy.org.asy.osyasy.sy.y.asyaasassysyyy.sssysysysy.ysyyyasyassyy.assyyyyyyyyasy.y.sy.yy.yyyyyyyyyy pachimportimport mportimportimpimimport impompmpimpmppmport port ptimport port pororort peort pett peort petort port port peort prt pert peimportpooortort port port petiimpoiimmimimportort prrt pet petimpmmmmmmpormmmmpmmpmpmppmpopommmmmmmpopopmpmpompompmpimpoommmmmpomimpompimpop prt pmmimpop pmimimp pommmpom pimmim om oommimpoo t ii asy.orgasy.oraasy.orasy.orgsy.orsysy.osyy.orysy.orsy.oorgororg.arg.arg.arg.aaaasy.org.aasy.org.asy.org.aorg.aasy.org.aayy.ory.oy.oy.ororg.y.org.orrg.ag aaaaaaasy.orgsy.ory.oorg.arg arg.arg arg aay.org.org.a.ay arg ay.org.arg.arg.aasy.org.asy.orrgrgr aaasy.org.arg aaaaagg aaaas ggg aaa.aaaaay pachepachepachepacheache.cache.cache.cache.coache.cchche.cche.cache.cche cpache.cpachpachache.ce.come.coe.coe.compacheachachchpache.e.coe ce ce cache.ache.coache.coche.cohhhhpachepache.heehe.coccohhe cee.cohh che.ce ch ch ccccohe.ch ccocch ccocccehe.cocohe.cooppp mon
int
f f f
Net Urea Hydrolisis Reaction: NH2-CO-NH2 + 3H2O 2NH3 + CO2
2NH3 + 2H2O 2NH4+ + 2OH-
CO2 + OH- HCO3-
Ca2+ + HCO3- + OH- Net pH increase triggers
NH2-CO-NH2 + H2O 2NH3 + CO2
H20H200
H20H20H20H20
H20H20
Ca2+Ca2+
Ca2+
Injection Bacillus Pasteurii + Urea
NH2-CO-NH2 + 2NH3 + CO2
= Urease from bacteria= Chain Reaction
+ HCO3- + OH- C - OH increase triggerc s i
CaCO3
CaCO3
camCaCO3= CALCIFICATION
SAND
SANDSAND
SAND
SANDS
dBNV X),random(-ENV Y, E
dBdBw kVec(random(-1,1),raV_X),random( ENV_Y, ESANDworld1.addworld1.add
X),random(-ENV YX),random(-ENV Y world1.add world1.add world1.add world1.add
kV ( d ( 11)kV_X),random( ENV_Y_X),random( ENV_Y_X),random( ENV_Y_X),random( ENV_S
SANDD
(random(-ESANDS D
beg begegegeginiggingingingingingineginginginginnneggininginnginginginegginginginegginngggiinnggg nggiginggig nnggggggg RRaRawRaRawawRawRawRawRaw(Raw(w(DXF,"aw(DXF,"w(DXF,"w(DXF,"w(DXF,"((DXF,"DXF,"w(DXF,"(DXF,"DXw(DXF,"w(DXF,"DXw(DXF,"DXXaw(DX(DXaw(DXFw(DXFaw(DXFw(DXF,"w(DXF,"w(DXF,"RaRRRaRRaRaw(DXF,"w(DXF,"RaRaw(((D((((DXF,"(DXDXXw(DXawww(wawwaw(aw(aw(((Dawawwaw(w(aw(w(D(DXFawawaw(aw(w(aw(w(www(www(www((DXF,"wwwwawaw(DXF,"wwawww(www((DXw(D F,Ra (w D F,((( , VerVeVeVerVerVerVerVerVerVerererrrsioVersVererrsiorsVeVeVerVeVeerV rVersrsererrrrrere srr
void expo output = createWriter("PointEx
void expovoid expo
for (int i = 0; i < world1.trailList.siCalc a = (Calc) world1.trailL
(int i 0; i < world1.trailList.sint i 0; i < world1.trailList.srintlnrintlnntlni (a.pos.x + "," + a.pos.y + ","
Calc a (Calc) world1.trailL Calc a (Calc) world1.trail
outpoutp
outpponton ("Akkurat-Itali
outp outp
vod(2d(2
oooo22SSSSoooo44
SS00044
wwwowww worldw wowwww
wowo
/*void keyif(k
expif(k
voiif(mous
voi
dFodFoFoF
CCCeCeCCCCCCCCCCeCCCCCCCeCe oouooocZoZcZoZoZoZoZoom/3oZooZoZocZZcZoZoZZcZocZoooZooZoZoooZoZZ , 0,
eCeCmeeeeeeeeee ounoun
wwww
meeeeCmeCeeeeemeCeCeCmeemeeeeCmeCCm CmeemeCmeemmemeemeffffffff
cc*ccZ*cZ*cZcZ*cZ*cZ*cZcZZo*c*cZZ*cZcZcZZo*ccZ*cc*cZcZZc*ccZc*cZccccmammmmmmememmmmmemeemmmmmememmmmmmmm
bb b b bb bb b b b b b b bb b bbb b bbbb bbb b /* /* /* /* /* /*/*/ // // /* / /*f//* /*//// / f// f
babaa
isiiiisisisiiiisiiisisiisiiisisisisisiisiiiiisiisiin((fran((framn((framn((framn((fram((fran((framn((fram((framn((fram((((fra((fram((framf((framfram((framn((framn((fra((fram((framn((fram((framn((fram(fra((framam((fram((frammn((fram((frammn((framframn((framn((framn((fram((fn((framn((framen((fram(framn((fram(fra(f(f m((fra(framn((fram((framn((fram(frfra(fr(framf m((frame((frammemnn((fram((framr mmmmmmnnn((framf mmm(framn((framn((fra(( frfrraramm(((frframmmraframn raam
d), d), d), d),dd),)d)d)d), )d), d)d),dd), d)d), d), d)d)d)d)ddd)dd), ), ddddddddd)d)), dddddd)ddddd),)dd)), )d),d),, ),)))) 2*2*22*c2*22**2*2*2*c2**2**cccccc2*222****2*c2*cc22*****cc2222********c2*cc222***cc2*cc***2*2*2*c2***2*cc22222222ssisisisisisisiiissis n((fran((fran((fran((fran((frannnn((fran((fran((framn((fran((fra(((ffram(fran((frafran((frafn((fran((fran((fraara(framn((framn((fran((fran((fnn(((framffrrammnn((n((framffran((frammn((fn f aaamm(((((((((iisiisiiiiin((frafran((n((fr((((f((fran((fra((((n((fr((((( a( mamaamm(((
o o o
cacacameeraecamercamercamercameracameracameracameracameracameracameracameraameracamermerameramercameracameracameracameracameraccamaameecamermecameracameraameramerameracamccamccaaaaacamecamecamecamecamecameccamcaaameameraaamammmmmercacacacameamammmmmmmcammmmermmmmcacacameccammmmmcamcammemcamcacamcameccccccaccamcacamcammmmammccaamameraca eeraeraaccccccaccacacacameccaamm rcac rrcc rrmmeerra(cZoom*(cZoom*s(cZoom*((cZoom*((((cZoom*(cZoom*(( Z *Zoom*Zoom*smmooomoomm(cZoom*(cZoom( Z( Z *cZoomZ *s*sm*s*s(cZoom*s*s*s*s*s( Z(( Z *((cZoom*oo(cZoomcZoom*s*ssss*s(((cZoomZZocZooo(cZoomoom(cZoom*cZoom***s*s(cZoom((cZoomcZoomcZoomocZ mZoomcZoom*sscZoomcZoom**(cZoomcZoomZZ(cZoom(cZoo(cZoom(cZoom(cZoomcZoom( om*****s(((( moo *smZ s*smm**sZ om**sZoom****oomoommmom**mmmmmmmmmmom sssmmomoomcZoommmmooooommmmomZZoooooomm ss(cZcccZZZooo ssscZoom cZoom cZoom* cZoom* cZoom* cZoomcZoom cZoom* cZoom* cZoom* cZoom* cZoom*cZoom*cZoom*cZoom*cZoom*cZoom* cZoom*cZoom cZoom cZoo cZoomcZoo cZoom cZoom cZoom cZoomcZoom*cZoom* cZoom* cZoom* c cZoom cZoom*Zoomoom cZoom*oocZoocZoo cZoomcZoom*m* cZoom*cZoom*cZoom*cZZ cZoom*oomo cZoocZoom*cZoomcZoooocZocZocZoocZoom* cZoomcZoocZooZoomZo cZoommcccc ooooocZoomoommmmmm**cc cZoocZoooommmcZoom cZooooooommmoommcZoommmcZooocZooocZoomo mmoccc oo cos((framcos((framcos((fracos((fracos((framcoscoscos((framcos((framcos((fraos((fracos((fracoscos((fracos((framcos((fram((fras((fram(fra((fram(fra((fram(framframs((framcos((fram((fram((framcos((fram((framcos((frams((fram((fram((framos((fram((framcos((framcos((fram(fraram((fcooss((fram((fram(fraaos((frams((framam((fram((framos((framras((fras((fraos(cos((frara((fras((frramss((fram((framrra((fram((framraframs((frafra(framraaaaframaacos((fracc raac ss((fram((framaaaaffr(framframcoss amrammmco rr mras((framm((frammmc aramrammc fffrrra(frara(framcccc rrraramcc eCeCeCouneeeeCount+45unt+45eCount+4eeCount+45eCount+4eCount+45Count+45Count+45eCounteCount+45eCount+45eCount+45eCount+45Count+4Count+45Count+45Count+45eCount+45Count+454CoeCounteCeCeeCeCeeCeCeCouneeCounCount+45eCount+unt+45eCount+unt+4+Count+45nt+4unt+4+uount+tCount+45eCount+45ount+45eCeCoeCeeeCeC unt+455eeCounteCountount+45unt+45+4eCeCounne nt+ttt+4t+45n 4unt+45eeCCount+45ouee uuCount+45eCount+45tt++4t+454e t+45unt+44n ++45t+eeCeeeee t+t+tt+++4e +4eCount+45eeeCount+45eCeee teee 555eee 5eee o n 5eee tt+45eee oo ttt+eeeeeCC unttt+45teeee o cc)*cc*ccSpcSpdcS*cSp*cSpdcSpdcSp)*cSpdcSp)*cSpdppdcSpcSp)*c)*)*cS*cSpd*cSpcSp)*ccSpScS*cSpd)*cSpc*cSpd)*cS)*cSpdcSpdSp)**) cSpdcSp)*c)) p)*cSpd)*ccSppd)*cSp)* pccSp)*cSpd)*cSpd*cSpd)* SSSSppd)*)*c*cSpdSS)*ccSSpdpd)*cSpSpdpd))**cS dd)*cS d)**)*cSS)))) cSScSp) ccScSpp) ccSccSpp
c camerac c cam cam camera camera camecamercamecam cccccccameccameraamcameraaaameraamermerameramermeramemeeerameraeraerrrrraaa c camera camera camcaaaamea cammemeameeeeeermeraraaaaaa cccammeemeraacaa e aaa(cZ(cZccccccZZZZZ(cZooooooo(cZoomcZoo(cZoooom(cZoomomZoomcZoom(cZoomZoommmom sm som som sssom ssom ssssssom s((c((((c(c(cccZo(cZoomZoomZoom sZoom sZoomooZo(cZoomZoomZooZoom(cZoom somcZoomZoomm sm som ssssom s(((ccccZoomoomoomo m ssss(((cccc ooooo sc oo ssss((((((aaaaaaaa oo( ooc o mm smc(cZoomoooomooooZoZoooooo(c oooo soc oooc o((
f f f ffonfonfonoonfofofofffoofooo f fonfofofoofooffonfoo ffofof f f fonfonffonfof fffon f fof fo fffo f foffofofo ffonf
meraaeraeraeramemmmmmeraeraeerammmmeeeraeeraraeraeraermmeramerareraeraeeraaa ZoocZoomoom(cZooZcZoomoomcZoom(cZoomZooZooooooooZoocZoomcccZcZoomcZoomooZoom(cZZoomoZoomom(cZcZoomcZoocZoomZoooomZoomocZZoocZoo(cZoooccZZZoommc(cccZZZ(cZoomcZcZoooommmc(cccZcZ(cZ om(cZooZoommZooom(cZo(cZ(cZ(cZ(cZZooooooo(cZZ((c(c(ZoZoZoZoZoZooZoooZooZoooooZooZooooZooooZZZooZoZZZZZ
oaoaaataoatoatattatoaatoatoaatoaattataaoaoaoaaaao cSSSZooZZZcZ oZZc oo
ount++ooat ooloololoooooooo cSS
, 0,0000unt++nt+
ooooooooooooooooo
und(2und(2und(2und(2nd(2nd(2dd(2und(2undnd(2nd(2d(nd(2nd(2nd(2ddd(dd(nd(ddd((d 2ccZcZcZcZcZZZocZocZcZcZZccZZoccZZccZcccccccccZcc
d(2d(2d(2(2d(2d(2d(2ddd(2d(2(dd(floflofloaflofloaoaofloofloaoooofloaoloololfloooaloloff of of
t ccccccccfflfllll
.print.printprinprinpriprint.print.prinprprintprinprinprprintrintpprinprinprintprinrintprintintpripprinrintrinnnnnnnnnnin
adFoadFoadFoadFadFodFodFdFoadFadFoadFdFdFodddFodadFadFadFdadFdFadFoadFodFdFodFFdFdFFFFoo
backgrobackgrobackgrobackgrobackgrobackgrobackgrobackgrobackgbackgrobackgrobackgrobbackgrobbackgrobackgrobackgrobackgrbackgrobackgrobackgroackgrockgroackgackgackgrobackgrobackgrbackgrobackgrorobackgrobackgrockgrobackgrobackgrobackgrobbbackgrobackgroackgrobackgrockgackgrobackgroackgrogrorobackgrobbackgroackgroackgroackgbackgroackgrobackgackgrobackgrbackgrobackgc ggbackgrockgrogb ckgrocackgackgackgkgrob cc rackgrob ckgc grorac gkgrork rrob kgbackgrobbackgrobackck oocc oc oc undununundundundununundnundundundunundunnunundununuundunundndunununuundnnuuunuunuuuunununnnnduunuunnnnuuununnunundundunnnnnnnnnnnnnndunnndd/*float/*float/*float/*float*float*float*floa*float/*float*floatf*floatloatloatfloatfloaflolooo*floatlo*floatloaataatloatt/*floa*float*float*floatlooatt*float*float/*float*floa*floato*ffloo*floatt* loatfloatfloatlooataaattttttttloaooattlooaataaatttflo tt ccccccccccccccccccccccccccccccccccccccccc
ackgrackgroackgroackgroackgroackgroackgroackgrocckgroccackgkckgrokgkgggckgrockgroackgckgrckgroackgrogrogroooackgroockgrooackgackgroackackgckgrocckgckggrogkgkgggggggggggggggggg uunuununnunnnnnnundddddundununduunnnnndddggggckgrogggkgrokkggggggggggc gckggggggggggggg undddddfflfffflffffflflfflfflfllflofflflffffllfffllfflfffffffffff
floatllololoaloalooaoaaaaaaaaatatttffloatoaaaaatl aattaaaaaaaaaaoaaaaa
outpu outpu outpu outpu outpuoutpuoutpu outpu outpu outpu outpu outpu outpu outpu outpuoutpuoutpu outpuutpuutpuutpu outpuoutpu outpu outpu outputpuutpuutpu outpupuoutpuputp outpuoutpu ou outpuoutpu outpuu outp outpoutpuppptpoutpupuuut.prit.prit.prit.pt pt.prit.prit.prit.prinp.pr.prit.prit.prit.prit prprit.prt.prt.pt.prit prt.prit.prt.prit.pttt.pt.ptt.pt.t.tt p.ppriprt.pt.prprprprit.ppt.prpprpriptt.pprpprpptt.pt.prtt.pt.prpriprt.prt.prt.pr..t.prrrrp
font2 =font2 =font2 =font2 =font2 =font2 =ont2 =ont2 =oont2 =font2ont2ont2 =font2 =nt2 =nt2 =nt2 =font2 =t2 =t2ont2 =t2ont2 ont2t2t2font2 =nt2 =ont2 =font2 =font2 ont2nt2 =nt2 =nt2 =ont2 =t2nt2ont2 =t2t2 ofont2 =ont2 =tont2 =nt2nt2 ntt2 ==ont2 ==ntt =o t2oont ====nt2 = loaloaloadload loa loadoaoaoaoadoadFadFadFFdFloalloallo loadlo loadloadloaloadoadoaloaloadlloload loa loaadFloadF loadllooaadF load load loadoalolooaadadadlol adloaadFlololoaaaadFloooadloaaddaadlloadoo ddddloadlolololoadloloadddddddloadooaadddooaddddFlloaadFdddddddFloaadl adFa
camcammmerameraemeraameramerameraeraaerar (cZoom*( Z(cZZ(ccZoom*(c(cZoom(cZoom(cZoZoom(cZoomZoom*(cZZ(cZ( Za(
adFadFdaddadddad
ID_CMKF83
Plan
City Growth = Project Growth
Habitat Conduit Piping and TransformerCompressed Air Chambers Photovoltaics
Scripted Bacteria Behaviors
Java Script 2D
Excavated Bldg. Sand
Bacteria
Urea
Java Script 3D SCALE 1 : 0.001 Resulting 3D Model SCALE 1 : 100Calcified Forms Between Sand Particles
Scripted Geometry of Microscopic Bacteria
Sandstone Form Mold and Framing Construction Sequence
+
+
Chemical Reaction of Calcifying Sand Bacteria
SAND CALCIFICATION PROCESSES
CREATIVE GEOMETRIC AUGMENTATION
1
2
3
ID_CMKF83
Top Related