SoundSim
Functions | Variables
main.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include "main.h"
#include "soundwavefunction.h"
#include "collision.h"
#include "extras.h"
#include <time.h>
#include <sys/types.h>
#include <signal.h>
#include <mpi.h>
#include <stddef.h>

Go to the source code of this file.

Functions

item_node *** createRoom ()
 
void allocRoom ()
 
item_node *** createRoomNew ()
 
void changeRoom (item_node ***newRoom)
 
int getItemID (item_node *node)
 
void setItemID (item_node *node, int id)
 
int getFieldID (int x, int y, int z)
 
item_node getRoom ()
 
bool isObstacle (int x, int y, int z)
 
void setFreq20b40 (item_node *node, int value)
 
void setFreq40b100 (item_node *node, int value)
 
void setFreq100b150 (item_node *node, int value)
 
void setFreq150b400 (item_node *node, int value)
 
void setFreq400b1000 (item_node *node, int value)
 
void setFreq1000b2000 (item_node *node, int value)
 
void setFreq2000b3500 (item_node *node, int value)
 
void setFreq3500b6000 (item_node *node, int value)
 
void setFreq6000b10000 (item_node *node, int value)
 
void setFreq10000b20000 (item_node *node, int value)
 
int getFreq20b40 (item_node *node)
 
int getFreq40b100 (item_node *node)
 
int getFreq100b150 (item_node *node)
 
int getFreq150b400 (item_node *node)
 
int getFreq400b1000 (item_node *node)
 
int getFreq1000b2000 (item_node *node)
 
int getFreq2000b3500 (item_node *node)
 
int getFreq3500b6000 (item_node *node)
 
int getFreq6000b10000 (item_node *node)
 
int getFreq10000b20000 (item_node *node)
 
void setDirectionID (item_node *node, int value)
 
int getDirectionID (item_node *node)
 
int getReboundID (int currentDirectionID)
 
item_node getSound (item_node *node)
 
item_node getObstacle (item_node *node)
 
item_nodegetItem_Root (int x, int y, int z)
 
item_nodecreateItem (int x, int y, int z, int id)
 
void removeItem (item_node *node)
 
item_nodeaddItem (item_node *node, int x, int y, int z)
 
item_nodegetItem_RootNewRoom (int x, int y, int z)
 
void addItemNewRoom (item_node *node, int x, int y, int z)
 
int isSoundField (int x, int y, int z)
 
void createReceipt (int(*roomtrans)[cols], int var, int x)
 
int * prepareArrays (item_node *node, int side)
 
void saveVisualisation (int x_offset)
 
int main (int argc, char *argv[])
 

Variables

int visuStep = 1
 Step Counter für Visualisierung. More...
 
int x_format
 Raum Formate. More...
 
int y_format
 
int z_format
 
int j
 
int k
 
int l
 
int i
 
int myrank
 
int size
 
const int nitems = 18
 
int rows = 5
 
int realcountright = 0
 
int realcountleft = 0
 
int cols = 18
 
item_noderoomtrans
 Modelierung eines Fragments ! More...
 
item_node *** room
 
item_node *** room_new
 
item_nodeallElementsNew = NULL
 
item_nodeallElements = NULL
 

Function Documentation

item_node* addItem ( item_node node,
int  x,
int  y,
int  z 
)

Fügt ein Element an eine neue Stelle (Eigenschaften bleiben erhalten), Element an der alten Position wird entfernt

Parameters
node
x
y
z
Returns

Definition at line 523 of file main.c.

References getItem_Root(), getItemID(), item_node::next, item_node::prev, and removeItem().

void addItemNewRoom ( item_node node,
int  x,
int  y,
int  z 
)

Fügt ein Element an eine neue Stelle in new_room (Eigenschaften bleiben erhalten), Element an der alten Position wird entfernt

Parameters
node
x
y
z

Definition at line 565 of file main.c.

References getItem_RootNewRoom(), getItemID(), item_node::next, item_node::prev, and removeItem().

