mergemod.c 2.52 KB
Newer Older
Tilman Steinweg's avatar
Tilman Steinweg committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/*------------------------------------------------------------------------
 * Copyright (C) 2011 For the list of authors, see file AUTHORS.
 *
 * This file is part of SOFI2D.
 * 
 * SOFI2D is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, version 2.0 of the License only.
 * 
 * SOFI2D is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with SOFI2D. See file COPYING and/or 
  * <http://www.gnu.org/licenses/gpl-2.0.html>.
--------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
 *   merge model files written by the different processes to 
 *   a single file                                 
 *
 *  ----------------------------------------------------------------------*/

#include "fd.h"


void mergemod(char modfile[STRING_SIZE], int format){



	extern int  NYG, MYID, NPROCX, NPROCY;
	extern int NX, NY, NPROC, IDX, IDY;
	extern FILE *FP;


	char file[STRING_SIZE];
	FILE *fp[NPROCY][NPROCX], *fpout;
	int i, j, ip, jp;
	float a;


	fprintf(FP,"\n **Message from mergemod (printed by PE %d):\n",MYID);
	fprintf(FP," PE %d starts merge of %d model files \n",MYID,NPROC);	

	fprintf(FP,"\n writing merged model file to  %s \n",modfile);
	fpout=fopen(modfile,"w");

	
	
	
	fprintf(FP," Opening model files: %s.??? ",modfile);
	for (ip=0;ip<=NPROCX-1; ip++)
  	for (jp=0;jp<=NPROCY-1; jp++){
55
      		sprintf(file,"%s.%i.%i",modfile,ip,jp);
Tilman Steinweg's avatar
Tilman Steinweg committed
56
      		fp[jp][ip]=fopen(file,"r");
Tilman Steinweg's avatar
Tilman Steinweg committed
57
      		if (fp[jp][ip]==NULL) declare_error("merge: can't read model file !"); 
Tilman Steinweg's avatar
Tilman Steinweg committed
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
      	}

	fprintf(FP," ... finished. \n");



	fprintf(FP," Copying...");

  	 for (ip=0;ip<=NPROCX-1; ip++){
      		for (i=1;i<=NX;i+=IDX){
			for (jp=0;jp<=NPROCY-1; jp++){
	    			for (j=1;j<=NY;j+=IDY){
	      			a=readdsk(fp[jp][ip],format);
	      			writedsk(fpout,a,format);
	       			}
	   		}
	 	}
      	}
	fprintf(FP," ... finished. \n");

	for (ip=0;ip<=NPROCX-1; ip++)
   	for (jp=0;jp<=NPROCY-1; jp++){
      		fclose(fp[jp][ip]);
      	}
	fclose(fpout);
	
	fprintf(FP," Use \n");
	fprintf(FP," ximage n1=%d < %s  label1=Y label2=X title=%s \n",
      			((NYG-1)/IDY)+1,modfile,modfile);
	fprintf(FP," to visualize model. \n");



}