JCPDS Class

This page was created by the IDL library routine mk_html_help. For more information on this routine, refer to the IDL Online Help Navigator or type:

     ? mk_html_help

at the IDL command line prompt.

Last modified: Thu Apr 18 11:52:38 2013.


List of Routines


Routine Descriptions

JCPDS::COMPUTE_D

[Next Routine] [List of Routines]
 NAME:
       JCPDS::COMPUTE_D

 PURPOSE:
       This procedure computes the D spacings of the material.
       It can compute D spacings at different pressures and temperatures.

 CATEGORY:
       MCA object library

 CALLING SEQUENCE:
       jcpds->COMPUTE_D, pressure, temperature

 OPTIONAL INPUTS:
       Pressure:    The pressure in GPa.  If not present then the pressure is
                    assumed to be 0.
       Temperature: The temperature in K.  If not present or zero, then the
                    temperature is assumed to be 298K, i.e. room temperature.

 OUTPUTS:
       None.  The D spacing information in the JCPDS object is calculated.

 PROCEDURE:
       This procedure first calls 
       JCPDS::COMPUTE_VOLUME.
       It then assumes that each lattice dimension fractionally changes by
       the cube root of the fractional change in the volume.
       Using the equations for the each symmetry class it then computes the
       change in D spacing of each reflection.

 EXAMPLE:
       Compute the D spacings of alumina at 100 GPa and 2500 K.
       jcpds = obj_new('JCPDS')
       jcpds->read_file,  'alumina.jcpds'
       jcpds->compute_d, 100, 2500
       r = jcpds->get_reflections()
       Print out the D spacings at ambient conditions
       print, r.d0
       Print out the D spacings at high pressure and temperature
       print, r.d

 MODIFICATION HISTORY:
       Written by:     Mark Rivers, April 8, 2000.

(See jcpds__define.pro)


JCPDS::COMPUTE_V0

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       JCPDS::COMPUTE_V0

 PURPOSE:
       This procedure computes the unit cell volume of the material at zero
       pressure and temperature from the unit cell parameters.

 CATEGORY:
       MCA object library

 CALLING SEQUENCE:
       jcpds->COMPUTE_V0

 OUTPUTS:
       None.  The V0 information in the JCPDS object is calculated.

 PROCEDURE:
       This procedure computes the unit cell volume from the unit cell
       parameters.

 EXAMPLE:
       Compute the zero pressure and temperature unit cell volume of alumina
       jcpds = obj_new('JCPDS')
       jcpds->read_file,  'alumina.jcpds'
       jcpds->compute_V0

 MODIFICATION HISTORY:
       Written by:     Mark Rivers, May 22, 2000

(See jcpds__define.pro)


JCPDS::COMPUTE_VOLUME

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       JCPDS::COMPUTE_VOLUME

 PURPOSE:
       This procedure computes the unit cell volume of the material.
       It can compute volumes at different pressures and temperatures.

 CATEGORY:
       MCA object library

 CALLING SEQUENCE:
       jcpds->COMPUTE_VOLUME, pressure, temperature

 OPTIONAL INPUTS:
       Pressure:    The pressure in GPa.  If not present then the pressure is
                    assumed to be 0.
       Temperature: The temperature in K.  If not present or zero, then the
                    temperature is assumed to be 298K, i.e. room temperature.

 OUTPUTS:
       None.  The volume information in the JCPDS object is calculated.

 PROCEDURE:
       This procedure computes the unit cell volume.  It starts with the
       volume read from the JCPDS file or computed from the zero-pressure,
       room temperature lattice constants.  It does the following:
           1) Corrects K0 for temperature if DK0DT is non-zero.
           2) Computes volume at zero-pressure and the specified temperature
              if ALPHAT is non-zero.
           3) Computes the volume at the specified pressure if K0 is non-zero.
              The routine uses the IDL function FX_ROOT to solve the third
              order Birch-Murnaghan equation of state. 

 EXAMPLE:
       Compute the unit cell volume of alumina at 100 GPa and 2500 K.
       jcpds = obj_new('JCPDS')
       jcpds->read_file,  'alumina.jcpds'
       jcpds->compute_volume, 100, 2500

 MODIFICATION HISTORY:
       Written by:     Mark Rivers, April 8, 2000.  Original work by Tom
                       Duffy.  Ideas from Dan Shim.
       31-May-2000 MLR Issue warning if K0 is 0, but return 0 pressure volume
       06-Sep-2000 MLR Change to Anderson thermal pressure EOS for high P+T
       27-Feb-2001 MLR Add support for dk0pdt and dalphadt.
       13-Mar-2001 MLR Put addtional sanity check (f ge 0.) in BM solver.  
       17-Mar-2001 MLR Replaced home-grown solver for BM equation of state
                       with IDL FX_ROOT function.  It is much faster, 
                       more accurate, and more robust.

