/***********************************************************************
 *
 * File: afire.c (21-Jun-2001)
 *               (21-Jun-2005)
 *
 * Hilfsprogramm zur Waldbrandsimulation (Gittermodell)
 *
 * Lesen der Ergebnisse einer Simulation von Binaerfile und Ausgabe der
 * Wahrscheinlichkeitsdichte der verbrannten Areale in ASCII-File
 * "afire.dat"
 *
 **********************************************************************/

#include <stdio.h>
#include <stdlib.h>

/**********************************************************************/

int main() {

/**********************************************************************/

  FILE *fp;
  char fname[100];
  unsigned short int iran[3];
  int i,istep,ix,ns,nx,ny;
  int *ihist;
  int **lattice;
  long int ihcum;
  double fact;
  
  printf(" fname=");
  gets(fname);

  fp=fopen(fname,"r");

  fread(&nx,sizeof(int),1,fp);
  ny=nx;

  ihist=(int*)malloc((nx*ny+1)*sizeof(int));
  lattice=(int**)malloc((nx+2)*sizeof(int*));
  for(ix=0;ix<=nx+1;ix=ix+1) {
    lattice[ix]=(int*)malloc((ny+2)*sizeof(int));
  }

  fread(&istep,sizeof(int),1,fp);
  fread(&ns,sizeof(int),1,fp);
  fread(iran,sizeof(unsigned short int),3,fp);
  
  for(ix=1;ix<=nx;ix=ix+1) {
    fread(&lattice[ix][1],sizeof(int),ny,fp);
  }
  fread(&ihist[1],sizeof(int),nx*ny,fp);
  
  fclose(fp);

  printf(" nx=ny=%d\n",nx);
  printf(" 1/f_m=%d\n",ns);
  printf(" steps=%d\n",istep);

  ihcum=0;
  for(i=1;i<=nx*ny;i=i+1) {
    ihcum=ihcum+ihist[i];
  }
  fact=1.0/ihcum;

/* Wahrscheinlichkeitsdichte und komplementaere kumulative
   Wahrscheinlichkeitsverteilung auf File schreiben */
  
  fp=fopen("afire.dat","w");
  
  for(i=1;i<=nx*ny;i=i+1) {
    if(ihist[i]!=0) {
      fprintf(fp," %d %14.7e %14.7e\n",i,fact*ihist[i],fact*ihcum);
      ihcum=ihcum-ihist[i];
    }
  }

  fclose(fp);
  
  return 0;
  
}

/**********************************************************************/
