Ah tu stai dicendo di fare il link delle due sorgenti quindi? veramente io avevo messo tutto in una sorgente e creato una funzione. Allora adesso l'ho cambiato. Mesh vale 2000 ed è una costante che ho definito nel file che contiene il main. tutti i vettori hanno dal 0 al 2000 elemento quindi in tutto 2001.
Quindi ho cambiato il primo file sulla stregua del linking
File numerov.c:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
/* Numero massimo di punti nella griglia */
double * numerov (double e, double vpot[2001])
{
double sqrt();
int mesh, i, icl,lang;
int nodes, ncross, kkk;
double xmax, dx, ddx12, xmcl, norm, yicl, djump;
double elw, eup;
double * y;
double x[MSHX+1], p[MSHX+1], f[MSHX+1];
char fileout[80]= "fileout";
FILE *out;
/*
** Input e inizializzazione della griglia
*/
xmax=10;
lang=0;
mesh=2000;
dx = xmax / mesh;
ddx12 = dx * dx / 12.;
nodes=1;
e finisce con
return y;
nel main di hartreefock.c invece:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define MSHX 2000
#define mesh 2000
#define pi 3.14156
double *y;
int i,Na ;
double xmax, dx, ddx12 ,e=0.;
FILE *out;
FILE *cisss;
double x[MSHX+1], p[MSHX+1], f[MSHX+1],y[MSHX+1],vpo[MSHX+1],phi[MSHX];;
char fileout[80]= "fileout";
char cinx[80];
void potenziale(void);
double * numerov (double e,double vpot[MSHX+1]);
int main()
{ printf("Type name of your file\n");
scanf("%80s", cinx);
fprintf(stderr, "Valore di NA ");
scanf("%d",&Na);
cisss = fopen(cinx, "w");
xmax=10;
dx = xmax / MSHX ;
for(i=0 ; i <= MSHX ; ++i)
{
vpo[i] = /* Na * (phi [i]) * (phi [i])/( i * dx) * (i * dx) */ (1/2 )* (dx * i)*(dx * i);
}
double *y = numerov(e,vpo);
fclose(cisss);
printf( "Hello");
return 1;
}
Li ho linkati così: gcc -o hartree hartreefock.c numerov.c