OOF: Finite Element Analysis of Microstructures


[Author] [Documentation] [Source code] [Disclaimer]
[Back to the main OOF page]

Douglas J. Twisselmann
NIST, Mail Stop 8552
Bld. 223, Room B148
Gaithersburg, MD  20899-8552
tel: 301-975-8876
NOTE: This contact information is out of date.

Documentation In order to create periodic boundary conditions in an OOF file, the grid must be parsed such that the edge nodes are enslaved to opposing nodes in both the x- and y- directions. Creating these node pairs is difficult when thousands of nodes are available. This program takes the nodes and creates groups which are enslaved to each other. By running the resultant "log file" while loading OOF, periodic boundary conditions can be made easily in the horizontal direction.

This program finds a list of all nodes on the left and right borders of an OOF grid. If there are equal numbers of nodes, it simply groups them pairwise from the bottom to top and creates groups ('periodicX') which are enslaved in both the x- and y- position. All groups have only two nodes.

If there are unequal numbers of nodes, it pairs up each node with the closest node on the opposing side based on y position. In this case, all nodes are placed in groups, some of which will have more than two nodes.

To use this program, you must first create an ascii file of all grid points. To do this, run OOF and choose output -> grid -> ascii. This file is then used as an input file for the program. The output file of create_periodicity is then run at the next start of OOF. For example, oof -grid grid.goof -file output_file.

The program assumes that the width of the grid is 1. If the size of your grid is anything other than 1, the maximum value should be substituted in the line which reads "if (X == 1)". This should be placed as a variable to be read in at runtime to create more flexibility.

While create_periodicity runs well for me, it certainly does not cover all possible OOF grids. Possible future modifications would include adding options for creating periodic boundaries in the vertical direction and for both directions simultaneously. Better routines for assigning node groups could be found. Also, the source code could be cleaned up for easier reading and better performance. So far, I have only tried compiling this code on SGI's using CC. It may need modification for other systems and compilers.

If you have any questions, please contact me. Also, if you make improvements to this code, please let me know.


Source code Click here to get the source code for create_periodicity. It's a 11686 byte C++ file.

This software is no longer being maintained. Please see OOF2 instead.

Disclaimer This software was developed at the National Institute of Standards and Technology by employees of the Federal Government in the course of their official duties. Pursuant to title 17 Section 105 of the United States Code this software is not subject to copyright protection and is in the public domain. create_periodicity is an experimental system. NIST assumes no responsibility whatsoever for its use by other parties, and makes no guarantees, expressed or implied, about its quality, reliability, or any other characteristic. We would appreciate acknowledgement if the software is used.