(See jcpds__define.pro)


JCPDS::GET_REFLECTIONS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       JCPDS::GET_REFLECTIONS

 PURPOSE:
       This function returns the information for each reflection for the
       material.  This information is an array of structures of type
       {JCPDS_REFLECTION}.

 CATEGORY:
       MCA object library

 CALLING SEQUENCE:
       r = jcpds->GET_REFLECTIONS()

 OUTPUTS:
       This function returns an array of structures of type
       {JCPDS_REFLECTION}.  The current definition of this structure is:
       {JCPDS_REFLECTION, $
           d0:    0., $  ; The lattice spacing at 0 pressure and 298K
           d:     0., $  ; The lattice spacing computed by JCPDS::COMPUTE_D,
                         ; at pressure and temperature.
           inten: 0., $  ; The relative intensity of this reflection
           h:     0, $   ; The lattice index H
           k:     0, $   ; The lattice index K
           l:     0 $    ; The lattice index L
       }
       Note that the definition of this structure may change in the future,
       but these fields are guaranteed to always exist.

       If there are no reflections present in this JCPDS object (for example,
       if JCPDS::READ_FILE has not yet been called) then this function returns
       -1.

 PROCEDURE:
       This function simply returns the array of JCPDS_REFLECTION structures
       from the JCPDS object.

 EXAMPLE:
       Compute the D spacings of alumina at 100 GPa and 2500 K.
       jcpds = obj_new('JCPDS')
       jcpds->read_file,  'alumina.jcpds'
       jcpds->compute_d, 100, 2500
       r = jcpds->get_reflections()
       Print out the D spacings at ambient conditions
       print, r.d0
       Print out the D spacings at high pressure and temperature
       print, r.d

 MODIFICATION HISTORY:
       Written by:     Mark Rivers, April 8, 2000.

(See jcpds__define.pro)


JCPDS::READ_FILE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       JCPDS::READ_FILE

 PURPOSE:
       This procedure reads a JCPDS file into the JCPDS object.

 CATEGORY:
       MCA object library

 CALLING SEQUENCE:
       jcpds->READ_FILE, file

 INPUTS:
       File:  The name of the file to read.

 OUTPUTS:
       None.  The file is read into the JCPDS object itself.

 PROCEDURE:
       This procedure read the JCPDS file.  There are several versions of the
       formats used for JCPDS files.  Versions 1, 2 and 3 used a fixed
       format, where a particular entry had to be in a specific location on
       a specific line.  Versions 2 and 3 were used only by Dan Shim.
       This routine can read these old files, but no new files should be
       created in this format, they should be converted to Version 4.
       Version 4 is a "keyword" driven format.  Each line in the file is of
       the form:
       KEYWORD: value
       The order of the lines is not important, except that the first line of
       the file must be "VERSION: 4".
       The following keywords are currently supported:
           COMMENT:    Any information describing the material, literature
                       references, etc.  There can be multiple comment lines
                       per file.
           K0:         The bulk modulus in GPa.
           K0P:        The change in K0 with pressure, for Birch-Murnaghan
                       equation of state.  Dimensionless.
           DK0DT:      The temperature derivative of K0, GPa/K.
           DK0PDT:     The temperature derivative of K0P, 1/K.
           SYMMETRY:   One of CUBIC, TETRAGONAL, HEXAGONAL, RHOMBOHEDRAL,
                       ORTHORHOMBIC, MONOCLINIC or TRICLINIC
           A:          The unit cell dimension A
           B:          The unit cell dimension B
           C:          The unit cell dimension C
           ALPHA:      The unit cell angle ALPHA
           BETA:       The unit cell angle BETA
           GAMMA:      The unit cell angle GAMMA
           VOLUME:     The unit cell volume
           ALPHAT:     The thermal expansion coefficient, 1/K
           DALPHADT:   The temperature derivative of the thermal expansion
                       coefficient, 1/K^2
           DIHKL:      For each reflection, the D spacing in Angstrom, the
                       relative intensity (0-100), and the H, K, L indices.

       This procedure calculates the D spacing of each relfection, using the
       symmetry and unit cell parameters from the file.  It compares the
       calculated D spacing with the input D spacing for each line.  If they
       disagree by more than 0.1% then a warning message is printed.
       The following is an example JCPDS file in the Version 4 format:
           VERSION:  4
           COMMENT: Alumina (JCPDS 0-173, EOS n/a)
           K0:          194.000
           K0P:           5.000
           SYMMETRY: HEXAGONAL
           A:            4.758
           C:            12.99
           VOLUME:        22.0640
           ALPHAT:    2.000e-6
           DIHKL:        3.4790      75.0   0   1   2
           DIHKL:        2.5520      90.0   1   0   4
           DIHKL:        2.3790      40.0   1   1   0
           DIHKL:        2.0850     100.0   1   1   3
           DIHKL:        1.7400      45.0   0   2   4
           DIHKL:        1.6010      80.0   1   1   6
           DIHKL:        1.4040      30.0   2   1   4
           DIHKL:        1.3740      50.0   3   0   0
           DIHKL:        1.2390      16.0   1   0  10

       Note that B and ALPHA, BETA and GAMMA are not present, since they are
       not needed for a hexagonal material, and will be simple ignorred if
       they are present.

 EXAMPLE:
       jcpds = obj_new('JCPDS')
       jcpds->read_file, 'alumina.jcpds'
       print, jcpds->get_reflections()

 MODIFICATION HISTORY:
       Written by:     Mark Rivers, April 8, 2000.
       16-May-2000 MLR  Increased maximum number of lines from 100 to 1000
       27-Feb-2001 MLR  Added DK0PDT and DALPHADT.