Referenced by main(), procedure(), and procedureH().

void allocRoom ( )

Allocation Test

Definition at line 77 of file main.c.

References i, j, x_format, y_format, and z_format.

void changeRoom ( item_node ***  newRoom)

Raum wird gewechselt. Der Alte wird geleert.

Parameters
newRoom

Definition at line 162 of file main.c.

References allElementsNew, i, and x_format.

Referenced by main().

item_node* createItem ( int  x,
int  y,
int  z,
int  id 
)

Erzeugt ein neues Item mit einer bestimmten ID

Parameters
x
y
z
id
Returns

Definition at line 476 of file main.c.

References getItem_Root(), getItemID(), item_node::id, item_node::next, item_node::prev, and setMovement().

Referenced by box(), createReceipt(), createWall(), door(), interference(), loudspeaker(), main(), procedure(), and procedureH().

void createReceipt ( int(*)  roomtrans[cols],
int  var,
int  x 
)
item_node*** createRoom ( )

Erzeugt einen neuen Raum

Returns

Definition at line 41 of file main.c.

References i, item_node::id, j, k, l, item_node::next, room, x_format, y_format, and z_format.

Referenced by main().

item_node*** createRoomNew ( )

Erzeugt einen neuen Raum, in den die neuen Elemente gepackt werden.

Returns

Definition at line 105 of file main.c.

References i, item_node::id, j, k, l, item_node::next, room_new, x_format, y_format, and z_format.

Referenced by main().

int getDirectionID ( item_node node)

Gibt die Richtung eine SoundItem

Parameters
node
Returns
Richtung

Definition at line 410 of file main.c.

References item_node::data, getItemID(), and item_node::Sound.

Referenced by addWave(), checkSoundValid(), interference(), main(), prepareArrays(), procedure(), and procedureH().

int getFieldID ( int  x,
int  y,
int  z 
)

Gibt die allgemeine Feld ID zurück.

Parameters
x
y
z
Returns
0: Sound, 1: Hinderniss, 2: ungültiges Element, 3: leeres Feld (Linked List Head)

Definition at line 207 of file main.c.

References item_node::id, item_node::next, x_format, and y_format.

Referenced by main().

int getFreq10000b20000 ( item_node node)
int getFreq1000b2000 ( item_node node)
int getFreq100b150 ( item_node node)
int getFreq150b400 ( item_node node)
int getFreq2000b3500 ( item_node node)
int getFreq20b40 ( item_node node)
int getFreq3500b6000 ( item_node node)
int getFreq400b1000 ( item_node node)
int getFreq40b100 ( item_node node)
int getFreq6000b10000 ( item_node node)
item_node* getItem_Root ( int  x,
int  y,
int  z 
)

Das Root Element ist das 1.Element jeder gültigen Koordinate (ID 3)

Parameters
x
y
z
Returns

Definition at line 454 of file main.c.

References item_node::id, item_node::next, x_format, and y_format.

Referenced by addItem(), createItem(), interference(), main(), saveVisualisation(), and unToucheAll().

item_node* getItem_RootNewRoom ( int  x,
int  y,
int  z 
)

Das Root Element von new_room ist das 1.Element jeder gültigen Koordinate (ID 3)

Parameters
x
y
z
Returns

Definition at line 545 of file main.c.

References item_node::id, item_node::next, x_format, and y_format.

Referenced by addItemNewRoom().

int getItemID ( item_node node)
item_node getObstacle ( item_node node)

Definition at line 442 of file main.c.

int getReboundID ( int  currentDirectionID)

Gibt die Abprallrichtung abhängig von der aktuellen Richtung

Parameters
currentDirectionID
Returns
neue Richtung

Definition at line 421 of file main.c.

Referenced by createReceipt(), and main().

item_node getRoom ( )

Variable room als Getter.

Returns

Definition at line 226 of file main.c.

References room.

item_node getSound ( item_node node)

Definition at line 437 of file main.c.

bool isObstacle ( int  x,
int  y,
int  z 
)

