#include "Dynamics/dynamics_3d_cartesian.h" //#include "Dynamics/winds.h" #include #include #include #define _theta0 PI/4. #define _phi0 0. #define _dtheta0 0. #define _dphi0 0. #define dim 3 #define mu 0.//0.261799//=15 //0.0872665=5 RADIANS!!! // ============== FILE INPUT: ATTACK ANGLE AND WIND X, Y, Z, THETA0 AND PHI0 ============ int main(int argc, char *argv[]){ // ========================= READING INPUT VARIABLES ========================== if (argc <= 4){ printf("Missing inputs!!! Need ATTACK ANGLE INDEX, WIND X, WIND Y, WIND Z, THETA0 AND PHI0\n"); return 0; } int alpha_index = atoi( *(argv + 1) ); double W[3]; W[0] = atof( *(argv + 2) ); W[1] = atof( *(argv + 3) ); W[2] = atof( *(argv + 4) ); double theta = _theta0; double phi = _phi0; double dtheta = _dtheta0; double dphi = _dphi0; double sp=0, pv=0; if (alpha_index >= n_alphas){ printf("Alpha index too big!!!\n"); return 0; } // ========================= OUTPUT FILES ========================== FILE *trajectory, *debug; trajectory = fopen("out.txt", "w+"); debug = fopen("debug3d.csv", "w+"); //fprintf(trajectory, "t,x_kite,y_kite,z_kite,x_block,y_block,z_block,theta,vtheta,windx,windy,wind_z,v_blockx,v_blocky,Tension\n"); //fprintf(debug, "i,Alpha,mu,theta,Windx,Windy,Windz,Vkx,Vky,Vkz,Lift,Liftx,Lifty,Liftz,Drag,Tension,F_attrito,sector,uno,due,tre,1-sp,angle,prod_vect,t2[0],t2[1],t2[2]\n"); // ============================ VARIABLES DEFINITION ============================ // kite motion vectors from fixed origin (x, z) double *rk = (double*) malloc(dim * sizeof(double)); double *vk = (double*) malloc(dim * sizeof(double)); double *ak = (double*) malloc(dim * sizeof(double)); // block motion vectors from fixed origin (x, z) double *r_block = (double*) malloc(dim * sizeof(double)); double *v_block = (double*) malloc(dim * sizeof(double)); double *a_block = (double*) malloc(dim * sizeof(double)); // block motion vectors from fixed origin (x, z) double *r_diff = (double*) malloc(dim * sizeof(double)); double *v_diff = (double*) malloc(dim * sizeof(double)); double *a_diff = (double*) malloc(dim * sizeof(double)); double r_diff_modulo; double v_diff_modulo; double lift=0, drag=0; double T = 0; double F_attr; double F_vinc; double theta_star; int stability = 0; int decollato = 0; int sector = 0; double l0, l1, l2; double d0, d1, d2; variables_initialization(rk, vk, ak, theta, phi, dtheta, dphi, r_block, v_block, a_block, r_diff, v_diff, a_diff); //streamfunction3d(rk, W); int t = 0; // ============================ KITE FLYING LOOP, STOPS WHEN FALL OCCURS ============================ for (int i=0; i