Difference between revisions of "Rupture Variation Generator v5.4.2 code changes"

From SCECpedia
Jump to navigationJump to search
Line 51: Line 51:
 
</pre></li>
 
</pre></li>
 
</ol>
 
</ol>
 
  
 
==== srf_structure.h ====
 
==== srf_structure.h ====
Line 65: Line 64:
 
#endif
 
#endif
 
</pre></li>
 
</pre></li>
 +
</ol>
 +
 +
=== In GenRandV5.0 ===
 +
 +
==== makefile ====
 +
 +
<ol>
 +
<li>Edit the 2nd line that begins with OBJS so it contains
 +
<pre>
 +
OBJS = iofunc.o misc.o slip.o ruptime.o srf_subs.o
 +
</pre></li>
 +
<li>Delete the SRF_OBJS and FDRT_OBJS lines, 3-5.</li>
 +
<li>Edit GETPARLIB and GETPARINC so it correctly points to the Getpar install in <CyberShake home>/software/Getpar .</li>
 +
<li>Delete all targets except genslip-v5.4.2, ${OBJS}, and clean.</li>
 +
<li>Modify the genslip-v5.4.2 target.  We need to remove unnecessary objects, and compile it to an object rather than an executable for inclusion in the genslip library.  It should look like:</li>
 +
<pre>genslip-v5.4.2.o : genslip-v5.4.2.c ${OBJS}
 +
        ${CC} -c -o genslip-v5.4.2.o genslip-v5.4.2.c ${LDLIBS} ${OBJS}</pre>
 +
Note that if you copy/paste the line above, make will probably give you a whitespace error.  Remember to replace the whitespace in front of ${CC} with a tab.</li>
 
</ol>
 
</ol>

Revision as of 15:47, 2 October 2019

This page documents the code changes required to turn the stand-alone version, genslip-v5.4.2, into an API callable by the CyberShake post-processing.

In this document, $ROOT_DIR is taken to be the <CyberShake home>/software/RuptureCodes/RupGen-api-5.4.2 directory. GenRandV5.0 is the code as received from Rob Graves.

Installing files

  1. Create src, include, lib, and bin directories inside $ROOT_DIR .
  2. Inside src, create GenRandV5.0.
  3. Copy rupgen_api.c from a previous API version into src.
  4. Copy rupgen_defs.h from a previous API version into src.
  5. Copy rupgen_api.h from a previous API version into include.
  6. Create a symlink in src which points to $ROOT_DIR/include/rupgen_api.h .
  7. Confusingly, there are two files named structure.h. One is in StandRupFormat and contains the structures needed for an SRF. The other is in GenRandV5.0 and contains the definition for complex, along with a few other supporting structures.
    1. Copy the StandRupFormat/structure.h into include/srf_structure.h .
    2. Copy the GenRandV5.0/structure.h into include/structure.h .
    3. Create a symlink to both files in src.
  8. From the code provided by Rob, copy the following files into src/GenRandV5.0:
    • defs.h
    • function.h
    • include.h
    • genslip-v5.4.2.c
    • iofunc.c
    • misc.c
    • ruptime.c
    • slip.c
    • srf_subs.c (from StandRupFormat)
    • makefile

Editing files

In $ROOT_DIR/src

structure.h

  1. At the top of the file, remove '#include "StandRupFormat/structure.h"'
  2. At the top of the file, add:
    #ifndef STRUCT_H
    #define STRUCT_H
    
  3. At the end of the file, add:
    #endif
    

srf_structure.h

  1. At the top of the file, add:
    #ifndef SRF_STRUCT_H
    #define SRF_STRUCT_H
    
  2. At the end of the file, add:
    #endif
    

In GenRandV5.0

makefile

  1. Edit the 2nd line that begins with OBJS so it contains
    OBJS = iofunc.o misc.o slip.o ruptime.o srf_subs.o
    
  2. Delete the SRF_OBJS and FDRT_OBJS lines, 3-5.
  3. Edit GETPARLIB and GETPARINC so it correctly points to the Getpar install in <CyberShake home>/software/Getpar .
  4. Delete all targets except genslip-v5.4.2, ${OBJS}, and clean.
  5. Modify the genslip-v5.4.2 target. We need to remove unnecessary objects, and compile it to an object rather than an executable for inclusion in the genslip library. It should look like:
  6. genslip-v5.4.2.o : genslip-v5.4.2.c ${OBJS}
            ${CC} -c -o genslip-v5.4.2.o genslip-v5.4.2.c ${LDLIBS} ${OBJS}
    Note that if you copy/paste the line above, make will probably give you a whitespace error. Remember to replace the whitespace in front of ${CC} with a tab.