-
Notifications
You must be signed in to change notification settings - Fork 0
Microstructure Builder (mbuilder) developed at Carnegie Mellon University
License
tuks188/mbuilder
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
CA Builder Version X.X Installation ------------------------------ 1. Download the file cabuilder.tgz and copy it into a new directory 2. Uncompress and unzip it with %tar -zxvf cabuilder.tar.gz Once this is done you should have a directory in the working directory called "cabuilder". This will contain the following file structure. ./ANG_FILE_STORAGE/ --> storage bin for texture files ./DOCS/ --> PDF's on basic Paraview operations ./OUTPUT_FILES/ --> all resultant files from running msbuilder ./ORIG_SRC/ --> contains all the original source code in the event you accidentally delete a file. ./ annealfinal.c odfextract_final.cxx RodToE.c bimodal.pl makePeriodic.c myCA.f mdfextract_final.cxx stat3d.f90 RodToE_wts.c README AUTHORS COPYING ChangeLog symop.txt mat.symm.cubic NEWS generate-3d.sh ellipticalFoam.c MC_mdf_check.f MCconvert2paraview.f mt19937-64.c mt64.h rod2eul.f bell_curve.pl recursiveSampler.pl wts2ang.f90 Compiling ------------------------------------- In order to build the MS package, your system must contain a few basic compilers and math libraries. 1. GNU Compiler Collection (Free) 2. Fortran 90/95 compiler (g95** or gfortran are FREE) 3. LAPACK Libraries (Free) 4. PERL (built-in) **We have included the G95 compiler in the directory ORIG_SRC/ for your convenience. If any of these are missing, the package will not build correctly. A. First, you must edit the Makefile macros and define the correct compilers Defaults: FC = g95 CC = gcc CXX = g++ B. type 'make clean' to remove any existing binaries and object files. C. type 'make' to build the executables KNOWN ISSUES If the libraries, g2c and lapack, are not in standard locations (i.e. /usr/lib/), then you will need to explicitly define their locations with the FLIBS macro in the Makefile Ex: To find the location of libg2c.so use a syntax such as $ find /usr -name "libg2c*" -print /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/libg2c.a /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/libg2c.so /usr/lib/libg2c.so.0.0.0 /usr/lib/libg2c.so.0 Then in the Makefile, add an -L/DIR/ compiler flag FLIBS = -llapack -lg2c -L/usr/lib/gcc-lib/i386-redhat-linux Runtime ------------------------------ In order to generate a specific geometry, it is important for the user to know some basic parameters, which include but are not limited to: Grain Morphology (i.e. Equiaxed, Columnar) Grain Size Distribution Grain ODF and MDF (determined from ANG file or grain files type #1) Number of Grains Micron to Pixel Ratio (length scale ratios) Box Dimensions 1. A user may place any number of ANG or Grain Files type #1 in the ANG_FILE_STORAGE directory. This serves as a bin from which the experimental ODF and MDF will be generated. Since the texture is averaged over the total number of ANG files, the programs have been modified to batch process all the files. It is important for the ANG or GF#1 files to be CORRECTLY rotated prior to running this software package; hence, the batch mode expects the rotation matrix to be the identity matrix. How is this corrected? Simply rotate results in TSL until the TSL reference axes and the true specimen axes are in alignment (i.e. RD of microscope matches the RD of the specimen, TD of the microscope matches the TD of the speciment, etc.) (ANG and Grain File Type 1 are data files obtained from Orientation Imaging Microscopy, specifically the TSL OIM Analysis software). 2. What box size are you interested in constructing? It has been tested up to a 400 x 400 x 400 system. How many grains are desired? Based on this input, the average initial grain size can be determined. It will ask you if the values are acceptable before proceeding. The ratio micron/pixel defines the unit dimensions. a) BIMODAL.PL - this perl script is responsible for defining the shape aspect ratios. If you want a pancake or elongated grains, this is the file of choice <example> For equiaxed grains, sub smallAxes { return(0.030+rand()*0.050,0.030+rand()*0.050,0.030+rand()*0.050); } sub bigAxes { return(0.03+rand()*0.05,0.03+rand()*0.05,0.030+rand()*0.05); } In the event, you want elongated grains, change the above lines to sub smallAxes { return(0.030+rand()*0.050,0.030+rand()*0.050,0.30+rand()*0.050); } sub bigAxes { return(0.03+rand()*0.05,0.03+rand()*0.05,0.30+rand()*0.05); } to generate an equiaxed structure, having radius 3% of the boxsize, instead of the cigar shaped grains which will have one of the axes 10 times the other two. b) Bell_Curve.pl -- similar to bimodal.pl except it more closely resembles the log-normal grain size distribution observed in experiment. The spread can be modified by editing the file. 3. type './generate-3d.sh' to execute the script. i. Checks to make sure all executables and scripts are in folder ii. Generates nuclei centers in a box and shape aspect ratios in the 3 orthogonal directions (x,y,z) using recursiveSampler and ellipticalFoam (edit bimodal.pl or bell_curve.pl prior to running the generate-3d.sh script) iii. Grows a microstructure using a Cellular Automaton method. Asks about periodicity and box dimensions. iv. Calculates Ellipsoid statistics (semi-axes, orientation) and neighborhood for each unique grain v. Generates an averaged MDF and ODF from the supplied files located in directory ANG_FILE_STORAGE vi. Performs simulated annealing to fit the experimental ODF and MDF to the theoretical ODF and MDF using a stochastic approach. vii. Generates a texture file with crystallographic orientations phi1,PHI,phi2 corresponding to a unique grain ID. viii. Analyzes new digital microstructure and outputs an MDF (frequency vs. theta) and a weights file for POPLA. The end result is a discrete microstructure and a texture file, which closely reproduces the experimentally observed geometric and orientation characteristics of the physical material. The files will be placed in a new folder with the current date and is located under OUTPUT_FILES/ . A brief list of the important files: a. EAorts.txt --> orientation and corresponding spin ID b. ellipsoid.yourCA.ph --> discrete 3D microstructure c. texin1 --> weighted orientation file for rex3d package d. rodf.txt --> annealed ODF in homochoric space e. evodf.txt --> experimental ODF in homochoric space based on ANG files f. rmdf.txt --> annealed MDF in homochoric space g. evmdf.txt --> experimental MDF in homochoric space based on ANG files h. cellIdealization.xml --> geometric statistics for each grain i. orts.txt --> grain orientations in Rodrigues space j. orts.wts --> grain orientations weighted by volume k. ellipsoid.cells --> ellipsoid cell centers and growth rates along x,y,z l. active.list --> ellipsoid nuclei (Active) and cell centers (inactive) DIGITAL MICROSTRUCTURE VISUALIZATION -------------------------------------------------- Our computational group focuses on visualization of our data structures using the open-source software package, PARAVIEW. www.paraview.org The software is free for download and is stable on all platforms including Windows, Linux, and Mac. A Fortran source code, MCconvert2Paraview.f, has been included in this package to easier convert the 3D discrete microstructure into a format suitable for visualization using Paraview. When compiling the package, an executable mc2pv should be created. To convert the ellipsoid.yourCA.ph photo file to a Paraview format, simply type: ./mc2pv ellipsoid.yourCA.ph The end result is a (.raw) format which can be directly opened in Paraview. For instructions on using Paraview, please refer to the PDF's located under the DOCS/ directory. REX3D USERS ------------------------- The Potts-based Monte Carlo package, rex3d, can use the files as input into the model. 1. Copy ellipsoid.yourCA.ph into a file called micro.input 2. Copy the newly created micro.input and texin1 file to the directory where the executable, rex3d, resides. 3. Don't forget to define the Q and Q2 values in common.h *** Remember, you must use the correct version of init.f to read the micro.input *** and if anistropic grain boundary properties are turned on, you must use *** prep_EandM.f
About
Microstructure Builder (mbuilder) developed at Carnegie Mellon University
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published