This is the piece of code I have which prints my diffused density matrices to a file after every nth time step of the simulation time given by fdparam_1.t_domain. t and fdparam_1.Dt are variables of the type double. All variables are declared and defined either with user input or with pre-defined values in the code.
Please note that the last time I posted the code for the segmentation fault, I modified the code as per the suggestions and this piece of code below is the modified one, although the operations are obviously the same.
    int main(void)
    {
    int i,j,size,sz;
    double *ux, *vy, *ux0, *vy0, *r, *r0, t, sum, sum1;
    struct fdparam fdparam_1;
    printf("Enter the number of grid points: \t");
    scanf("%d", &fdparam_1.N);
    printf("Enter the maximum number of iterations: \t");
    scanf("%d", &fdparam_1.MAXIT);
    printf("Enter the value for time domain and the time interval: \t");
    scanf("%d\t%d", &fdparam_1.t_domain, &fdparam_1.Del_t);
    printf("Enter the time step, number of molecules: \t \t");
    scanf("%lf\t%lf", &fdparam_1.Dt,  &fdparam_1.dens);
    printf("Enter the volume of the fluid: \t");
    scanf("%lf", &fdparam_1.V);
    printf("Enter the diffusion coefficient and viscosity and angular velocity(in rad/s): \t \t");
    scanf("%lf\t%lf\t%lf",&fdparam_1.diff, &fdparam_1.mu, &fdparam_1.wv);
    size=(fdparam_1.N+2)*(fdparam_1.N+2);
    sz=fdparam_1.t_domain/fdparam_1.Del_t;
    double map[fdparam_1.N+2][fdparam_1.N+2],map_init[fdparam_1.N+2][fdparam_1.N+2],n_calc, time[sz+1];
    r  = (double*) calloc (size,sizeof(double));
    r0 = (double*) calloc (size,sizeof(double));
    ux = (double*) calloc (size,sizeof(double));
    vy = (double*) calloc (size,sizeof(double));
    ux0 = (double*)calloc (size,sizeof(double));
    vy0 = (double*)calloc (size,sizeof(double));
    double vol = fdparam_1.V;
    FILE *fp1[sz+1];
    var_init(fdparam_1.N,r0,ux0,vy0,fdparam_1.dens);
    sum1=r0[0];
    for (i=0;i<=fdparam_1.N+1;i++){
            for (j=0;j<=fdparam_1.N+1;j++){
                    sum1+=r0[(i)+((fdparam_1.N+2)*j)];
            }
    }
    double n_act = sum1*vol;
    printf("Time = %lf \t Initial Nr. of Molecules is: %e \n",t,n_act);
    int l = 0;
    add_source(fdparam_1.N,r,r0,fdparam_1.Dt);
    t=0;
    int k=0;
 while(t<=fdparam_1.t_domain){
            swap(r0,r);
                            density_solve(fdparam_1.N,r,r0,ux0,vy0,fdparam_1.Dt,fdparam_1.diff,fdparam_1.MAXIT);    //uses ux and vy calculated from Navier Stokes in the velocity solver to calculate density
           // creating multiple files to store the density values during the simulation at every Del_t time interval
            if(((int)(t*100))%fdparam_1.t_domain==0){
                    char filename[sz+1];
                    sprintf(filename,"density%d.txt",l);
                    fp1[l]=fopen(filename,"w");
                    for (i=0;i<=fdparam_1.N+1;i++){
                            for (j=0;j<=fdparam_1.N+1;j++){
                                    map[i][j]=r[(i)+(fdparam_1.N+2)*j];
                                    fprintf(fp1[l],"%lf \t",map[i][j]);
                            }
                            fprintf(fp1[l],"\n");
                    }
                    fclose(fp1[l]);
            sum=r[0];
            for (i=0;i<=fdparam_1.N+1;i++){
                    for (j=0;j<=fdparam_1.N+1;j++){
                            sum+=r[(i)+((fdparam_1.N+2)*j)];
                    }
            }
            n_calc=sum*vol;
            printf("Time = %lf \t Calculated Nr. of Molecules = %e \n",t,n_act);
            }
            l++;
            t+=fdparam_1.Dt;
    }
void add_source(int n, double *x, double *s, double dt)
{
    int i, size;
    size = (n+2)*(n+2);
    for (i=0; i<size; i++)
    {
            x[i]+=s[i]; //add source terms to the density
    }
}
I am sorry the code is divided into numerous functions and header files and it is really difficult for me to prepare a minimal working code out of it. The above is my complete main function but here is what is happening now when I run the gdb debugger again without supplying any breakpoint, it seems to be executing the step where it is supposed to print t and n_act because this is the actual expected output which I am supposed to get but I get segmentation fault instead,
Printing source densities now: 
Time = 0.000000      Initial Nr. of Molecules is: 8.820000e+06 
Time = 0.000000      Calculated Nr. of Molecules = 8.820000e+06 
Time = 10.000000     Calculated Nr. of Molecules = 8.820000e+06 
Time = 20.000000     Calculated Nr. of Molecules = 8.820000e+06 
... and so on till Time=1000
 
     
    