/*
* Cooldt cool-down time calculator for multi-layers pipe
*
* Copyright 2010, 2013, 2014, Benjamin DEGLO DE BESSES. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY Benjamin DEGLO DE BESSES "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Benjamin DEGLO DE BESSES OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#include "cooldt.h"
/*
* Check the input data values and return the number of errors if any
*/
int CheckInputData(FILE *fp, char * ErrorMessage, PipeProblem *PP)
{
int i ;
int NumberOfErrors ;
/* Start with code=0 mean no error */
NumberOfErrors = 0 ;
/* Check temperatures consistency */
if ( ! ( (PP->Tinitial > PP->Tambient) && ( PP->Tfinal > PP->Tambient ) && ( PP->Tinitial > PP->Tfinal ) ) )
{
NumberOfErrors++ ;
fprintf(fp, C_ERROR_INVALID_TEMPERATURES) ;
fprintf(fp, "\n") ;
sprintf(ErrorMessage, C_ERROR_INVALID_TEMPERATURES) ;
}
if ( ! ( ( PP->Hout >= 1.0 ) && ( PP->Hout <= 1.0e+5 ) ) )
{
NumberOfErrors++ ;
fprintf(fp, C_ERROR_INVALID_HEAT_COEF) ;
fprintf(fp, "\n") ;
sprintf(ErrorMessage, C_ERROR_INVALID_HEAT_COEF);
}
if ( ! ( ( PP->N >= 1 ) && ( PP->N <= MaxLayerNumber ) ) )
{
NumberOfErrors++ ;
fprintf(fp,C_ERROR_INVALID_NB_LAYER, MaxLayerNumber) ;
fprintf(fp, "\n") ;
sprintf(ErrorMessage,C_ERROR_INVALID_NB_LAYER, MaxLayerNumber) ;
}
/* Check layers data */
for( i=0 ; i <= PP->N ; i++ )
{
/* layer diameters values */
if ( ! ( ( PP->r[i] >= 0.0005 ) && ( PP->r[i] <= 5.0 ) ) )
{
NumberOfErrors++ ;
fprintf(fp, C_ERROR_INVALID_DIAMETER, i) ;
fprintf(fp, "\n") ;
sprintf(ErrorMessage,C_ERROR_INVALID_DIAMETER, i) ;
}
/* layer diameters consistency */
if( i>= 1 )
if ( ! ( PP->r[i] > PP->r[i-1] ) )
{
NumberOfErrors++ ;
fprintf(fp, C_ERROR_DIAMETER_MUST_INCREASES, i-1 , i) ;
fprintf(fp, "\n") ;
sprintf(ErrorMessage, C_ERROR_DIAMETER_MUST_INCREASES, i-1, i) ;
}
/* Layer conductivity */
if ( ! ( ( PP->k[i] >= 0.005 ) && ( PP->k[i] <= 2500.0 ) ) )
{
NumberOfErrors++ ;
fprintf(fp,C_ERROR_INVALID_CONDUCTIVITY, i) ;
fprintf(fp, "\n") ;
sprintf(ErrorMessage, C_ERROR_INVALID_CONDUCTIVITY, i) ;
}
/* Layer density */
if ( ! ( ( PP->d[i] >= 0.1 ) && ( PP->d[i] <= 10000.0 ) ) )
{
NumberOfErrors++ ;
fprintf(fp,C_ERROR_INVALID_DENSITY, i) ;
fprintf(fp, "\n") ;
sprintf(ErrorMessage, C_ERROR_INVALID_DENSITY, i) ;
}
/* Layer heat capacity */
if ( ! ( ( PP->Cp[i] >= 100. ) && ( PP->Cp[i] <= 12000.0 ) ) )
{
NumberOfErrors++ ;
fprintf(fp, C_ERROR_INVALID_HEAT_CAPACITY , i) ;
fprintf(fp, "\n") ;
sprintf(ErrorMessage, C_ERROR_INVALID_HEAT_CAPACITY, i) ;
}
}
return (NumberOfErrors) ;
}
/* End of check-data.c */