Пример #1
0
EXPORT void fprint_vector_of_floats(
	FILE		*file,
	int		number,
	double		*f)
{
	int		i, num;
	static const	int	MAX_FLOATS = 255;

	if (is_binary_output() == YES)
	{
	    while (number > 0)
	    {
	    	num = min(number,MAX_FLOATS);
	    	(void) fprintf(file,"\f%c",num);
	    	(void) fwrite((const void *)f,sizeof(double),num,file);
	    	number -= num;
	    }
	}
	else
	{
	    (void) fprintf(file,"%"FFMT,f[0]);
	    for (i = 1; i < number; i++)
	    	(void) fprintf(file," %"FFMT,f[i]);
	    (void) fprintf(file,"\n");
	}
}		/*end fprint_vector_of_floats*/
Пример #2
0
EXPORT	void fprint_float(
	FILE       *file,
	const char *mesg,
	double      value,
	const char *end)
{
	(void) fprintf(file,"%s",mesg);
	if (is_binary_output() == YES)
	{
	    (void) fprintf(file,"\f%c",1);
	    (void) fwrite((const void *) &value,sizeof(double),1,file);
	}
	else
	    (void) fprintf(file,"%"FFMT,value);
	
	(void) fprintf(file,"%s",end);
}		/*end fprint_float*/
Пример #3
0
EXPORT	void fprint_gas_data(
	FILE		*file,
	Locstate	state)
{
	(void) fprintf(file,"State information for the ");
	if (state == NULL)
	{
	    (void) fprintf(file,"NULL state 0x%p\n\n",(POINTER)state);
	    return;
	}
	if (is_obstacle_state(state)) 
	{
	    (void) fprintf(file,"OBSTACLE state 0x%p\n\n",(POINTER)state);
	    return;
	}
	(void) fprintf(file,"state 0x%p\n",(POINTER)state);
	(void) fprintf(file,"\tState Data ");
	if (is_binary_output() == YES)
	{
	    uint64_t prms;
	    float    *x;
	    int      stype = state_type(state);
	    int      failed = material_failure(state);

	    (void) fprintf(file,"\f%c",(char)Params(state)->sizest);
	    x = &Dens(state);
	    (void) fwrite((const void *)x,FLOAT,2+SMAXD,file);
	    prms = gas_param_number(Params(state));
	    (void) fwrite((const void *)&prms,sizeof(uint64_t),1,file);
	    (void) fwrite((const void *)&stype,sizeof(int),1,file);
	    (void) fwrite((const void *)&failed,sizeof(int),1,file);
#if defined(COMBUSTION_CODE)
	    switch (Composition_type(state))
	    {
	    case ZND:
	    case PTFLAME:
	        (void) fwrite((const void *)pdens(state),FLOAT,1,file);
		break;
	    case TWO_CONSTITUENT_REACTIVE:
	        (void) fwrite((const void *)pdens(state),FLOAT,2,file);
		break;
	    case PURE_NON_REACTIVE:
	    default:
	        break;
	    }
#endif /* defined(COMBUSTION_CODE) */
            if(g_composition_type() == MULTI_COMP_NON_REACTIVE)
            {
                if(Params(state) != NULL &&
                   Params(state)->n_comps != 1)
                {
                    int i;
                    for(i = 0; i < Params(state)->n_comps; i++)
                        (void) fwrite((const void *)&(pdens(state)[i]),FLOAT,1,file);
                }
            }
	    (void) fprintf(file,"\n");
	    return;
	}
	(void) fprintf(file,"\n");
	switch (state_type(state))
	{
	case GAS_STATE:
	    g_fprint_state(file,state);
	    break;

	case EGAS_STATE:
	    g_fprint_Estate(file,state);
	    break;

	case TGAS_STATE:
	    g_fprint_Tstate(file,state);
	    break;

	case FGAS_STATE:
	    g_fprint_Fstate(file,state);
	    break;

	case VGAS_STATE:
	    verbose_fprint_state(file,"",state);
	    break;

	default:
	    screen("ERROR in fprint_gas_data(), "
	           "unknown state type %d\n",state_type(state));
	    clean_up(ERROR);
	}
}		/*end fprint_gas_data*/
Пример #4
0
EXPORT void g_verbose_fprint_state(
	FILE	   *file,
	const char *name,
	Locstate   state)
{
	bool		bin_out;
	int		i, dim;
	float		p, c, S, v[SMAXD], speed;
	static	char	vname[3][3] = { "vx", "vy", "vz"};
	static	char	mname[3][3] = { "mx", "my", "mz"};

	if (name == NULL)
	    name = "";
	(void) fprintf(file,"\n%s:\n",name);
	(void) fprintf(file,"address %p\n",state);
	if (state == NULL || is_obstacle_state(state))
	{
	    (void) fprintf(file,"(OBSTACLE STATE)\n\n");
	    return;
	}
	dim = Params(state)->dim;

	p = pressure(state);
	c = sound_speed(state);
	S = entropy(state);

	(void) fprintf(file,"%-24s = %-"FFMT" %-24s = %-"FFMT"\n",
		       "density",Dens(state),
		       "specific internal energy",
		       specific_internal_energy(state));
	(void) fprintf(file,"%-24s = %-"FFMT" %-24s = %-"FFMT"\n","pressure",p,
		       "sound speed",c);
	(void) fprintf(file,"%-24s = %-"FFMT" %-24s = %-"FFMT"\n","temperature",
		       temperature(state),"specific entropy",S);

	speed = 0.0;
	for (i = 0; i < dim; i++)
	{
	    v[i] = vel(i,state);	speed += sqr(v[i]);
	    (void) fprintf(file,"%-24s = %-"FFMT" %-24s = %-"FFMT"\n",
			   mname[i],mom(i,state),vname[i],v[i]);
	}
	speed = sqrt(speed);

	(void) fprintf(file,"%-24s = %-"FFMT"","total energy",energy(state));
	if (c > 0. && Dens(state) > 0.)
	   (void) fprintf(file," %-24s = %-"FFMT"\n","Mach number",speed / c);
	else
	   (void) fprintf(file,"\n");

#if defined(TWOD)
	if (dim == 2)
	    (void) fprintf(file,"%-24s = %-"FFMT"\n","velocity angle",
			   degrees(angle(v[0],v[1])));
#endif /* defined(TWOD) */


	fprint_state_type(file,"State type = ",state_type(state));
	(void) fprintf(file,"Params state = %llu\n",
		       gas_param_number(Params(state)));

	bin_out = is_binary_output();
	set_binary_output(NO);
	if (debugging("prt_params"))
	    fprint_Gas_param(file,Params(state));
	else
	    (void) fprintf(file,"Gas_param = %llu\n",
		                gas_param_number(Params(state)));
	set_binary_output(bin_out);

	//if(p< -2000 || p>10000)
	//{
	//    printf("#huge pressure\n");
	//    clean_up(0);
	//}
#if !defined(COMBUSTION_CODE)
	(void) fprintf(file,"\n");
#else /* !defined(COMBUSTION_CODE) */
	if (Composition_type(state) == PURE_NON_REACTIVE)
	{
	    (void) fprintf(file,"\n");
	    return;
	}

	(void) fprintf(file,"%-24s = %-12s   %-24s = %-"FFMT"\n","burned",
		       Burned(state) ? "BURNED" : "UNBURNED",
		       "q",Params(state)->q);
	(void) fprintf(file,"%-24s = %-"FFMT"\n","t_crit",
		       Params(state)->critical_temperature);

	if (Composition_type(state) == PTFLAME)
	{
	    (void) fprintf(file,"\n");
	    return;
	}

	(void) fprintf(file,"%-24s = %-"FFMT"\n","product density",Prod(state));
	(void) fprintf(file,"%-24s = %-"FFMT"\n",
		       "reaction progress",React(state));

	if (Composition_type(state) == ZND)
	{
	    (void) fprintf(file,"\n");
	    return;
	}

	(void) fprintf(file,"%-24s = %-"FFMT"\n","rho1",Dens1(state));
#endif /* !defined(COMBUSTION_CODE) */
	(void) fprintf(file,"%-24s = %-24s %-24s = %-"FFMT"\n\n","gamma_set",
		      Local_gamma_set(state)?"YES" : "NO","local_gamma",
		      Local_gamma(state));
        if(g_composition_type() == MULTI_COMP_NON_REACTIVE)
        {
            if(Params(state) != NULL &&
               Params(state)->n_comps != 1)
            {
                for(i = 0; i < Params(state)->n_comps; i++)
                    (void) fprintf(file,"partial density[%2d] = %"FFMT"\n",
                       i,pdens(state)[i]);
                (void) fprintf(file,"\n");
                 /* TMP the following print is for the debuging display purpose */
                for(i = 0; i < Params(state)->n_comps; i++)
                    (void) fprintf(file,"[%d]Mass fraction = %-"FFMT"\n",
                             i, pdens(state)[i]/Dens(state));
                (void) fprintf(file,"\n");
            }
        }
}		/*end g_verbose_fprint_state*/
Пример #5
0
EXPORT	void	fprint_SESAME_params(
	FILE		*file,
	SESAME_EOS	*seos)
{
	bool	bio = is_binary_output();
	(void) fprintf(file,"\tEquation of state = %d SESAME\n",SESAME);
	(void) fprintf(file,"\tsesame library = %s\n",seos->seslib);
	(void) fprintf(file,"\tSesame material index = %d\n",seos->ids2);

	fwrite_float(file,"\tDiscreteness = ",seos->eps,bio,"%"FFMT,"\n");

	(void) fprintf(file,"\tDensity-Temperature window parameters\n");

	fwrite_float(file,"\t    minimum density = ",Rho_min(seos),bio,
		     "%"FFMT" g/cc",", ");
	fwrite_float(file,"maximum density = ",Rho_max(seos),bio,
		     "%"FFMT" g/cc",", ");
	fwrite_float(file,"reference density = ",Rho_ref(seos),bio,
		     "%"FFMT" g/cc","\n");

	fwrite_float(file,"\t    minimum temperature = ",
		     Temp_min(seos),bio,"%"FFMT" K"," ");
	fwrite_float(file,"maximum temperature = ",Temp_max(seos),
		     bio,"%"FFMT" K",", ");
	fwrite_float(file,"\t    reference temperature = ",
		     Temp_ref(seos),bio,"%"FFMT" K","\n");

	fwrite_float(file,"\t    reference sound speed = ",
		     Reference_sound_speed(seos),bio,"%"FFMT" km/sec","\n");

	(void) fprintf(file,"    \tdensity mesh = %d temperature mesh = %d\n",
		Nrho_hyp(seos),Ntemp_hyp(seos));

	fwrite_float(file,"\tAbsolute error = ",seos->abser0,bio,"%"FFMT," ");
	fwrite_float(file,"relative error = ",seos->reler0,bio,"%"FFMT,"\n");

	(void) fprintf(file,"\tPressure Limits\n");
	fwrite_float(file,"\t    minimum pressure = ",
		     Pressure_min(seos),bio,"%"FFMT" GPa",", ");
	fwrite_float(file,"maximum pressure = ",
		     Pressure_max(seos),bio,"%"FFMT" GPa",", ");
	fwrite_float(file,"reference pressure = ",
		     Pressure_ref(seos),bio,"%"FFMT" GPa","\n");

	(void) fprintf(file,"\tEnergy Limits\n");
	fwrite_float(file,"\t    minimum energy = ",
		     Energy_min(seos),bio,"%"FFMT" kJ/g",", ");
	fwrite_float(file,"maximum energy = ",
		     Energy_max(seos),bio,"%"FFMT" kJ/g",", ");
	fwrite_float(file,"reference energy = ",
		     Energy_ref(seos),bio,"%"FFMT" kJ/g","\n");

	(void) fprintf(file,"\tEntropy Limits\n");
	fwrite_float(file,"\t    minimum entropy = ",
		     Entropy_min(seos),bio,"%"FFMT," ");
	fwrite_float(file,"maximum entropy = ",Entropy_max(seos),bio,"%"FFMT,
		     "\n");
	(void) fprintf(file,"\tEntropy grid mapping parameters\n");
	fwrite_float(file,"\t    density-entropy entropy scale = ",
		     RS_entropy_scale(seos),bio,"%"FFMT,"\n");
	fwrite_float(file,"\t    density-entropy entropy shift = ",
		     RS_entropy_shift(seos),bio,"%"FFMT,"\n");
	fwrite_float(file,"\t    pressure-entropy entropy scale = ",
		     PS_entropy_scale(seos),bio,"%"FFMT,"\n");
	fwrite_float(file,"\t    pressure-entropy entropy shift = ",
		     PS_entropy_shift(seos),bio,"%"FFMT,"\n");

	(void) fprintf(file,"\tMultiphase eos = %s\n",
		       (multiphase_eos(seos) == YES) ? "YES" : "NO");
}		/*end fprint_SESAME_params*/
Пример #6
0
EXPORT void fprint_rectangular_grid(
	FILE		*file,
	const RECT_GRID	*grid)
{
	const char* const* Dnm = grid->Remap.Dnm;
	const char* const* dnm = grid->Remap.dnm;
	boolean		b_oput = is_binary_output();
	int		i;
	int		dim;

	if (grid == NULL)
	    return;
	dim = grid->dim;
	(void) fprintf(file,PRINT_GRID_DIMENSION,grid->dim);
	if (b_oput == YES)
	{
	    (void) fprintf(file,"\f%c",0);
	    (void) fprintf(file,"MAXD = %d FLOAT = %d\n",MAXD,(int)FLOAT);
	}
	/* Print grid widths */
	for (i = 0; i < dim; ++i)
	{
	    (void) fprintf(file,"%10s = %-"FFMT"%s",
			        Dnm[i],grid->U[i]-grid->L[i],
			        (i==dim-1) ? "\n" : "              ");
	}

#define print_grid_float(x)						\
	(b_oput == YES) ? (void) fwrite((const void *)&(x),FLOAT,1,file) :\
		   (void) fprintf(file,"%-"FFMT,(x))

	/* Print grid endpoints */
	for (i = 0; i < dim; ++i)
	{
	    (void) fprintf(file,"   %sL = ",Dnm[i]);
	    print_grid_float(grid->L[i]);
	    (void) fprintf(file,"    %sU = ",Dnm[i]);
	    print_grid_float(grid->U[i]);
	    (void) fprintf(file,"%s",(i==dim-1)?"\n":"    ");
	}
	/* Print grid spacings */
	for (i = 0; i < dim; ++i)
	{
	    (void) fprintf(file,"   h%s = ",dnm[i]);
	    print_grid_float(grid->h[i]);
	    (void) fprintf(file,"  %smax = %-10d%s",dnm[i],grid->gmax[i],
	    	                (i==dim-1)?"\n":"    ");
	}
	/* Print global grid endpoints */
	for (i = 0; i < dim; ++i)
	{
	    (void) fprintf(file,"  G%sL = ",Dnm[i]);
	    print_grid_float(grid->GL[i]);
	    (void) fprintf(file,"   G%sU = ",Dnm[i]);
	    print_grid_float(grid->GU[i]);
	    (void) fprintf(file,"%s",(i==dim-1)?"\n":"    ");
	}
	/* Print virtual domain grid endpoints */
	for (i = 0; i < dim; ++i)
	{
	    (void) fprintf(file,"  V%sL = ",Dnm[i]);
	    print_grid_float(grid->VL[i]);
	    (void) fprintf(file,"   V%sU = ",Dnm[i]);
	    print_grid_float(grid->VU[i]);
	    (void) fprintf(file,"%s",(i==dim-1)?"\n":"    ");
	}
	/* Print buffer zone widths in grid units */
	for (i = 0; i < dim; ++i)
	{
	    (void) fprintf(file,"%slbuf = %-10d %subuf = %-10d%s",
	    	                dnm[i],grid->lbuf[i],dnm[i],grid->ubuf[i],
			        (i==dim-1)?"\n":"    ");
	}

	/*TODO Provide printing of variable grid spacings */

#undef print_grid_float
}		/*end fprint_rectangular_grid*/