(See jcpds__define.pro)


JCPDS::WRITE_FILE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       JCPDS::WRITE_FILE

 PURPOSE:
       This procedure writes a JCPDS file from the JCPDS object.

 CATEGORY:
       MCA object library

 CALLING SEQUENCE:
       jcpds->WRITE_FILE, file

 INPUTS:
       File:  The name of the file to written.

 OUTPUTS:
       None.  The file is written from the information in the JCPDS object.

 PROCEDURE:
       This procedure writes a JCPDS file.  It always writes files in the
       current, keyword-driven format (Version 4).  See the documentation for
       JCPDS::READ_FILE for information on
       the file format.

 EXAMPLE:
       This reads an old format file, writes a new format file.
       jcpds = obj_new('JCPDS')
       jcpds->read_file,  'alumina_old.jcpds'
       jcpds->write_file, 'alumina_new.jcpds'

 MODIFICATION HISTORY:
       Written by:     Mark Rivers, April 8, 2000.

(See jcpds__define.pro)


JCPDS_BM3_INVERSE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       JCPDS_BM3_INVERSE

 PURPOSE:
       This function returns the value of the third order Birch-Murnaghan
       equation minus pressure.  It is used to solve for V0/V for a given
       P, K0 and K0'.

 CATEGORY:
       MCA object library

 CALLING SEQUENCE:
       result = JCPDS_BM3_INVERSE(V0_v, Pressure)

 INPUTS:
       V0_v:   The ratio of the zero pressure volume to the high pressure
               volume

 OUTPUTS:
       This function returns the value of the third order Birch-Murnaghan
       equation minus pressure.  

 COMMON BLOCKS:
       The common block BM3_COMMON contains MOD_PRESSURE, K0 and K0P. The 
       use of a common block is required to pass this information, because
       FX_ROOT does not call the user function with any additional parameters.

 PROCEDURE:
       This procedure simply computes the pressure using V0/V, K0 and K0',
       and then subtracts the input pressure.

 EXAMPLE:
       Compute the difference of the calculated pressure and 100 GPa for
       V0/V=1.3 for alumina
       jcpds = obj_new('JCPDS')
       jcpds->read_file,  'alumina.jcpds'
       common bm3_common mod_pressure, k0, k0p
       mod_pressure=100
       k0 = 100
       k0p = 4.
       diff = jcpds_bm3_inverse(1.3)

 MODIFICATION HISTORY:
       Written by:     Mark Rivers, March 17, 2001.

(See jcpds__define.pro)


JCPDS__DEFINE

[Previous Routine] [List of Routines]
 NAME:
       JCPDS__DEFINE

 PURPOSE:
       This function defines an object of type JCPDS.  It cannot be called
       directly, but is invoked when an object of type JCPDS is created by
       IDL.

 CATEGORY:
       MCA object library

 CALLING SEQUENCE:
       jcpds = obj_new('JCPDS')

 OUTPUTS:
       OBJ_NEW creates and returns an object of type JCPDS.

 SIDE EFFECTS:
       This procedure defines structures of type JCPDS and JCPDS_REFLECTION.

 EXAMPLE:
       ; Create a JCPDS object and read a file into it.
       jcpds = obj_new('JCPDS')
       jcpds->read_file,  'alumina.jcpds'

 MODIFICATION HISTORY:
       Written by:         Mark Rivers, April 8, 2000.
       May 22, 2000 MLR    Added JCPDS::COMPUTE_V0 method

(See jcpds__define.pro)