Wahrheitswert ob es sich bei der Koordinate um ein Hinderniss handelt.

Parameters
x
y
z
Returns

Definition at line 236 of file main.c.

References item_node::id.

Referenced by main(), and saveVisualisation().

int isSoundField ( int  x,
int  y,
int  z 
)

Prüft ob Feld ein Sound Feld ist

Parameters
x
y
z
Returns

Definition at line 586 of file main.c.

References item_node::id, x_format, and y_format.

Referenced by addWave(), and createReceipt().

int main ( int  argc,
char *  argv[] 
)
int* prepareArrays ( item_node node,
int  side 
)
void removeItem ( item_node node)

Entfernt das ausgewählte Element

Parameters
node

Definition at line 500 of file main.c.

References item_node::next, and item_node::prev.

Referenced by addItem(), addItemNewRoom(), checkSoundValid(), interference(), and main().

void saveVisualisation ( int  x_offset)

Speichert die Matrix ab. Zeitschritte werden berücksichtigt.

See also
http://wiki.selfhtml.org/wiki/JavaScript/JSON
http://papo15.juliu5.com/

Definition at line 691 of file main.c.

References cols, getFreq150b400(), getItem_Root(), getItemID(), isObstacle(), j, k, l, myrank, item_node::next, rows, x_format, y_format, and z_format.

Referenced by main().

void setDirectionID ( item_node node,
int  value 
)

Richtung eines SoundItem setzen

Parameters
node
value

Definition at line 399 of file main.c.

References item_node::data, getItemID(), and item_node::Sound.

Referenced by createReceipt(), interference(), loudspeaker(), main(), procedure(), and procedureH().

void setFreq10000b20000 ( item_node node,
int  value 
)
void setFreq1000b2000 ( item_node node,
int  value 
)
void setFreq100b150 ( item_node node,
int  value 
)
void setFreq150b400 ( item_node node,
int  value 
)
void setFreq2000b3500 ( item_node node,
int  value 
)
void setFreq20b40 ( item_node node,
int  value 
)
void setFreq3500b6000 ( item_node node,
int  value 
)
void setFreq400b1000 ( item_node node,
int  value 
)
void setFreq40b100 ( item_node node,
int  value 
)
void setFreq6000b10000 ( item_node node,
int  value 
)
void setItemID ( item_node node,
int  id 
)

Gibt einem ITEM die ID

Parameters
node
id

Definition at line 196 of file main.c.

References item_node::id.

Variable Documentation

item_node* allElements = NULL

Definition at line 35 of file main.c.

item_node* allElementsNew = NULL

Definition at line 34 of file main.c.

Referenced by changeRoom().

int cols = 18

Definition at line 29 of file main.c.

Referenced by main(), prepareArrays(), and saveVisualisation().

int i
int j
int k
int l

Definition at line 20 of file main.c.

Referenced by createRoom(), createRoomNew(), main(), prepareArrays(), and saveVisualisation().

int myrank

OpenMPI Rank 0: Verwalter V, Rank 1: Visualizer V, Rank 2-n: SoundSim S

Definition at line 23 of file main.c.

Referenced by main(), and saveVisualisation().

const int nitems = 18

Definition at line 25 of file main.c.

int realcountleft = 0

Definition at line 28 of file main.c.

Referenced by main().

int realcountright = 0

Definition at line 27 of file main.c.

Referenced by main().

item_node*** room

Definition at line 32 of file main.c.

Referenced by createRoom(), and getRoom().

item_node*** room_new

Definition at line 33 of file main.c.

Referenced by createRoomNew().

item_node* roomtrans

Modelierung eines Fragments !

Definition at line 31 of file main.c.

int rows = 5

Definition at line 26 of file main.c.

Referenced by main(), and saveVisualisation().

int size

Definition at line 24 of file main.c.

Referenced by main().

int visuStep = 1

Step Counter für Visualisierung.

Definition at line 15 of file main.c.

int x_format
int y_format
int z_format