Beispiel #1
0
void PrintDiff () {
	double 	kbT = 41.16404397;

	FILE *diff;
	
	MAKE_FILENAME(fullname_diff,"microFB.dat");
	
	diff=fopen(fullname_diff,"a");
	fprintf(diff,"VARIABLES = \"X\", \"Y\", \"Z\",\"sigmaXZ\",\"sigmaYZ\",\"sigmaZZ\",\"derSigmaXZ\",\"derSigmaYZ\",\"derSigmaZZ\",\"divSigma\",\"denForce\",\"diff\",\n");
	fprintf(diff,"ZONE I=%d, J=%d, K=%d, F=POINT\n",
					grid.x+1 - 4*offset, 	grid.y+1 - 4*offset, 	grid.z+1 - 4*offset);
	for (int i = 2*offset; i < grid.x+1 - 2*offset; i++){
		for (int j = 2*offset; j < grid.y+1 - 2*offset; j++){
			for (int k = 2*offset; k < grid.z+1 - 2*offset; k++){
				fprintf(diff,"%5.2f %5.2f %5.2f %9.4f %9.4f %9.4f %9.4f %9.4f %9.4f %9.4f %9.4f %9.4f\n",
								i*dx, j*dy, k*dz,
								kbT*sigmaXZ[i][j][k], kbT*sigmaYZ[i][j][k], kbT*sigmaZZ[i][j][k],
								kbT*derSigmaXZ[i][j][k], kbT*derSigmaYZ[i][j][k], kbT*derSigmaZZ[i][j][k],
								kbT*divSigma[i][j][k], kbT*fZ[i][j][k], kbT*(divSigma[i][j][k]-fZ[i][j][k]) );
			}
		}
	}
	fclose(diff);
	printf("finished output. Thank you very much!\n");
}
Beispiel #2
0
/* write down the sub potential into the output file */
void PrintSubFile () {
	FILE *snap, *Wsub, *Wfields;

	MAKE_FILENAME(fullname_snap,"snapshot2.dat");
	
	snap=fopen(fullname_snap,"a");
	for (int i = 1; i < grid.x+1; i++){
		for (int j = 1; j < grid.y+1; j++){
			for (int k = 1; k < grid.z+1; k++){
				fprintf(snap,"%g %g %g %g %g %g %g %g\n",
								(i - 0.5)*dx, (j - 0.5)*dy, (k - 0.5)*dz,
								rho[i][j][k], df_drho[i][j][k], grad[i][j][k],
								sub[i][j][k], wa[i][j][k]);
			}
		}
	}
	fclose(snap);
	
	MAKE_FILENAME(fullname_Wsub,"substrate2.dat");
	
	Wsub=fopen(fullname_Wsub,"a");
	for (int i = 1; i < grid.x+1; i++){
		for (int j = 1; j < grid.y+1; j++){
			for (int k = 1; k < grid.z+1; k++){
				fprintf(Wsub,"%16.12f \n", sub[i][j][k]);
			}
		}
	}
	fclose(Wsub);
	
	MAKE_FILENAME(fullname_Wfields,"Wfields2.dat");
	
	Wfields=fopen(fullname_Wfields,"a");
	for (int i = 1; i < grid.x+1; i++){
		for (int j = 1; j < grid.y+1; j++){
			for (int k = 1; k < grid.z+1; k++){
				fprintf(Wfields,"%16.12f \n", wa[i][j][k]);
			}
		}
	}
	fclose(Wfields);
}
Beispiel #3
0
ERetVal CFile::Open( const char* _pszDir, const char* _pszFileName )
{
	MAKE_FILENAME( _pszDir, _pszFileName );
	return Open( szFullFileName );
}
Beispiel #4
0
void ReadSubFunc () {
	double _i, _j, _k;
	double _rho, _df_drho, _grad;
	double _sub, _wa;
	double _rho_temp, _wa_temp, _sub_temp;
	char str [120];
	
	FILE *snap, *Wfields, *Wsub;
	
	sprintf(name,"snapshot_final.dat");
	MAKE_FILENAME(fullname_snap,name);
	snap=fopen(fullname_snap,"r");

	// skip first 10 words (header of tecplot)
	for (int i=0; i<10; i++) {
		fscanf (snap, "%s", str);
	}

	for(int i = 1; i < grid.x+1; i++){
		for(int j = 1; j < grid.y+1; j++){
			for(int k = 1; k < grid.z+1; k++){
				/* read in the field and the substrate potential */
				fscanf(snap,"%lf %lf %lf %lf %lf %lf %lf %lf \n",
							 &_i, &_j, &_k, &_rho_temp, &df_drho[i][j][k], &grad[i][j][k], &_sub_temp, &_wa_temp);
			}
		}
	}

	fclose(snap);
	printf("finished snapshot reading\n");

	// read filename of the fields for restart
	sprintf(name,"Wfields_final.dat");
	MAKE_FILENAME(fullname_Wfields,name);
	Wfields=fopen(fullname_Wfields,"r");

	for(int i = 1; i < grid.x+1; i++){
		for(int j = 1; j < grid.y+1; j++){
			for(int k = 1; k < grid.z+1; k++){
				fscanf(Wfields,"%lf \n",&_wa);
				wa[i][j][k] = _wa;
				// the following is only valid for grand canonical ensemble:
				rho[i][j][k] = rho_liq * exp(V11*rho_liq + W111*SQR(rho_liq) - wa[i][j][k]);
			}
		}
	}
	fclose(Wfields);
	printf("finished Wfields reading\n");
	
	// read substrate potential for restart
	MAKE_FILENAME(fullname_Wsub,"substrate.dat");
	Wsub = fopen(fullname_Wsub,"r");
	
	for(int i = 1; i < grid.x+1; i++){
		for(int j = 1; j < grid.y+1; j++){
			for(int k = 1; k < grid.z+1; k++){
				fscanf(Wsub,"%lf \n",&_sub);
				sub[i][j][k] = _sub;
			}
		}
	}
	fclose(Wsub);
	printf("finished substrate reading\n");
	
	// fill in array borders through periodic boundaries //
	// x-direction
	for(int k = 1; k < grid.z+1; k++){
		for(int j = 1; j < grid.y+1; j++){
			rho[0][j][k] = rho[grid.x][j][k]; rho[grid.x+1][j][k] = rho[1][j][k];
		}
	}
	
	// y-direction
	for(int i = 1; i < grid.x+1; i++){
		for(int k = 1; k < grid.z+1; k++){
			rho[i][0][k] = rho[i][grid.y][k]; rho[i][grid.y+1][k] = rho[i][1][k];
		}
	}
	
	// z-direction
	for(int i = 1; i < grid.x+1; i++){
		for(int j = 1; j < grid.y+1; j++){
			rho[i][j][0] = 0.;
			rho[i][j][grid.z+1] = rho[i][j][grid.z-1];
		}
	}
}