diff --git a/processing/pre/FromEBSD/Hex2Cub.cpp b/processing/pre/FromEBSD/Hex2Cub.cpp new file mode 100644 index 000000000..e0ec3f581 --- /dev/null +++ b/processing/pre/FromEBSD/Hex2Cub.cpp @@ -0,0 +1,205 @@ +#include +#include +#include +#include +#include + +struct +{ + float phi1, Phi, phi2; + float ci, iq, fit, avgIQ; + int phase, ds; +} data[3000][3000]; + +int round2( double x ) +{ + double fl, ce; + + fl = floor( x ); + ce = ceil( x ); + if( fabs( fl-x ) < fabs( ce-x ) ) + return fl; + else + return ce; +} + +char lineBuffer[200]; + +int ReadFileInfo(FILE *oimStream, int *xmax, int *ymax, double *stepSize ) +{ + double x, y, dxmax; + long count; + + *stepSize = 0; + dxmax = 0; + *xmax = 0; + + while( fgets( lineBuffer, 200, oimStream ) != NULL ) + { + if( lineBuffer[0] == '#' ) + { + if( strcmp( lineBuffer, "# GRID: SqrGrid" ) == 0 ) + { + printf("\nThe file is already a square grid file.\nProgram terminated."); + return 0; + } + count = 0; + continue; + } + if( sscanf( lineBuffer, "%*lf %*lf %*lf %lf %lf %*lf %*lf %*i %*i %*lf %*lf", &x, &y ) != 2 ) + return 0; + if( *stepSize == 0 && x != 0 ) + *stepSize = x; + if( x > dxmax ) + { + dxmax = x; + (*xmax)++; + } + count++; + } + (*xmax)++; + *ymax = (int)(count / *xmax ); + + return 1; +} + + +int main(int argc, char* argv[]) +{ + int xx, yy, zz, xlimit, ylimit, zlimit, xlimitOut, xOut; + double stepSize; + char zFilename[50], zOutFilename[50], filename[50]; + FILE *inStream, *outStream; + int zStartNumber, zEndNumber; + + printf( "\nFilenames must have the format ""root_xxx.ang""" + "\nwith xxx indicating a 3-digit integer" + "\nEnter oim map filename-root, the start integer and the end integer number of the files: " ); + + scanf( "%s %i %i", filename, &zStartNumber, &zEndNumber ); + zlimit = zEndNumber-zStartNumber+1; + + //read the first data file and get all necessary start data + sprintf( zFilename, "%s_%03i.ang", filename, zStartNumber ); + if( (inStream = fopen( zFilename, "r" )) == NULL ) + { + printf( "\nCan't open %s", zFilename ); + exit( 1 ); + } + if( ReadFileInfo( inStream, &xlimit, &ylimit, &stepSize ) == 0 ) + { + printf( "\nWrong file format in %s", filename ); + exit( 1 ); + } + fclose( inStream ); + + for( zz=0; zz\n[SX]\ntype isostrain\nNgrains 1 \n\n\n') +file_out2 = open(sys.argv[1]+'_material.config_pt2','w') +file_out2.write('\n') +data=array.array('f',[0.0,0.0,0.0]) +resY = 1 +resX = 0 +dimX = 0.0 +dimY = 0.0 +i=0 +for line in file_in: + if line[0]!='#': + i = i +1 + data[0] = float(re.findall('\S*',str(line))[0])/2.0/math.pi*360.0 + data[1] = float(re.findall('\S*',str(line))[2])/2.0/math.pi*360.0 + data[2] = float(re.findall('\S*',str(line))[4])/2.0/math.pi*360.0 + phasef = float(re.findall('\S*',str(line))[20]) + if phasef>10000.0: + phase=1 + else: + phase=2 + if float(re.findall('\S*',str(line))[6]) < dimX: + dimX=0.0 + resX=1 + resY= resY + 1 + else: + resX=resX+1 + dimX = float(re.findall('\S*',str(line))[6]) + file_out.write('[Grain'+str(i)+']\ncrystallite 1\n(constituent)'+\ + ' phase '+str(phase)+' texture '+str(i)+' fraction 1.0\n') + file_out2.write('[Grain'+str(i)+']\n(gauss) phi1 '+str(data[0])+\ + ' Phi '+str(data[1])+' phi2 '+str(data[2])+' scatter 0.0 fraction 1.0\n') +dimY = float(re.findall('\S*',str(line))[8]) +dimZ = min(dimX/resX,dimY/resY) +file_out3 = open(sys.argv[1]+'.geom','w') +file_out3.write('resolution x '+str(resX)+' y '+str(resY)+' z 1 \ndimension a '+str(dimX)+' b '+str(dimY)+' c '+str(dimZ)+'\nhomogenization 1\n') +for x in xrange(resX*resY): + file_out3.write(str(x+1)+'\n') diff --git a/processing/pre/patchFromReconstructedBoundaries b/processing/pre/FromEBSD/patchFromReconstructedBoundaries old mode 100755 new mode 100644 similarity index 100% rename from processing/pre/patchFromReconstructedBoundaries rename to processing/pre/FromEBSD/patchFromReconstructedBoundaries