Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue #1 socket communication with aamks #3

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,8 @@
._*

# visual studio files
*.sln
*.suo
*.u2d
*.vfproj*
*.vbproj*
C1*.dll
C1*.xml
CEdit.application
Expand Down
File renamed without changes.
File renamed without changes.
79 changes: 79 additions & 0 deletions GFortran Linux/Build/CFAST/gnu_linux_64/c_socket_handler.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#define BUFFER_SIZE 3072


int connect_to_socket() {
int client_socket;
int _port;
char* _host = "127.0.0.1";
char* filename= "cfast_evac_socket_port.txt";
FILE *file = fopen(filename, "r");

if (fscanf(file, "%d", &_port) != 1) {
printf("Error reading number from the file.\n");
fclose(file);
return 1;
}
fclose(file);

if ((client_socket = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("Error creating socket");
exit(1);
}

struct sockaddr_in server_address;
server_address.sin_family = AF_INET;
server_address.sin_port = htons(_port);
if (inet_pton(AF_INET, _host, &server_address.sin_addr) != 1) {
perror("Invalid address");
close(client_socket);
exit(1);
}

if (connect(client_socket, (struct sockaddr *)&server_address, sizeof(server_address)) == -1) {
perror("Error connecting to server");
close(client_socket);
exit(1);
}
return client_socket;
}

void send_message(int sockfd) {
char* message = "ok";
if (send(sockfd, message, strlen(message), 0) == -1) {
perror("Sending message failed");
exit(EXIT_FAILURE);
}
}

char *receive_message(int sockfd) {
char *buffer = (char *)malloc(BUFFER_SIZE * sizeof(char));
if (buffer == NULL) {
perror("Memory allocation failed");
exit(EXIT_FAILURE);
}

ssize_t bytes_received = recv(sockfd, buffer, BUFFER_SIZE - 1, 0);
if (bytes_received == -1) {
perror("Receiving message failed");
free(buffer);
exit(EXIT_FAILURE);
} else if (bytes_received == 0) {
printf("Connection closed by peer.\n");
} else {
buffer[bytes_received] = '\0';
}

return buffer;
}
void c_free(void *ptr) {
free(ptr);
}
void close_connection(int sockfd) {
close(sockfd);
}
Binary file not shown.
119 changes: 119 additions & 0 deletions GFortran Linux/Build/CFAST/gnu_linux_64/cfast.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
&HEAD VERSION = 7724, TITLE = 'P_ID_3_S_ID_11' /
&TIME SIMULATION = 100, PRINT = 10, SMOKEVIEW = 10, SPREADSHEET = 10 /
&INIT EXTERIOR_TEMPERATURE = 4.26, INTERIOR_TEMPERATURE = 21.78, PRESSURE = 101580, RELATIVE_HUMIDITY = 36 /

&MISC LOWER_OXYGEN_LIMIT = 0.15, MAX_TIME_STEP = 0.1/

!! SECTION MATL
&MATL ID = 'concrete', CONDUCTIVITY = 1.75, SPECIFIC_HEAT = 1.0, DENSITY = 2200.0, EMISSIVITY = 0.94, THICKNESS = 0.15 /
&MATL ID = 'gypsum', CONDUCTIVITY = 0.3, SPECIFIC_HEAT = 1.09, DENSITY = 1000.0, EMISSIVITY = 0.85, THICKNESS = 0.03 /
&MATL ID = 'glass', CONDUCTIVITY = 0.8, SPECIFIC_HEAT = 0.84, DENSITY = 2500.0, EMISSIVITY = 0.9, THICKNESS = 0.013 /
&MATL ID = 'block', CONDUCTIVITY = 0.3, SPECIFIC_HEAT = 0.84, DENSITY = 800.0, EMISSIVITY = 0.85, THICKNESS = 0.2 /
&MATL ID = 'brick', CONDUCTIVITY = 0.3, SPECIFIC_HEAT = 0.9, DENSITY = 840.0, EMISSIVITY = 0.85, THICKNESS = 0.2 /
!! SECTION COMPA
&COMP ID = 'r1', WIDTH = 6.1, DEPTH = 5.75, HEIGHT = 2.8, CEILING_MATL_ID = 'concrete', WALL_MATL_ID = 'concrete', FLOOR_MATL_ID = 'concrete', CEILING_THICKNESS = 0.3, WALL_THICKNESS = 0.3, FLOOR_THICKNESS = 0.3, ORIGIN = 11.94, 5.29, 0.0, LEAK_AREA = 0.00035, 5.2e-05, GRID = 50, 50, 50 /
&COMP ID = 'c2', WIDTH = 12.0, DEPTH = 2.5, HEIGHT = 2.8, CEILING_MATL_ID = 'concrete', WALL_MATL_ID = 'concrete', FLOOR_MATL_ID = 'concrete', CEILING_THICKNESS = 0.3, WALL_THICKNESS = 0.3, FLOOR_THICKNESS = 0.3, HALL = .TRUE., ORIGIN = 11.94, 11.04, 0.0, LEAK_AREA = 0.00035, 5.2e-05, GRID = 50, 50, 50 /
&COMP ID = 'r3', WIDTH = 5.9, DEPTH = 5.75, HEIGHT = 2.8, CEILING_MATL_ID = 'concrete', WALL_MATL_ID = 'concrete', FLOOR_MATL_ID = 'concrete', CEILING_THICKNESS = 0.3, WALL_THICKNESS = 0.3, FLOOR_THICKNESS = 0.3, ORIGIN = 18.04, 5.29, 0.0, LEAK_AREA = 0.00035, 5.2e-05, GRID = 50, 50, 50 /

!! SECTION WINDOWS
&VENT TYPE = 'WALL' ID = 'w1' COMP_IDS = 'r1', 'OUTSIDE' WIDTH = 1.19 TOP = 2.5 BOTTOM = 1.0 OFFSET = 2.22 FACE = 'FRONT' CRITERION = 'TEMPERATURE' SETPOINT = 200 PRE_FRACTION = 0 POST_FRACTION = 1 DEVC_ID = 't_w1'/
&VENT TYPE = 'WALL' ID = 'w3' COMP_IDS = 'c2', 'OUTSIDE' WIDTH = 0.76 TOP = 2.5 BOTTOM = 1.0 OFFSET = 5.5 FACE = 'REAR' CRITERION = 'TEMPERATURE' SETPOINT = 200 PRE_FRACTION = 0 POST_FRACTION = 1 DEVC_ID = 't_w3'/
&VENT TYPE = 'WALL' ID = 'w6' COMP_IDS = 'r3', 'OUTSIDE' WIDTH = 1.33 TOP = 2.5 BOTTOM = 1.0 OFFSET = 2.47 FACE = 'FRONT' CRITERION = 'TEMPERATURE' SETPOINT = 200 PRE_FRACTION = 0 POST_FRACTION = 1 DEVC_ID = 't_w6'/

!! SECTION DOORS AND HOLES
&VENT TYPE = 'WALL' ID = 'd2' COMP_IDS = 'r1', 'c2' WIDTH = 0.9 TOP = 2.0 BOTTOM = 0.0 OFFSET = 3.39 FACE = 'REAR' CRITERION = 'TIME', T = 0,10,20,30,40,50,60,70,80,90, F=0,0,0,0,0,0,0,0,0,0/
&VENT TYPE = 'WALL' ID = 'd4' COMP_IDS = 'r1', 'r3' WIDTH = 0.9 TOP = 2.0 BOTTOM = 0.0 OFFSET = 2.69 FACE = 'RIGHT' CRITERION = 'TIME', T = 0,10,20,30,40,50,60,70,80,90, F=1,1,1,1,1,1,1,1,1,1/
&VENT TYPE = 'WALL' ID = 'd5' COMP_IDS = 'c2', 'r3' WIDTH = 0.9 TOP = 2.0 BOTTOM = 0.0 OFFSET = 8.59 FACE = 'FRONT' CRITERION = 'TIME', T = 0,10,20,30,40,50,60,70,80,90, F=1,1,1,1,1,1,1,1,1,1/
&VENT TYPE = 'WALL' ID = 'd7' COMP_IDS = 'c2', 'OUTSIDE' WIDTH = 0.9 TOP = 2.0 BOTTOM = 0.0 OFFSET = 0.79 FACE = 'RIGHT' CRITERION = 'TIME', T = 0,10,20,30,40,50,60,70,80,90, F=0,0,0,0,0,0,0,0,0,0/

!! SECTION FIRE
&FIRE ID = 'f3' COMP_ID = 'r3' FIRE_ID = 'f3' LOCATION = 4.61, 4.08/
&FIRE ID = 'f1' COMP_ID = 'r1' FIRE_ID = 'f1' LOCATION = 1.91, 0.73 IGNITION_CRITERION = 'TEMPERATURE' DEVC_ID = 't_f1' SETPOINT = 200/
&FIRE ID = 'f2' COMP_ID = 'c2' FIRE_ID = 'f2' LOCATION = 9.13, 2.01 IGNITION_CRITERION = 'TEMPERATURE' DEVC_ID = 't_f2' SETPOINT = 200/
&CHEM ID = 'f3' HEAT_OF_COMBUSTION = 44000.0 RADIATIVE_FRACTION = 0.26 CARBON = 2 HYDROGEN = 4 OXYGEN = 0 NITROGEN = 0 CHLORINE = 0/
&CHEM ID = 'f1' HEAT_OF_COMBUSTION = 44000.0 RADIATIVE_FRACTION = 0.223 CARBON = 2 HYDROGEN = 4 OXYGEN = 0 NITROGEN = 0 CHLORINE = 0/
&CHEM ID = 'f2' HEAT_OF_COMBUSTION = 44000.0 RADIATIVE_FRACTION = 0.267 CARBON = 2 HYDROGEN = 4 OXYGEN = 0 NITROGEN = 0 CHLORINE = 0/
&TABL ID = 'f3' LABELS = 'TIME', 'HRR', 'HEIGHT', 'AREA', 'CO_YIELD', 'SOOT_YIELD', 'HCN_YIELD'/
&TABL ID = 'f3' DATA = 0, 0, 1.21, 0.0, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 5, 2, 1.21, 0.0, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 10, 11, 1.21, 0.01, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 15, 25, 1.21, 0.02, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 20, 45, 1.21, 0.03, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 25, 70, 1.21, 0.05, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 30, 101, 1.21, 0.08, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 35, 138, 1.21, 0.1, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 40, 181, 1.21, 0.14, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 45, 229, 1.21, 0.17, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 50, 282, 1.21, 0.21, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 55, 342, 1.21, 0.26, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 60, 407, 1.21, 0.31, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 65, 478, 1.21, 0.36, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 70, 554, 1.21, 0.42, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 75, 636, 1.21, 0.48, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 80, 724, 1.21, 0.54, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 85, 817, 1.21, 0.61, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 90, 916, 1.21, 0.69, 0.024, 0.06, 0.0/
&TABL ID = 'f3' DATA = 95, 1021, 1.21, 0.77, 0.024, 0.06, 0.0/
&TABL ID = 'f1' LABELS = 'TIME', 'HRR', 'HEIGHT', 'AREA', 'CO_YIELD', 'SOOT_YIELD', 'HCN_YIELD'/
&TABL ID = 'f1' DATA = 0, 0, 0.18, 0.0, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 5, 3, 0.18, 0.0, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 10, 15, 0.18, 0.02, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 15, 34, 0.18, 0.04, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 20, 60, 0.18, 0.06, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 25, 95, 0.18, 0.1, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 30, 137, 0.18, 0.14, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 35, 186, 0.18, 0.2, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 40, 243, 0.18, 0.26, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 45, 308, 0.18, 0.33, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 50, 380, 0.18, 0.4, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 55, 460, 0.18, 0.49, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 60, 548, 0.18, 0.58, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 65, 643, 0.18, 0.68, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 70, 746, 0.18, 0.79, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 75, 856, 0.18, 0.91, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 80, 974, 0.18, 1.03, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 85, 1100, 0.18, 1.16, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 90, 1233, 0.18, 1.3, 0.024, 0.06, 0.0/
&TABL ID = 'f1' DATA = 95, 1374, 0.18, 1.45, 0.024, 0.06, 0.0/
&TABL ID = 'f2' LABELS = 'TIME', 'HRR', 'HEIGHT', 'AREA', 'CO_YIELD', 'SOOT_YIELD', 'HCN_YIELD'/
&TABL ID = 'f2' DATA = 0, 0, 0.7, 0.0, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 5, 4, 0.7, 0.0, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 10, 16, 0.7, 0.01, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 15, 36, 0.7, 0.03, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 20, 65, 0.7, 0.05, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 25, 102, 0.7, 0.07, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 30, 147, 0.7, 0.1, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 35, 201, 0.7, 0.14, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 40, 262, 0.7, 0.18, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 45, 332, 0.7, 0.23, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 50, 410, 0.7, 0.29, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 55, 497, 0.7, 0.35, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 60, 591, 0.7, 0.42, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 65, 694, 0.7, 0.49, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 70, 805, 0.7, 0.57, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 75, 924, 0.7, 0.65, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 80, 1051, 0.7, 0.74, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 85, 1187, 0.7, 0.84, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 90, 1331, 0.7, 0.94, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 95, 1483, 0.7, 1.04, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 99.0, 1632, 0.7, 1.15, 0.024, 0.06, 0.0/
&TABL ID = 'f2' DATA = 100.0, 1632, 0.7, 1.15, 0.024, 0.06, 0.0/

!! CONNECTIONS
&CONN TYPE = 'WALL' COMP_ID = 'r3' COMP_IDS = 'r1' F = 0.247/
&CONN TYPE = 'WALL' COMP_ID = 'r1' COMP_IDS = 'r3' F = 0.243/
&CONN TYPE = 'WALL' COMP_ID = 'r3' COMP_IDS = 'c2' F = 0.253/
&CONN TYPE = 'WALL' COMP_ID = 'c2' COMP_IDS = 'r3' F = 0.203/

!! SECTION TARGETS
&DEVC ID = 't_f1' COMP_ID = 'r1' LOCATION = 1.91, 0.73, 0 TYPE = 'PLATE' NORMAL = 0.0, 0.0, 1.0 TEMPERATURE_DEPTH = 0 DEPTH_UNITS = 'M'/
&DEVC ID = 't_f2' COMP_ID = 'c2' LOCATION = 9.13, 2.01, 0 TYPE = 'PLATE' NORMAL = 0.0, 0.0, 1.0 TEMPERATURE_DEPTH = 0 DEPTH_UNITS = 'M'/
&DEVC ID = 't_d2' COMP_ID = 'r1' LOCATION = 2.28, 5.75, 1.0 TYPE = 'PLATE' NORMAL = 0.0, -1.0, 0.0 TEMPERATURE_DEPTH = 0 DEPTH_UNITS = 'M'/
&DEVC ID = 't_d4' COMP_ID = 'r1' LOCATION = 0, 2.63, 1.0 TYPE = 'PLATE' NORMAL = 1.0, 0.0, 0.0 TEMPERATURE_DEPTH = 0 DEPTH_UNITS = 'M'/
&DEVC ID = 't_d5' COMP_ID = 'c2' LOCATION = 9.02, 0, 1.0 TYPE = 'PLATE' NORMAL = 0.0, 1.0, 0.0 TEMPERATURE_DEPTH = 0 DEPTH_UNITS = 'M'/
&DEVC ID = 't_d7' COMP_ID = 'c2' LOCATION = 0, 1.28, 1.0 TYPE = 'PLATE' NORMAL = 1.0, 0.0, 0.0 TEMPERATURE_DEPTH = 0 DEPTH_UNITS = 'M'/
&DEVC ID = 't_w1' COMP_ID = 'r1' LOCATION = 2.81, 0, 1.75 TYPE = 'PLATE' NORMAL = 0.0, 1.0, 0.0 TEMPERATURE_DEPTH = 0 DEPTH_UNITS = 'M'/
&DEVC ID = 't_w3' COMP_ID = 'c2' LOCATION = 6.12, 2.5, 1.75 TYPE = 'PLATE' NORMAL = 0.0, -1.0, 0.0 TEMPERATURE_DEPTH = 0 DEPTH_UNITS = 'M'/
&DEVC ID = 't_w6' COMP_ID = 'r3' LOCATION = 3.13, 0, 1.75 TYPE = 'PLATE' NORMAL = 0.0, 1.0, 0.0 TEMPERATURE_DEPTH = 0 DEPTH_UNITS = 'M'/

&TAIL /
57 changes: 57 additions & 0 deletions GFortran Linux/Build/CFAST/gnu_linux_64/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import socket


def find_free_port():
temp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
temp_socket.bind(('localhost', 0))
_, port = temp_socket.getsockname()
temp_socket.close()

return port

def save_port(free_port):
try:
with open(r"cfast_evac_socket_port.txt", "w+") as f:
f.write(str(free_port))
f.close()
except Exception as e:
print("Error occurred while saving port:", e)


def start_server():

free_port = find_free_port()
save_port(free_port)

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', free_port))
server_socket.listen(1)

print("Server is waiting for a connection...")

connection, address = server_socket.accept()
print(f"Connection established with {address}")

message_from_client = connection.recv(1024).decode()
print(f"Received from client: {message_from_client}")

loop_repetition_number = 10
for time in range(loop_repetition_number-1):


msg = input("Server msg: ")

f2 = open(r"doors_opening_level_frame.txt", "w+")
f2.write(msg)
f2.close()


connection.send("ok".encode())

message_from_client = connection.recv(1024).decode()
print(f"Received from client: {message_from_client}")


server_socket.close()
if __name__ == "__main__":
start_server()
Loading