Skip to content
Snippets Groups Projects
Unverified Commit f34856b3 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

added sanitizers in makefile and particle force list computation

parent 500977ce
No related branches found
No related tags found
No related merge requests found
Pipeline #12156 failed
CC=gcc
OPTS=-g -O3 -Wall -Wextra
LINK=-lm
OPTS=-g -O3 -Wall -Wextra -fsanitize=address -fsanitize=leak
LINK=-lm -lasan
main: main.o particle.o ../vec2/vec2.o
$(CC) $(OPTS) -o $@ $^ $(LINK)
......
#include <stdlib.h>
#include <stdio.h>
#include "../vec2/vec2.h"
#include "particle.h"
......@@ -12,4 +14,11 @@ int main() {
vec2 force = particle_compute_grav_force(parts[0], p);
vec2_print(force);
vec2 *forces = particle_compute_grav_resultant_forces(parts, number);
for (int ip = 0; ip < number; ++ip) {
printf("force %d: \n", ip);
vec2_print(forces[ip]);
}
free(parts);
}
\ No newline at end of file
......@@ -30,7 +30,7 @@ particle particle_random_create(vec2 min_r, vec2 max_r, double min_m, double max
}
particle *particle_random_create_list(vec2 min_r, vec2 max_r, double min_m, double max_m, int number) {
particle *p = malloc(number * sizeof(particle_create));
particle *p = malloc(number * sizeof(particle));
srand(time(NULL));
......@@ -50,6 +50,20 @@ vec2 particle_compute_grav_force(particle lhs, particle rhs) {
return vec2_mul(factor, rij);
}
vec2 *particle_compute_grav_resultant_forces(particle *parts, int number) {
vec2 *forces = malloc(number * sizeof(vec2));
for (int ip = 0; ip < number; ++ip) {
forces[ip] = vec2_create_zero();
}
for (int ip = 0; ip < number; ++ip) {
for (int iq = ip + 1; iq < number; ++iq) {
forces[ip] = vec2_add(forces[ip], particle_compute_grav_force(parts[ip], parts[iq]));
forces[iq] = vec2_add(forces[iq], particle_compute_grav_force(parts[iq], parts[ip]));
}
}
return forces;
}
void particle_print(particle p) {
printf("m = %g\n", p.m);
vec2_print(p.r);
......
......@@ -16,6 +16,8 @@ particle *particle_random_create_list(vec2 min_r, vec2 max_r, double min_m, doub
vec2 particle_compute_grav_force(particle lhs, particle rhs);
vec2 *particle_compute_grav_resultant_forces(particle *parts, int number);
void particle_print(particle p);
void particle_print_list(particle *p, int number);
......
......@@ -7,6 +7,10 @@ vec2 vec2_create(double x_, double y_) {
return v;
}
vec2 vec2_create_zero() {
return vec2_create(0.0, 0.0);
}
vec2 vec2_add(vec2 lhs, vec2 rhs) {
return vec2_create(
lhs.x + rhs.x,
......
......@@ -9,6 +9,8 @@ typedef struct _vec2 {
vec2 vec2_create(double x_, double y_);
vec2 vec2_create_zero();
vec2 vec2_add(vec2 lhs, vec2 rhs);
vec2 vec2_sub(vec2 lhs, vec2 rhs);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment