ftp.nice.ch/pub/next/science/chemistry/WaterC.s.tar.gz#/WaterC/wfront.c

This is wfront.c in view mode; [Download] [Up]

tripleChanged()
{
    switch (triple_select()) {
      case 'g':
         _params_.specs[4] = 0;
	 break;
      default :
      	 _params_.specs[4] = 1;
	 break;
      }
    return;
}

init()
{
    int i;
    
    dataType = TP;
    incData = anError = inFile = NO;
    colNum = outputLength = 1;
    incType = propOut = destination = 0;
    for (i=0;i<25;i++)
      { prop_unit[i] = (char *)malloc(16*sizeof(char)); }
    prop_unit[10] = prop_unit[15] = prop_unit[18] = "";
    fors = stdout;
    return;
}

fixUnits()
{
    switch (_params_.specs[0]) {
       case 1 : strcpy(myunits.temp, "K");
                strcpy(prop_unit[8], "/K");
		strcpy(prop_unit[19], "/K");
		strcpy(prop_unit[21], "/K**2");
		strcpy(prop_unit[22], "/K**2");
		break;
       case 2 : strcpy(myunits.temp, "C");
                strcpy(prop_unit[8], "/C");
		strcpy(prop_unit[19], "/C");
		strcpy(prop_unit[21], "/C**2");
		strcpy(prop_unit[22], "/C**2");
		break;
       case 3 : strcpy(myunits.temp, "R");
                strcpy(prop_unit[8], "/R");
		strcpy(prop_unit[19], "/R");
		strcpy(prop_unit[21], "/R**2");
		strcpy(prop_unit[22], "/R**2");
		break;
       default: strcpy(myunits.temp, "F");
                strcpy(prop_unit[8], "/F");
		strcpy(prop_unit[19], "/F");
		strcpy(prop_unit[21], "/F**2");
		strcpy(prop_unit[22], "/F**2");
		break; }
    switch (_params_.specs[2]) {
       case 1 : strcpy(myunits.pres, "MPa");
                strcpy(prop_unit[9], "/MPa");
		strcpy(prop_unit[20], "/MPa");
		break;
       case 2 : strcpy(myunits.pres, "bar");
                strcpy(prop_unit[9], "/bar");
		strcpy(prop_unit[20], "/bar");
		break;
       case 3 : strcpy(myunits.pres, "atm");
                strcpy(prop_unit[9], "/atm");
		strcpy(prop_unit[20], "/atm");
		break;
       case 4 : strcpy(myunits.pres, "lb/in**2");
                strcpy(prop_unit[9], "in**2/lb");
		strcpy(prop_unit[20], "in**2/lb");
		break;
       default: strcpy(myunits.pres, "kg/cm**2");
                strcpy(prop_unit[9], "cm**2/kg");
		strcpy(prop_unit[20], "cm**2/kg");
		break; }
    switch (_params_.specs[1]) {
       case 1 : strcpy(myunits.dens, "kg/m**3");
                strcpy(myunits.volu, "m**3/kg");
                strcpy(myunits.len, "m");
                strcpy(prop_unit[7], "m/sec");
		strcpy(prop_unit[11], "kg/m sec");
		strcpy(prop_unit[13], "kg/sec**2");
		strcpy(prop_unit[14], "m**2/sec");
		strcpy(prop_unit[16], "m**2/sec");
		break;
       case 2 : strcpy(myunits.dens, "g/cm**3");
                strcpy(myunits.volu, "cm**3/g");
                strcpy(myunits.len, "cm");
                strcpy(prop_unit[7], "cm/sec");
		strcpy(prop_unit[11], "g/cm sec");
		strcpy(prop_unit[13], "g/sec**2");
		strcpy(prop_unit[14], "cm**2/sec");
		strcpy(prop_unit[16], "cm**2/sec");
		break;
       case 3 : strcpy(myunits.dens, "mol/l");
                strcpy(myunits.volu, "l/mol");
                strcpy(myunits.len, "cm");
                strcpy(prop_unit[7], "cm/sec");
		strcpy(prop_unit[11], "mol/cm sec");
		strcpy(prop_unit[13], "mol/sec**2");
		strcpy(prop_unit[14], "cm**2/sec");
		strcpy(prop_unit[16], "cm**2/sec");
		break;
       default: strcpy(myunits.dens, "lb/ft**3");
                strcpy(myunits.volu, "ft**3/lb");
                strcpy(myunits.len, "ft");
                strcpy(prop_unit[7], "ft/sec");
		strcpy(prop_unit[11], "lb/ft sec");
		strcpy(prop_unit[13], "lb/sec**2");
		strcpy(prop_unit[14], "ft**2/sec");
		strcpy(prop_unit[16], "ft**2/sec");
		break; }
    switch (_params_.specs[3]) {
       case 1 : strcpy(myunits.ener, "kJ/kg");
                strcpy(myunits.en, "kJ");
                strcpy(prop_unit[0], "kJ/kg");
		strcpy(prop_unit[1], "kJ/kg");
		strcpy(prop_unit[3], "kJ/kg");
		strcpy(prop_unit[4], "kJ/kg");
		break;
       case 2 : strcpy(myunits.ener, "J/g");
                strcpy(myunits.en, "J");
                strcpy(prop_unit[0], "J/g");
		strcpy(prop_unit[1], "J/g");
		strcpy(prop_unit[3], "J/g");
		strcpy(prop_unit[4], "J/g");
		break;
       case 3 : strcpy(myunits.ener, "J/mol");
                strcpy(myunits.en, "J");
                strcpy(prop_unit[0], "J/mol");
		strcpy(prop_unit[1], "J/mol");
		strcpy(prop_unit[3], "J/mol");
		strcpy(prop_unit[4], "J/mol");
		break;
       case 4 : strcpy(myunits.ener, "cal/g");
                strcpy(myunits.en, "cal");
                strcpy(prop_unit[0], "cal/g");
		strcpy(prop_unit[1], "cal/g");
		strcpy(prop_unit[3], "cal/g");
		strcpy(prop_unit[4], "cal/g");
		break;
       case 5 : strcpy(myunits.ener, "cal/mol");
                strcpy(myunits.en, "cal");
                strcpy(prop_unit[0], "cal/mol");
		strcpy(prop_unit[1], "cal/mol");
		strcpy(prop_unit[3], "cal/mol");
		strcpy(prop_unit[4], "cal/mol");
		break;
       default: strcpy(myunits.ener, "btu/lb");
                strcpy(myunits.en, "btu");
                strcpy(prop_unit[0], "btu/lb");
		strcpy(prop_unit[1], "btu/lb");
		strcpy(prop_unit[3], "btu/lb");
		strcpy(prop_unit[4], "btu/lb");
		break; }
    strcpy(prop_unit[2],myunits.ener);
    strcat(prop_unit[2]," ");
    strcat(prop_unit[2],myunits.temp);
    prop_unit[5] = prop_unit[6] = prop_unit[2];
    strcpy(prop_unit[12],myunits.en);
    strcat(prop_unit[12],"/");
    strcat(prop_unit[12],myunits.len);
    strcat(prop_unit[12]," sec");
    strcpy(prop_unit[17],myunits.pres);
    strcat(prop_unit[17],"/");
    strcat(prop_unit[17],myunits.temp);
    return;
}

doNxOutput(results,rowCond)
char *results;
int rowCond;
{
    char *tempstr;
    int i;

    if (_params_.specs[5] == 1)
      { if (propOut)
          altMatrix = NO;
	else
	  altMatrix = YES; }
    else
      { altMatrix = NO; }  /* default to liq values if no vaps were calculated */
    tempstr = (char *)malloc(80*sizeof(char));
    for (i=0;i<numFunctions;i++)
      { finishRow(tempstr,attributes[i],rowCond);
        strcat(results,tempstr); }
    strcat(results,"\n");
    return;
}

moldOutput()
{
    char *tstr,*results,*errmsg;
    int i,tempOut,matrixSize;
    extern void h2o92();

    if (nxOutput)
      { matrixSize = (((max - min) / incr) + 1)*(((max2 - min2) / incr2) + 1);
	results = (char *)malloc((numFunctions+5)*20*matrixSize*sizeof(char));  /* +5 incl. est. for range error msgs */ }
    else
      results = (char *)malloc(3000*sizeof(char));
    errmsg = (char *)malloc(800*sizeof(char));
    errorIncrement = 0;
    strcpy(results,"");
    strcpy(errmsg,"");
    if (! nxOutput)
      { tstr = (char *)malloc(80*sizeof(char));
        sprintf(results,"Temperature = %6.4g %s Pressure = %6.4g %s \n",_params_.states[0], myunits.temp,_params_.states[1], myunits.pres);
        sprintf(tstr,"density = %8.6g %s \t volume = %8.6g  %s ",_params_.states[2], myunits.dens,(1/_params_.states[2]),myunits.volu);
        strcat(results,tstr);
	if ((dataType == Te) || (dataType == Pr))
	  { strcat(results,"  (Vapor) \n");
	    sprintf(tstr,"density = %8.6g %s \t volume = %8.6g  %s   (Liquid) ",_params_.states[3], myunits.dens,(1/_params_.states[3]),myunits.volu);
	    strcat(results,tstr); }
	strcat(results,"\n");
        sprintf(tstr," viscosity: kinematic  %8.6g  %s ", _values_.props[32], prop_unit[16]);
        strcat(results,tstr);
        sprintf(tstr,"dynamic  %8.6g %s ",_values_.props[22], prop_unit[11]);
        strcat(results,tstr);
	if ((dataType == Te) || (dataType == Pr))
	  { strcat(results,"  (Vapor) \n");
	    sprintf(tstr," viscosity: kinematic %8.6g  %s ", _values_.props[33], prop_unit[16]);
            strcat(results,tstr);
            sprintf(tstr,"dynamic  %8.6g %s   (Liquid)",_values_.props[23], prop_unit[11]);
            strcat(results,tstr); }
	strcat(results,"\n");
        sprintf(tstr," conductivity %8.6g  %s ",_values_.props[24], prop_unit[12]);
        strcat(results,tstr);
        sprintf(tstr,"diffusivity  %8.6g  %s ",_values_.props[28], prop_unit[14]);
        strcat(results,tstr);
	if ((dataType == Te) || (dataType == Pr))
	  { strcat(results,"  (Vapor) \n");
	    sprintf(tstr," conductivity %8.6g  %s ", _values_.props[25], prop_unit[12]);
            strcat(results,tstr);
            sprintf(tstr,"diffusivity  %8.6g %s   (Liquid)",_values_.props[29], prop_unit[14]);
            strcat(results,tstr); }
	strcat(results,"\n");
	if ((dataType == Te) || (dataType == Pr))
	  { strcat(results,"--*-- Format below is: Property  Vapor_Value  Liquid_Value --*--\n"); }
        for( i = 0; i < 11; i++)
           { sprintf(tstr,"%s %8.6g ",properties[i], _values_.props[2*i]);
    	     strcat(results,tstr);
	     if ((dataType == Te) || (dataType == Pr))
	       { sprintf(tstr,"   %8.6g ", _values_.props[(2*i)+1]);
    	         strcat(results,tstr); }
	     sprintf(tstr,"%s \n", prop_unit[i]);
	     strcat(results,tstr);
           }
        sprintf(tstr,"%s %8.6g ", properties[13],_values_.props[26]);
        strcat(results,tstr);
	if ((dataType == Te) || (dataType == Pr))
	  { sprintf(tstr,"  %8.6g ",_values_.props[27]);
            strcat(results,tstr); }
	sprintf(tstr,"%s \n", prop_unit[13]);
	strcat(results,tstr);
	sprintf(tstr,"%s %8.6g ", properties[15],_values_.props[30]);
        strcat(results,tstr);
	if ((dataType == Te) || (dataType == Pr))
	  { sprintf(tstr,"  %8.6g ",_values_.props[31]);
            strcat(results,tstr); }
	sprintf(tstr,"%s \n", prop_unit[15]);
	strcat(results,tstr);
        for (i=17; i <23; i++)
	    { sprintf(tstr,"%s %8.6g ",properties[i], _values_.props[2*i]);
	      strcat(results,tstr);
	      if ((dataType == Te) || (dataType == Pr))
	        { sprintf(tstr,"  %8.6g ",_values_.props[(2*i)+1]);
                  strcat(results,tstr); }
	      sprintf(tstr,"%s \n", prop_unit[i]);
	      strcat(results,tstr);
	    }
       }
    else  /* user has asked for column output or NeXTContour friendly files */
       { doNxOutput(results,0);
         if (! incData)
           { doNxOutput(results,1); }
	 else
	   { do {
	       current = min;
	       do {
	          if (dataType != Pr)
		    { _params_.states[0] = current;
		      switch (incType) {
	                case 0:  _params_.states[1] = current2; break;
	                default: _params_.states[2] = current2; break; } } 
		  else { _params_.states[1] = current2; }
/* the following line is for the case where incremental crosses a 2 phase surface, if it were
  not included in the code, the incremental would end up following the surface instead of following
  the originally specified user increments. */
		  if ((dataType == TD) || (dataType == TP)) { _params_.specs[5] = 0; }
                  h2o92(_params_.specs,_params_.states,_values_.props,&_params_.error);
		  if (_params_.error) {
		     tstr = (char *)malloc(80*sizeof(char));
		     if (! errorIncrement)
		       { sprintf(errmsg,"\n\n The following T-P-D values were out of range; no values could be computed. \n");
		         errorIncrement = 1; }
   	             sprintf(tstr,"Temperature = %6.4g %s ! Pressure = %6.4g %s ! Density = %6.4g %s \n",_params_.states[0], myunits.temp, _params_.states[1], myunits.pres, _params_.states[2], myunits.dens);
		     strcat(errmsg,tstr);
		     _params_.error = 0; } 
		  else { doNxOutput(results,1); }
		  current += incr; }
	       while (current <= max);
	       current2 += incr2; }
	    while (current2 <= max2); }
	  strcat(results,errmsg); }
    fprintf(fors,"%s",results);
    return;
}

