***This file provided by Brian in email to support on 8/19/14 as part of Ticket#2014081810000041*** ************************************************************************** NEW LSDA FORMAT FILE CONTENTS Interface linking data is saved to ifcomp_lsda, and read in using iflink_lsda The structure info is in the "/metadata" directory, which contains: ndof = 3 or 6 interfaceN/ (N=0, 1, 2, etc) directories, one for each interface definition interfaceN/id = User ID of this interface interfaceN/title = User title for this interface interfaceN/segments = connectivities for the segment definitions for this interface interfaceN/nodes = which nodes define this interface. Note: each /metadata/interfaceN directory will contain EITHER a segments OR a nodes entry, depending on the type of the interface. State data is written into directories of the form /dN, where N is an integer starting from 0: /d0, /d1,...,/d10923,.... Each /dN directory holds: time = simulation time for this data xyz = (x,y,z) triplets of coordinate data rxyz = (x,y,z) triplets of rotational data. These are optional, and are only there if ndof==6. Note that unlike the old rwabsf case, there is no extra time state written at a large future time. If the simulation runs off the end of the data, the routines that read and interpret the data are responsible for properly handling things. ************************************************************************** OLD RWABSF FORMAT FILE CONTENTS Interface linking data is saved to unit iob15, and read back from unit iob16. Format of file: Initial header portion: one word: nsn (total # nodes in the file) one word: numifs (# interfaces) one word: ndof 2*numifs+2 words: dskadd XX words: irects (connectivity for each interface) 3*nsn words: initial node coordinates The interpretation of the irects array depends on the interface type: 4 words per segment or 1 word per node. They are pointers into the complete node list -- if a node appears in more than one segment, even from different interfaces, it will only be in the file once, and the corresponding irects() entries will all point to the same node. dskadd(numifs+1,*): dskadd(i,1): on disk address of interface i dskadd(i,2): itype First on disk address is 3+2*(numifs+1), which is the start of the "irects" array. The last two entries give the address of the start of the node coordinates, and an ignored word for the type. ityp == 0 -> this interface is a single point ityp == 1 -> this interface is a list of nodes (edge definition) ityp == 2 -> this interface is a list of 4 node segments Each time step: one word: time 3*nsn words: coordinates if(ndof.eq.6)then 3*nsn words: rotations endif ************************************************************************** Description of keywords for LSDA format Since r50838 (February 2009) there is a new LSDA based format available for the inteface component analysis file. There are two new keywords: New Keyword 1 (one line required, one optional): *INTERFACE_COMPONENT_FILE This is an option to be used instead of the "z=" command line option. If "z=" is given on the command line, this card will be ignored (a warning is issued). The second line is optional, and determines what format to use for the component file: 1 = old binary format, for backward compatibility 2 = new LSDA format, for flexibility and new features. If z= is given on the command line, the old format is used. However, if this keyword is used and no format is specified, LSDA (2) is used as the default. New Keyword 2: *INTERFACE_LINKING_FILE This is an optional card that can be used instead of the "l=" command line option. If the command line option is given, this card is ignored and a warning is issued to that effect. No format indicator is necessary: the file is examined to determine if it is a new or old style file, and both are supported transparently. Also, *INTERFACE_COMPONENT now supports the _TITLE and/or _ID options, in the usual way. There is no place to put these IDs in the old binary file, but if the new LSDA format is used, they are written into the file. If no ID is given for a component, and the LSDA format is used, the component is assigned an ID based on the input ordering, starting from 1. Finally, the behavior of all the *INTERFACE_LINKING options is extended in the following way: *INTERFACE_COMPONENT instances are historically numbered sequentially starting with 1, and referenced using this ordering when specified on the *INTERFACE_LINKING card. With the introduction of the new _ID/_TITLE option on the *INTERFACE_COMPONENT card, and the LSDA database, arbitrary numbering is now possible. So, COMPONENTS are all assigned IDs (if no user specified ID is given, the input ordering is used). *INTERFACE_LINKING options all now specify the component to use by this assigned ID. If the linking file is in the old format, only the input ordering is available, and everything is fully backward compatible. But if the new LSDA format is used, the user defined numbers are available in the file, and those are the ones used to match the *INTERFACE_LINKING keywords. Note that the LSDA file writes all the data in real*8 format. So, compared to running the single precision version of the code, these files will be about twice as large as the old format file. Since the coordinates are all real*8 internally (even in the single precision version of the code), I considered it important to preserve this accuracy in the interface linking file. *************************************************************************** There are three options for linking: *INTERFACE_LINKING_NODE *INTERFACE_LINKING_EDGE *INTERFACE_LINKING_SEGMENT *INTERFACE_LINKING_NODE becomes "Tied Node Pairs for Linking", aka tnpfl. The number of such pairs is stored in ntnpfl, the slave nodes are updated in tnpmov. The setup for linking (what ties to whom) is done in init_iln. *INTERFACE_LINKING_EDGE becomes a "tied breaking slide line". ntbsl. For MPP, initial tying is determined in mpptbini, and updates are done in mpptbrk *INTERFACE_LINKING_SEGMENT becomes a type 6 tied interface (nodes to segment)