penultima()
{
	if (dataType == Te) 
	  { _params_.specs[5] = 1; _params_.specs[6] = 1; _params_.states[0] = current; return;}
	else { if (dataType == Pr)
	  { _params_.specs[5] = 1; _params_.specs[6] = 2; _params_.states[1] = current; return;} }
	_params_.specs[5] = 0;
        if (dataType)
	  _params_.specs[6] = 2;
	else
	  _params_.specs[6] = 1;
    	switch (initialType) {
	  case 0:
	    current = min = max = incr = current2 = max2 = min2 = incr2 = 50;
	    break;
	  case 1:
	    if (dataType)
	      _params_.states[1] = min;
	    else 
	      _params_.states[2] = min;
	    current2 = max2 = min2 = incr2 = 50;
	    break;
	  case 2:
	    _params_.states[0] = min;
	    current2 = max2 = min2 = incr2 = 50;
	    break;
	  case 3:
	    _params_.states[0] = min;
	    if (dataType)
	      _params_.states[1] = min2;
	    else 
	      _params_.states[2] = min2;
	    break; }
}

goGo()
{
    char *errmsg;
    extern void h2o92();
    int i, currIt;

    penultima();
    fixUnits();
    for(numFunctions=0;attributes[numFunctions];numFunctions++);
    errmsg = (char *)malloc(800*sizeof(char));
    sprintf(errmsg,"");
    if ((incData) && (! nxOutput))
      { strcat(errmsg,"Incremented data output was selected, but column attributes were not specified. \nMake sure Use nxyPlot Format is selected and columns are attributed. \n");
	anError = YES; }
    if (incData && ((incr == 0.0) || (max < min) || (max2 < min2) || (incr2 == 0.0)))
      { strcat(errmsg,"Incremented data output was selected, but the specified parameters do not make sense. \n");
        anError = YES; }
    if (anError)
      { printf("\n * * * Error * * * \n %s \n",errmsg);
      }
    else {
      if (! incData) {
       currIt = 0;
       do {
	  if (inFile) {
	    fscanf(fil1,"%e %e",&ttmp,&PDtemp);
	    _params_.states[0] = (double)ttmp;
	    if (dataType)
	      _params_.states[1] = (double)PDtemp;
	    else _params_.states[2] = (double)PDtemp; }
	  h2o92(_params_.specs,_params_.states,_values_.props,&_params_.error);
          if (_params_.error) {
	       if (dataType == TD)
	         { sprintf(pressdens,"density   ");
		   pdens = 2;
		   sprintf(pdunits,"%s",myunits.dens); }
	       else { sprintf(pressdens,"pressure ");
	              pdens = 1;
		      sprintf(pdunits,"%s",myunits.pres); }
   	       sprintf(errmsg,"State out of range; please check.\n\nTemperature = %6.4g %s %s = %6.4g %s \n",_params_.states[0], myunits.temp,pressdens, _params_.states[pdens], pdunits);
	       printf("\n * * * Error * * * \n %s \n",errmsg);
 	       _params_.error = 0;
              }
          else { moldOutput(); } 
	  currIt++; }  
	 while (inFile && (currIt < numData));}
      else { moldOutput(); }
    }
    if (anError)
      anError = NO;
    if (inFile)
      { fclose(fil1);
        inFile = NO; }
    if (fors != stdout)
     { fclose(fors);
       printf("\n **Output went to file as specified** \n"); }
    return;
}

finishRow(tempstr,Attribute,rowCond)
char *tempstr;
int Attribute,rowCond;
{
    switch (Attribute) {
        case 0: switch (rowCond) {
		  case 0: sprintf(tempstr,""); break;
		  default: sprintf(tempstr,""); break; }
		break;
        case 1: switch (rowCond) {
		  case 0: sprintf(tempstr,"volume   %8s ",myunits.volu); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",(1/_params_.states[2])); break;
				 case 1: sprintf(tempstr,"  %.7e   ",(1/_params_.states[2])); break;
				 default: sprintf(tempstr," %.10e ",(1/_params_.states[2])); break; }
			       break; }
			   else
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",(1/_params_.states[3])); break;
				 case 1: sprintf(tempstr,"  %.7e   ",(1/_params_.states[3])); break;
				 default: sprintf(tempstr," %.10e ",(1/_params_.states[3])); break; }
			       break; } break; }
		break;
        case 2: switch (rowCond) {
		  case 0: sprintf(tempstr,"Helmholtz %7s ",prop_unit[0]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[0]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[0]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[0]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[1]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[1]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[1]); break; }
			       break; } break; }
		break;
        case 3: switch (rowCond) {
		  case 0: sprintf(tempstr,"Gibbs     %7s ",prop_unit[1]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[2]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[2]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[2]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[3]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[3]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[3]); break; }
			       break; } break; }
		break;
        case 4: switch (rowCond) {
		  case 0: sprintf(tempstr,"Entropy %9s ",prop_unit[2]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[4]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[4]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[4]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[5]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[5]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[5]); break; }
			       break; } break; }
		break;
        case 5: switch (rowCond) {
		  case 0: sprintf(tempstr,"Int Ener  %7s ",prop_unit[3]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[6]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[6]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[6]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[7]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[7]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[7]); break; }
			       break; } break; }
		break;
        case 6: switch (rowCond) {
		  case 0: sprintf(tempstr,"Enthalpy  %7s ",prop_unit[4]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[8]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[8]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[8]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[9]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[9]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[9]); break; }
			       break; } break; }
		break;
        case 7: switch (rowCond) {
		  case 0: sprintf(tempstr,"Cv      %9s ",prop_unit[5]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[10]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[10]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[10]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[11]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[11]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[11]); break; }
			       break; } break; }
		break;
        case 8: switch (rowCond) {
		  case 0: sprintf(tempstr,"Cp      %9s ",prop_unit[6]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[12]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[12]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[12]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[13]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[13]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[13]); break; }
			       break; } break; }
		break;
        case 9: switch (rowCond) {
		  case 0: sprintf(tempstr,"Velocity   %6s ",prop_unit[7]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[14]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[14]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[14]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[15]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[15]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[15]); break; }
			       break; } break; }
		break;
        case 10: switch (rowCond) {
		  case 0: sprintf(tempstr,"alpha          %2s ",prop_unit[8]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[16]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[16]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[16]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[17]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[17]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[17]); break; }
			       break; } break; }
  		 break;
        case 11: switch (rowCond) {
		  case 0: sprintf(tempstr,"beta     %8s ",prop_unit[9]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[18]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[18]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[18]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[19]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[19]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[19]); break; }
			       break; } break; }
		 break;
        case 12: switch (rowCond) {
		  case 0: sprintf(tempstr,"Dielectric%7s ",prop_unit[10]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[20]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[20]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[20]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[21]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[21]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[21]); break; }
			       break; } break; }
		 break;
        case 13: switch (rowCond) {
		  case 0: sprintf(tempstr,"KinVis.%10s ",prop_unit[16]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[32]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[32]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[32]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[33]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[33]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[33]); break; }
			       break; } break; }
		 break;
        case 14: switch (rowCond) {
		  case 0: sprintf(tempstr,"DynVic.%10s ",prop_unit[11]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[22]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[22]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[22]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[23]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[23]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[23]); break; }
			       break; } break; }
		 break;
        case 15: switch (rowCond) {
		  case 0: sprintf(tempstr,"Cond.  %10s ",prop_unit[12]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[24]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[24]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[24]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[25]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[25]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[25]); break; }
			       break; } break; }
		 break;
        case 16: switch (rowCond) {
		  case 0: sprintf(tempstr,"Diffus.%10s ",prop_unit[14]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[28]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[28]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[28]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[29]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[29]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[29]); break; }
			       break; } break; }
		 break;
        case 17: switch (rowCond) {
		  case 0: sprintf(tempstr,"SurTen %10s ",prop_unit[13]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[26]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[26]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[26]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[27]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[27]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[27]); break; }
			       break; } break; }
		  break;
        case 18: switch (rowCond) {
		  case 0: sprintf(tempstr,"Prandtl%10s ",prop_unit[15]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[30]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[30]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[30]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[31]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[31]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[31]); break; }
			       break; } break; }
	          break;
        case 19: switch (rowCond) {
		  case 0: sprintf(tempstr,"al/bet %10s ",prop_unit[17]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[34]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[34]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[34]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[35]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[35]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[35]); break; }
			       break; } break; }
		 break;
        case 20: switch (rowCond) {
		  case 0: sprintf(tempstr,"ZBorn  %10s ",prop_unit[18]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[36]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[36]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[36]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[37]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[37]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[37]); break; }
			       break; } break; }
		 break;
        case 21: switch (rowCond) {
		  case 0: sprintf(tempstr,"YBorn          %2s ",prop_unit[19]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[38]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[38]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[38]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[39]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[39]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[39]); break; }
			       break; } break; }
		 break;
        case 22: switch (rowCond) {
		  case 0: sprintf(tempstr,"QBorn    %8s ",prop_unit[20]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[40]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[40]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[40]); break; }
			       break; }
			   else { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[41]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[41]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[41]); break; }
			       break; } break; }
		 break;
        case 23: switch (rowCond) {
		  case 0: sprintf(tempstr,"d(alpha)/dT    %2s ",prop_unit[21]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[42]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[42]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[42]); break; }
			       break; }
			   else { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[43]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[43]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[43]); break; }
			       break; } break; }
		 break;
        case 24: switch (rowCond) {
		  case 0: sprintf(tempstr,"XBorn          %2s ",prop_unit[22]); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[44]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[44]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[44]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_values_.props[45]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_values_.props[45]); break;
				 default: sprintf(tempstr," %.10e ",_values_.props[45]); break; }
			       break; } break; }
		 break;
        case 25: switch (rowCond) {
		  case 0: sprintf(tempstr,"Temperature     %1s ",myunits.temp); break;
		  default: { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_params_.states[0]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_params_.states[0]); break;
				 default: sprintf(tempstr," %.10e ",_params_.states[0]); break; }
			       break; } break; }
		 break;
        case 26: switch (rowCond) {
		  case 0: sprintf(tempstr,"Pressure %8s ",myunits.pres); break;
		  default: { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_params_.states[1]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_params_.states[1]); break;
				 default: sprintf(tempstr," %.10e ",_params_.states[1]); break; }
			       break; } break; }
		 break;
        default: switch (rowCond) {
		  case 0: sprintf(tempstr,"Density   %7s ",myunits.dens); break;
		  default: if (! altMatrix)
		             { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_params_.states[2]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_params_.states[2]); break;
				 default: sprintf(tempstr," %.10e ",_params_.states[2]); break; }
			       break; }
			   else 
			     { switch(outputLength) {
			         case 0: sprintf(tempstr,"    %.4e    ",_params_.states[3]); break;
				 case 1: sprintf(tempstr,"  %.7e   ",_params_.states[3]); break;
				 default: sprintf(tempstr," %.10e ",_params_.states[3]); break; }
			       break; } break; }
		 break;
      }
    return;
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.