Skip to content
Build History trend
 
EGADS 1982 OpenCSM 2442 CAPS 847
 
EGADS 1982 OpenCSM 2442 CAPS 847
 
EGADS 1944 OpenCSM 2396 CAPS 834
 
EGADS 1944 OpenCSM 2396 CAPS 834
 
EGADS 1944 OpenCSM 2396 CAPS 834
 
EGADS 1943 OpenCSM 2396 CAPS 834
 
EGADS 1942 OpenCSM 2394
CAPS/unit
 
EGADS 1667 OpenCSM 2043
OpenCSM/data/Slugs
 
EGADS 1667 OpenCSM 2043
OpenCSM/data/Slugs
 
EGADS 1667 OpenCSM 2043
OpenCSM/data/Slugs
 
EGADS 1667 OpenCSM 2043
OpenCSM/data/Slugs
 
EGADS 1667 OpenCSM 2043
OpenCSM/data/Slugs
 
EGADS 1532 OpenCSM 1924
CAPS/unit
 
EGADS 1530 OpenCSM 1924
CAPS/unit
 
EGADS 1524 OpenCSM 1922
CAPS/training
 
 
EGADS 1411 OpenCSM 1875
CAPS/unit
 
EGADS 1411 OpenCSM 1875
CAPS/unit
 
EGADS 1411 OpenCSM 1875
CAPS/unit

Changes

#40 (Dec 29, 2023, 3:32:09 PM)

  1. Fix fun3d NMakefile — galbramc / detail
  2. Use AFLR instead of Tetgen for SU2 testing — galbramc / detail
  3. Swap serveCSM with serveESP — galbramc / detail
  4. Update meshWriter structure and function documentation — galbramc / detail
  5. Remove c++ link for tacs AIM — galbramc / detail
  6. Update CAPS copyright — galbramc / detail
  7. One more try fixing Cart3D — galbramc / detail
  8. Try cart3d fix one more time — galbramc / detail
  9. Another try at fixing Cart3D — galbramc / detail
  10. Remove one more undefined error — galbramc / detail
  11. More link warning fixes — galbramc / detail
  12. stanalizer fix — galbramc / detail
  13. Remove unnecessary lc++ — galbramc / detail
  14. Fix link warning — galbramc / detail
  15. Training solution fixes — galbramc / detail
  16. More dox fixes — galbramc / detail
  17. Add fun3d refine example. Update dox — galbramc / detail
  18. Forgot updated example — galbramc / detail
  19. Fix astros Aero_Reference so it's a tuple — galbramc / detail
  20. Add missing -ldl — galbramc / detail
  21. Missed one file — galbramc / detail
  22. Improve speed of mesh QuickRef and fix memory leak — galbramc / detail
  23. More abaqus fixes — galbramc / detail
  24. Fix nodal averaging for abaqus — galbramc / detail
  25. Lint fix, add abaqus concentrated load — galbramc / detail
  26. Abaqus does not write out all nodes — galbramc / detail
  27. Refactor abaqus displacement reads — galbramc / detail
  28. Lint fix — galbramc / detail
  29. Add Tmax to abaqus AIM outpus — galbramc / detail
  30. Fixes to abaqus dor FSI — galbramc / detail
  31. lint fixes — galbramc / detail
  32. Fix typo — galbramc / detail
  33. Fix double free in mystran. Fix Windoze NMakefiles — galbramc / detail
  34. Abaqus IO is really really slow... — galbramc / detail
  35. Read MISES and Displacements from Abaqus .dat file — galbramc / detail
  36. Fix windoze build — galbramc / detail
  37. Move cython generated files into sub-directories so scan-build can ignore them — galbramc / detail
  38. Abaqus fixes — galbramc / detail
  39. Fix capsBound sideset segfault for exodus — galbramc / detail
  40. Lint fixes — galbramc / detail
  41. Parse outputs with SierraSM. Add Displacement dynout for mystran. — galbramc / detail
  42. One more lint fix — galbramc / detail
  43. Don't scan-build cython generated files — galbramc / detail
  44. scan-build fixes — galbramc / detail
  45. lint fixes — galbramc / detail
  46. Add maximum displacement for mystran — galbramc / detail
  47. Fix abaqus NMakefile — galbramc / detail
  48. Fix abaqus Windoze build — galbramc / detail
  49. Add abaqus to AGARD445 — galbramc / detail
  50. Fix warnings — galbramc / detail
  51. Update makefile. Update cython instantiations. Other small fixes — galbramc / detail
  52. Add abaqus AIM — galbramc / detail
  53. Update some examples, add abaqus examples — galbramc / detail
  54. AFLR2 dods not apways generare valid quads — galbramc / detail
  55. Fix ESPxddm. Fix dox — galbramc / detail
  56. Write capsBound as sideset for exodus — galbramc / detail
  57. Write out capsGroups as exodus sidesets — galbramc / detail
  58. Distingush between 2D and 3D quad in exodus — galbramc / detail
  59. Fix merging of VLM surfaces for astros — galbramc / detail
  60. Fix link error — galbramc / detail
  61. Add missing include — galbramc / detail
  62. Finish allowing quad elements in Exodus files. — galbramc / detail
  63. Add quad mesh support for Exodus files — galbramc / detail
  64. Fix for SierraSD solution read — galbramc / detail
  65. One last stanalizer fix — galbramc / detail
  66. Stanalizer fixes — galbramc / detail
  67. Update SierraSD to provude nodal averaged elemental data — galbramc / detail
  68. Try to fix another warning — galbramc / detail
  69. Rename siearra to sierraSM — galbramc / detail
  70. Fix compiler warnings — galbramc / detail
  71. Add sierraSD to aim Makefile. Other small updates. — galbramc / detail
  72. Add initial sierraSD AIM framework. Lots of work still todo. — galbramc / detail
  73. More error checking in nastranAIM. Don't allocate zero length array. — galbramc / detail
  74. Add Input_String to sierra — galbramc / detail
  75. Various small updates — galbramc / detail
  76. Add framework for sierra AIM — galbramc / detail
  77. Make outputs lower case in fun3d when not compiled with python — galbramc / detail
  78. Lint fix — galbramc / detail
  79. Use EG_mapBody2 for morhing bodies with a single face. Fix indexing with refine. Add documentation reference for exodus writer. — galbramc / detail
  80. Add bound VTK dump — galbramc / detail
  81. Add Fun3D option to refineAIM. Fixes for phasing with refine — galbramc / detail
  82. Only allow capps to aim_deleteMeshes in aimPreAnalysis. Add MAT5 nastran Card. Clear data transfer if tessellation is updated. Copy over previous files when removing a clink — galbramc / detail
  83. Missed a file — galbramc / detail
  84. Fix TEMP card. Fix TACS temperature transfer. — galbramc / detail
  85. Lint fixes — galbramc / detail
  86. Fix for windoze — galbramc / detail
  87. Parse von Mises stress and strain from Mystran. Fix refineAIM to remove old meshes. — galbramc / detail
  88. Use latest version of SU2(8.0.0) — nitin / detail
  89. Updates for SU2 Harrier, version 8.0.0 — nitin / detail
  90. Fix memory leak — galbramc / detail
  91. Fix array bound error. Update legacy example. — galbramc / detail
  92. Dont require meshRef for meshWriters — galbramc / detail
  93. Add remaining MAT8 entries. Always check for valid indexes in meshes. Various other fixes. — galbramc / detail
  94. Lots of lint fixes and memory leak fix — galbramc / detail
  95. Fix bug in refine libMeshb reader — galbramc / detail
  96. Fix memory leak in mystran AIM — galbramc / detail
  97. Fix warning — galbramc / detail
  98. Exclusively use MESHEXTENSION for refine — galbramc / detail
  99. Don't reqiore capsMeshLength for auto feaMeshing — galbramc / detail
  100. Use egadsTess functions to build on the fly fea Meshes — galbramc / detail
  101. Guard against using null pointer — galbramc / detail
  102. allow assert_failed signal to be caught; check that arguments to COMBINE command are all valid Edge and/or Face numbers; fix bug in serveESP that seg faulted when a DESPMTR exceeded its LBOUND or UBOUND in the .csm file; fix memory leak associated with private data in UDP/UDFs; fix bug in GROUP command when ngroup was positive; update group5 test case and its verification data; start to modify ESP-help to include examples — jfdannen / detail
  103. fix undefined variable associated with degenerate Edges when using udfOffset — jfdannen / detail
  104. add deprecation warnings to all .csm/.udc/.cpc files that use LOFT, MACBEG, MACEND, and RECALL — jfdannen / detail
  105. update sensitivity calculations in udpParsec; add capNacelle*, testAdjoint6, and testAdjoint7 test cases; change copyright dates from 2023 to 2024 — jfdannen / detail
  106. fix bug in ocsmCopy that seg faulted when a Branch name exceeded 11 characters — jfdannen / detail
  107. re-add duplicate libraries for linking tile.so (even though latest linker will issue a warning) — jfdannen / detail
  108. fix udp.def for udpPost — jfdannen / detail
  109. try to eliminate duplicate library warnings when linking tile.so — jfdannen / detail
  110. fix bug in transferring Edge attributes when SUBTRACTing a SheetBody from another SheetBody (due to an OpenCASCADE error); fix bug that (erroneously) evalauted arguments to ELSEIF even when the matching IFTHEN evaluated to true; provide udps.ndotchg to tell it any inputs to sensitivities have changed since previous call for sensitivities; provide COPYUDPDATA to copy private data in UDP/UDFs — jfdannen / detail
  111. attempt to fix stanalizer errors — jfdannen / detail
  112. attempt to fix stanalizer errors — jfdannen / detail
  113. attempt to fix stanalizer errors — jfdannen / detail
  114. update udp.def for Windoze — jfdannen / detail
  115. refactor UDP/UDF global storage — jfdannen / detail
  116. fix the code that finds the (non-manifold) Edge velocities generated by a Boolean operation on SheetBodys as well as SolidBodys; update ESP to account for new arguments to DUMP command; fix bug in copying UDP/UDF data that was identified by memcheck; fix bug with optional last argument to DUMP; fix bug associated with copying bodyList in ocsmCopy; print triangle and quadrilateral count when writing .obj file — jfdannen / detail
  117. fix bug in the pattern counter when executing PATBREAK — jfdannen / detail
  118. make UDP/UDFs thread-safe.  THIS REQUIRED A CHANGE IN ALL UDP/UDFs.  See OpenCSM/src/udp.help for information — jfdannen / detail
  119. fixed bug when using a UDP/UDF that returns a value and finite difference sensitivities are being computed; fix compiler warning associated with _viz attribute; clean up memory at end of ocsmAdjoint — jfdannen / detail
  120. added _grd, _trn, and _ori attributes to change initial settings for Faces and Edges; fix RALLOC so that it can be thread-safe — jfdannen / detail
  121. add Node tolerance checks when reporting tolerance associated with a Body; adding _viz=off Attribute to a Face, Edge, or Node makes them initially not displayed in serveESP (although they can be toggled via the GUI); fix valgrind error associated with not initializing the output Body to EG_mapBody — jfdannen / detail
  122. remove BWB.vsp3 test case since bug in OpenVSP sometimes causes OpenVSP to fail — jfdannen / detail
  123. remove verification data for 7.3.1 and 7.4.1 — jfdannen / detail
  124. change verification data for testAdjoint4 and testAdjoint5 to account for inconsistencies in number of spurious Nodes and Edges — jfdannen / detail
  125. fix bug that did not restore the stack properly when a command returned multiple Bodys; fix bug that did not clear display when plotter exits; make MessageWindow light green to alert user that they need to exit an overlay; allow TIM to reload (if state is TIM_READY); do not print warning that message is not broadcast because wv was not started (which can happen due to timing in multiple threads); add areaRule* test cases and python script — jfdannen / detail
  126. fix bug in filename compression — jfdannen / detail
  127. temporarily disable filename compression — jfdannen / detail
  128. add grpName=. optional argument to DUMP command for .obj files; fix implicit string defaults in ocsmMakeBrch — jfdannen / detail
  129. add ability to put attrName/attrValue on control surfaces in udc/flapz; prototype WaveFront .obj file writer; fix sensitivity bug that returns zeros when UDPs are used and -loadEgads was enabled; add quad output in .obj file writer — jfdannen / detail
  130. add LRED, LGREEN, and LBLUE to list of possible colors; multi-thread ocsmAdjoint; add testAdjoint4 and testAdjoint5 test cases; dynamically allocate arrays in testOcsmAdjoint; print Edge lengths in ocsmPrintBrep; change signature of ocsmAdjoint to not automatically compute full Jacobian; do not run testOcsmAdjoint if -loadEgads is enabled; fix sensitivities bug if there is a UDP/UDF and the -loadEgads flag is set; remove /../ patterns from .udc filenames; fix bug in capsMode that did not allow .csm files to have .udc files in subdirectories — jfdannen / detail
  131. add showsize option in udpNuScale; fix bug in udfOffset for Bodys with degenerate Edges; in udfEditAttr, allow attrValue to be a star in HAS statement, independent of whether the value is a string or a number — jfdannen / detail
  132. remove OPAM1_fillet test case (because FILLET works differently  on various platforms) — jfdannen / detail
  133. fix undefined variable warning — jfdannen / detail
  134. fix sanitize error in velocityOfEdge — jfdannen / detail
  135. update method for assigning _edgeIDs associated with degenerate Edges; slight improvement in tessellation sensitivities for some cases — jfdannen / detail
  136. update to use EG_mapBody2 to make sure Edges are mapped properly during sensitivity calculations; update sensitivities (again) to improve Edges generated by boolean operations; update selected sensitivity verification data — jfdannen / detail
  137. remove FILLETs from OPAM1.csm; add OPAM1_fillet test case; fix typo in computation of analytic sensitivities for a CONE; fix tessellation sensitivities when Node motion is perpendicular to end of Edge; add designZ* test cases; update all verification data associated with data/basic/design* to account for the new (better) sensitivities — jfdannen / detail
  138. add missing data/vsp3 verification data for 7.6.0 — jfdannen / detail
  139. clean up some debug printing during sensitivity calculations — jfdannen / detail
  140. ensure _faceID and _edgeID sequence numbers are consistent when computing finite difference sensitivities; allow CSYSTEM name to be an expression; fix bug that did not apply csystems to SELECT BODY command; add csystem7* test cases — jfdannen / detail
  141. modify OPAM1.udc to pass Jenkins tests — jfdannen / detail
  142. add simple.py to demonstrate a pyscript that can be run either from python prompt or from serveESP — jfdannen / detail
  143. fix sanitize-address error in udpWaffle when progress=1 — jfdannen / detail
  144. modify ocsmGetUV so that inverse evalaution starts at closest tessellation point if npnt is negative; fix memory leak associated with testAdjoint*; fix bug that allowed _hist and __trace__ to contain duplicate entries, which sometimes resulted in an infinite loop; add uCRM test case to data/gallery; fix bug that made had _edgeID point to scribing Face instead of its _faceID during a scribing operation; Edges from a sketch should have _edgeID that identifies the Body and Edge number; fix scribeWing test case; fix _edgeID for Edges that result from SUBTRACTing a SolidBody or planar SheetBody from a SheetBody. BEWARE: backward incompatability for some _edgeID; add edgeIDtest* test cases — jfdannen / detail
  145. add testAdjoint1 test case — jfdannen / detail
  146. make udpWaffle clean up temporary variables if an error occurs while processing a file; add fitCurve8 test case; return error from vspSetup if .vsp3 file does not exist; add pylon/pod to vsp3/OPAM1* test cases — jfdannen / detail
  147. Remove MACOSX from makeEnv — galbramc / detail
  148. Add macOS 14 to makeEnv — galbramc / detail
  149. Add more checks on Julia version and ESP env for jlEGADS — galbramc / detail
  150. Update EGADS copyright — galbramc / detail
  151. change copyright date from 2023 to 2024 — jfdannen / detail
  152. Update README release in January 2024 — galbramc / detail
  153. Suppress gfortran link warnings on macOS — galbramc / detail
  154. Remove more undefined error link warnings. Stanalizer fixes — galbramc / detail
  155. More link warning suppression on macOS — galbramc / detail
  156. Remove depricated macOS undefined error link flag — galbramc / detail
  157. EGADS doc fixes — galbramc / detail
  158. update udp.def in udpTire folder — jfdannen / detail
  159. update to account for UDP/UDF changes — jfdannen / detail
  160. Update python version in setup scripts — galbramc / detail
  161. Update PreBuilt README and setup scripts — galbramc / detail
  162. Add contextCopy to pyEGADS and jlEGADS — galbramc / detail
  163. Remove incorrect 'wrong OR' check for EG_quadTess — galbramc / detail
  164. Write Name attribute to iges files — galbramc / detail
  165. Add contextCopy to def file — haimes / detail
  166. Add tessellation support in EG_contextCopy — haimes / detail
  167. Add EG_contextCopy — haimes / detail
  168. Fix stanalizer — galbramc / detail
  169. Fix FACE/LOOP for EG_imprintBody — galbramc / detail
  170. Allow EG_imprintBody to accept FACE/LOOP pairs — galbramc / detail
  171. Add more debug info in splitBody — haimes / detail
  172. Do not SameParamter shell — galbramc / detail
  173. Fix stanalizer warning — galbramc / detail
  174. Properly map Degenerate Edges in mapBody2 — galbramc / detail
  175. Skip degenerate Edges in mapBody2 — galbramc / detail
  176. Fix lint — galbramc / detail
  177. Fix EG_mapBody infinite loop — galbramc / detail
  178. Update egads.def with EG_mapBody2 — galbramc / detail
  179. Fix incorrect mapBody tests — galbramc / detail
  180. Fix compile error related to M_PI — galbramc / detail
  181. Fix EG_mapBody when topology is identical but geometry differs. Add EG_mapBody2 as replacement for EG_mapBody that also works on FaceBodys. — galbramc / detail
  182. Add additional Node check in EG_localToGlobal — galbramc / detail
  183. Add backup M_PI when not available for Surreal — galbramc / detail
  184. Fix memory leak when error occurs while reading units from STEP/IGES — galbramc / detail
  185. Upgrade Pointwise for new license — galbramc / detail
  186. Uptrade asan path to 15.0.0 — galbramc / detail
  187. Comment out IRIT — galbramc / detail
  188. Only suppress link warnings on macOS — galbramc / detail
  189. Suppress link warnings with PYTHONLIB — galbramc / detail
  190. Add abaqus to PATH — galbramc / detail
  191. Another Python address suppression — galbramc / detail
  192. Upgrade to Python 3.11.6 — galbramc / detail
  193. Undo looking for verfication data — galbramc / detail
  194. Warn about missing verification files — galbramc / detail
  195. Yet one more python suppression — galbramc / detail
  196. Another python valgrind suppression — galbramc / detail
  197. Upgrade to SU2 8.0.0 — galbramc / detail

#37 (Sep 14, 2023, 11:02:16 AM)

  1. More binary ugrid reader improvements — galbramc / detail
  2. Add isothermal material properties — galbramc / detail
  3. Rename ref test to avoid conflicting with NASA refine ref — galbramc / detail

#33 (Sep 14, 2023, 9:57:56 AM)

  1. More informative refine execution failure error messages — galbramc / detail
  2. Add execution error message for refine — galbramc / detail
  3. Fix Mesh_Morph for fea. Improve speed of binary ugrid reader. — galbramc / detail
  4. Lint fixes — galbramc / detail
  5. Update unit test — galbramc / detail
  6. Various small fixes — galbramc / detail
  7. Test with mixed quad/tri Face — galbramc / detail
  8. Allow mixed quad/tri on Faces for data transfer — galbramc / detail
  9. Update aimMesh for Morphing surface meshes — galbramc / detail
  10. Make mesh link optional again for astros — galbramc / detail
  11. Add mesh morphing to masstran — galbramc / detail
  12. remove X57_MAXWELL_CRM_v4.4.1 from svn (too big) — jfdannen / detail
  13. fix valgrind error in timVspSetup.c; initialization update required by change in EG_mapBody; add bentWaffle test case; SELECT * xmin xmax ... finds closest entity if xmin=xmax ... — jfdannen / detail
  14. Preserve tessellation attributes in mapTessBody — galbramc / detail

#32 (Sep 10, 2023, 2:11:44 PM)

  1. Fixes for refine and add Mesh_Morph for structures — galbramc / detail
  2. Lint fixes — galbramc / detail
  3. Fix ThermalExternal. Add Mesh_Morph and Temperaure field to SU2 — galbramc / detail
  4. Another try at scan-build suppression — galbramc / detail
  5. Dox and scan-build fixes — galbramc / detail
  6. lint fixes — galbramc / detail
  7. Fixes for Fun3D data transfer — galbramc / detail
  8. Fix last commit — galbramc / detail
  9. Refactor all mesh transfer to PointerMesh. Add thermal transfor for Fun3D and structures. — galbramc / detail
  10. Update testing geometries — galbramc / detail
  11. Fix warning — galbramc / detail
  12. Fix refine AIM compile error — galbramc / detail
  13. Add refine AIM — galbramc / detail
  14. Dox and other small fixes — galbramc / detail
  15. Update BuildFromRepo.txt — galbramc / detail
  16. Fix Cart3D example — galbramc / detail
  17. Update plato example csm file name — galbramc / detail
  18. Fixes for aflr3 MultiDomain — galbramc / detail
  19. Lint fixes — galbramc / detail
  20. Add Motion_Driver and Mesh_Movement to fun3D AIM to wtite moving body input file. Generate fun3dNamelist with latest cython. — galbramc / detail
  21. Fix bug in FEA connections — galbramc / detail
  22. xfoil fixes to normalize properly — galbramc / detail
  23. Do not normalize mses airfoils — galbramc / detail
  24. Upgrade to AFLR 11.5.9. Fix bug where aflr3 BL_Thickness and BL_Initial_Spacing were not scaled by capsMeshLength — galbramc / detail
  25. Suppress lint — galbramc / detail
  26. More cleanup for AFLR — galbramc / detail
  27. Lint fix — galbramc / detail
  28. Cleanup aflr3_Interface — galbramc / detail
  29. Fix AFLR link error — galbramc / detail
  30. Upgrade to AFLR 11.5.8 — galbramc / detail
  31. Fix stanalizer warning — galbramc / detail
  32. Update surface to volume mapping for mesh morphing — galbramc / detail
  33. Use EG_mapBody maps for more robust morphing — galbramc / detail
  34. Fix plato AIM Mesh_Morph symbolic link — galbramc / detail
  35. Uprev to ESP 1.24 — galbramc / detail
  36. Full double precision for point tecplot files — galbramc / detail
  37. Example to demo AFLR4 quad mesh generation — nitin / detail
  38. Appended AFLR4 related attributes — nitin / detail
  39. Fix for cart3d makefile — galbramc / detail
  40. Minor correction to friction static libgfortran check — galbramc / detail
  41. Check for static libgfortran — galbramc / detail
  42. Always build friction with static libgfortran — galbramc / detail
  43. Fix VLM memory leak — galbramc / detail
  44. Fix avl bug where controls are not updated when the surface is unchanged. — galbramc / detail
  45. Fix designVariableID for Structural design — galbramc / detail
  46. Fix last commit — galbramc / detail
  47. Install aim/utils header files on Windoze — galbramc / detail
  48. Add include guards to all aim/util header files. Install aim/util header files in ESP_ROOT/include/aim/util on unix. — galbramc / detail
  49. Lint fix — galbramc / detail
  50. Stanalizer fix — galbramc / detail
  51. Fix array bounds error and update another test with AFLR — galbramc / detail
  52. Stanalizer fixes — galbramc / detail
  53. Add aflr4 skin input — galbramc / detail
  54. Upgrade to AFLR 11.4.5 — galbramc / detail
  55. AFLR2 quad sometimes generates invalid elements — galbramc / detail
  56. Update two more aeroelastic examples to use AFLR — galbramc / detail
  57. Another try at more robust areolastic example — galbramc / detail
  58. Adjust tessellaton to hopefully help tetgen — galbramc / detail
  59. Add capsMeshLength to legacy csm file — galbramc / detail
  60. fix corsairlite atmosphere model — dongjoon / detail
  61. Fixes for AFLR2 — galbramc / detail
  62. Updated config file for the latest version of SU2 (7.5.1) — nitin / detail
  63. One more try at fixing valueString — galbramc / detail
  64. Accurate memory allocation in valueString — galbramc / detail
  65. remove clang warnings — jfdannen / detail
  66. Fix clang 14.0.3 warnings — galbramc / detail
  67. Lint suppression — galbramc / detail
  68. Update aflr2 to use capsMeshLength — galbramc / detail
  69. Fix aflr2 for Phasing — galbramc / detail
  70. Fix compile warning — galbramc / detail
  71. Fix for AFLR2 — galbramc / detail
  72. Comment out debug code — galbramc / detail
  73. Allow AFLR2 to work with multiple faces — galbramc / detail
  74. Only build Writer directories on Windoze — galbramc / detail
  75. Add meshWriter NMakefile verbosity — galbramc / detail
  76. Suppress lint warning — galbramc / detail
  77. NMakefile fix — galbramc / detail
  78. Fix NMakefiles for meshWriter — galbramc / detail
  79. Documentation updates — galbramc / detail
  80. Upgrade fun3d cython files — galbramc / detail
  81. One more try at AIM_NOTFOUND — galbramc / detail
  82. Add AIM_NOTFOUND macro — galbramc / detail
  83. Add aimInfo to fea_getDesignResponse — galbramc / detail
  84. Test cart3d on commit again — galbramc / detail
  85. Remove Cart3D from commit testing for now — galbramc / detail
  86. Dissable tecplot debug dump for aflr4 — galbramc / detail
  87. Fix compiler warning — galbramc / detail
  88. Upgrade to AFLR 11.3.17 — galbramc / detail
  89. Updated makefiles for AFLR 11.3.17. Add doc about capsFile. — galbramc / detail
  90. Fix typo — galbramc / detail
  91. Allow aflr4 to mesh abutting bodies with matching faces. — galbramc / detail
  92. fix memory leak in Slugs; update Makefile.DARWIN64 in Slugs to have sanitize targets — jfdannen / detail
  93. Fix block name for exodusWriter. Add symbolic link to mesh for plato AIM. — galbramc / detail
  94. Try that one more time — galbramc / detail
  95. Use and empty mesh instead of edge only for aflr2 tessellation — galbramc / detail
  96. Fix warning — galbramc / detail
  97. Fix uninitialized data in AFLR3 — galbramc / detail
  98. Add meshRef mapping for aflr2 — galbramc / detail
  99. Updated AFLR4 files for new Quading — galbramc / detail
  100. Upgrade to AFLR 11.3.15 — galbramc / detail
  101. Fix for 2D meshing — galbramc / detail
  102. Forgot a file — galbramc / detail
  103. Another try at the stanalizer — galbramc / detail
  104. Fix stanalizer warning — galbramc / detail
  105. Restore CAPS training files — galbramc / detail
  106. Add support for exodux Nodeset. Add surface morphing for plato aim (no volume morphing). — galbramc / detail
  107. another attempt to eliminate spurious compiler warnings — jfdannen / detail
  108. another attempt to fix spurious warning messages — jfdannen / detail
  109. fix to avoid compiler warnings — jfdannen / detail
  110. numerous updates to Slugs — jfdannen / detail
  111. Fix uninitialized data — galbramc / detail
  112. Fix last commit — galbramc / detail
  113. Fix surface to volume map for aflr3 MultiDomain — galbramc / detail
  114. Plug two aflr3 leaks — galbramc / detail
  115. Fix bug introduced in AFLR4 — galbramc / detail
  116. Fix MultiDomain mapvol for aflr3 — galbramc / detail
  117. Warning and lint fixes — galbramc / detail
  118. Update AFLR3 to work for MultiDomain. Add eto dump for plato AIM. Update TACS dox. Add more plato examples. — galbramc / detail
  119. small fix to morph test — ryan / detail
  120. small fix to morph test — ryan / detail
  121. Tex fix for training — galbramc / detail
  122. Training updates — galbramc / detail
  123. Training fixes and updates — galbramc / detail
  124. Lint fix — galbramc / detail
  125. Fix last commit — galbramc / detail
  126. Fully support 2D meshes for plato and exodus mesher writer — galbramc / detail
  127. Add missing avl derivatives — galbramc / detail
  128. Another round of training updates — galbramc / detail
  129. lint fix — galbramc / detail
  130. Comment on F_UFMTENDIAN environment variable if msesAIM fails to read mses sensx file. — galbramc / detail
  131. Add support for 2D meshes with exodusWriter — galbramc / detail
  132. One more training update — galbramc / detail
  133. Training tex updates — galbramc / detail
  134. Minor training fixes and updates — galbramc / detail
  135. Remove old training files. Some training tex fixes. — galbramc / detail
  136. Update date on training slides — galbramc / detail
  137. Add training tar script — galbramc / detail
  138. Corrections to CAPS session01 — galbramc / detail
  139. Missed a file — galbramc / detail
  140. Updated CAPS training for Jan 2023 — galbramc / detail
  141. update copyright notices — jfdannen / detail
  142. add transform option to Slugs; in Slugs, the KutTriangles option automatically creates a link; add optional GRAFIC to cutTriangles in Slugs; lots of improvements to Slugs, especially for cases with very noisy .stl file — jfdannen / detail
  143. Update Copyright date — galbramc / detail
  144. fix bug that did not allow interactive use of Slugs; add Kut triangles option in Slugs; update testScript.txt to include interactive Slugs testing — jfdannen / detail
  145. Fix surface to volume map for MultiDomain tetgen meshes — galbramc / detail
  146. Uprev to 1.23 — galbramc / detail
  147. dox fix — ryan / detail
  148. Add TACS and MSES to AIM documentation — galbramc / detail
  149. Check for nPoints==0 when filling bounds — galbramc / detail
  150. Check if no bodies have capsDiscipline Structure — galbramc / detail
  151. Rev update and other dox fixes — galbramc / detail
  152. More VLM error handling updates — galbramc / detail
  153. Update documentation for masstran. Update VLM input error messages. — galbramc / detail
  154. Use the body _name if there is only one body in exodus writer — galbramc / detail
  155. Initial commit of 2023 training — galbramc / detail
  156. add comments to cyli_box.csm — jfdannen / detail
  157. unset LD_PRELOAD when checking NETCDFINC — galbramc / detail
  158. Another debug attempt — galbramc / detail
  159. Debugging exodus makefile — galbramc / detail
  160. change sprintf to snprintf in Slugs — jfdannen / detail
  161. Missed one — galbramc / detail
  162. More example updates — galbramc / detail
  163. Replace last sprintf with snprintf — galbramc / detail
  164. fix examples — ryan / detail
  165. fix examples — ryan / detail
  166. Fix double free in astrosAIM — galbramc / detail
  167. Updated config file generator for SU2-7.4.0 — nitin / detail
  168. Warning fix. Double memory free fix. More sprintf replacements. — galbramc / detail
  169. Replace aim sprintf with snprintf — galbramc / detail
  170. scan-build fix — galbramc / detail
  171. Windoze fix — galbramc / detail
  172. masstran now supports analysis sensitvities — galbramc / detail
  173. More example updates for new structures design variable relations — galbramc / detail
  174. Fix for old training — galbramc / detail
  175. Lots of lint fixes — galbramc / detail
  176. Fix array bounds erros and update tests for new structures design variables — galbramc / detail
  177. scan-build fixes — galbramc / detail
  178. Fix legacy example — galbramc / detail
  179. Warning fix — galbramc / detail
  180. Fix previous commits. Add more info in caps_setValue error message. masstranAIM fix. — galbramc / detail
  181. fix of design variables — ryan / detail
  182. fix of design variables — ryan / detail
  183. fix of design variables — ryan / detail
  184. fix of design variables — ryan / detail
  185. add cvxopt debug messages — dongjoon / detail
  186. add more debugging statements — dongjoon / detail
  187. add debugging corsairlite statements
    dongjoon / detail
  188. update corsairlite example for debugging — dongjoon / detail
  189. scan-build fixes — galbramc / detail
  190. Suppress warning — galbramc / detail
  191. Update cyli_box example with semi-colon separated capsGroup tags — galbramc / detail
  192. Add print statements for debugging — dongjoon / detail
  193. add more debugOutput statements to show timing in SLCP — dongjoon / detail
  194. Fix skipping geometry Design_Variable in TACS — galbramc / detail
  195. More attempts at fixing the exodus makefile — galbramc / detail
  196. Stanalizer fix — galbramc / detail
  197. Finally got netcdf.h check correct on both macOS and Linux — galbramc / detail
  198. Another sanitizer fix — galbramc / detail
  199. sanitizer fixes — galbramc / detail
  200. Check for exodusWriter when running plato examples — galbramc / detail
  201. Write out surface to volume index map for plato — galbramc / detail
  202. Lint fix for mses — galbramc / detail
  203. Fix output redirect for detecing netcdf.h — galbramc / detail
  204. Update fun3d test to Mesh_Morph. Add first plato mesh generation examples. — galbramc / detail
  205. Allow tetgen to write MultiDomain mesh files. Updates to Exodus mesh writer. — galbramc / detail
  206. More checks when reading mapbc files in aimMesh — galbramc / detail
  207. Fun3D lint fixes — galbramc / detail
  208. fix - unused variables — ryan / detail
  209. fix - null catch in avlaim — ryan / detail
  210. fix fun3d morphing — ryan / detail
  211. Lint fixes — galbramc / detail
  212. Warning fix — galbramc / detail
  213. Fix last commit — galbramc / detail
  214. Fix waring and add missing files — galbramc / detail
  215. Support tetgen generated regions — galbramc / detail
  216. More lint fixes — galbramc / detail
  217. Fix lint warnings — galbramc / detail
  218. Update Makefile for plato. Add element group names for aflr3 and tetgen. — galbramc / detail
  219. Add plato skeleton AIM — galbramc / detail
  220. Initial cut at an exodus writer — galbramc / detail
  221. Fix for incorrect Design_Variable in masstranAIM — galbramc / detail
  222. Allow unconverged SmoothUV status to continue during parameterization — haimes / detail
  223. Fix masstran derivatives with multiple bodies — galbramc / detail
  224. Fix closeBound to write bound and vertexset files for journaling — haimes / detail
  225. fix typo in corsairlite slcp — dongjoon / detail
  226. delete redundant kulfan csm and finalize multifidelity scripts — dongjoon / detail
  227. Fix warnings from last commit — galbramc / detail
  228. small fix on Kulfan MSES wrapper and removing remnants of full corsair — dongjoon / detail
  229. Remove some depricated checks — galbramc / detail
  230. Journal the writing of files — haimes / detail
  231. Move up setting outLevel — galbramc / detail
  232. Use ocsmLoadFromModel for static geometry. Expost stepSize for finite differnce in pyCAPS. — galbramc / detail
  233. Add the ability to control the sensitivity finite-difference step size from CAPS proper — haimes / detail
  234. Remove old html doc before copying — galbramc / detail
  235. Update cart3dAIM dox — galbramc / detail
  236. Update pyCAPS dox dependencies — galbramc / detail
  237. update corsairlite files to python3.8 compatible — dongjoon / detail
  238. Use TIM viewer in pyCAPS view methods — galbramc / detail
  239. Allow ftype=None for FieldIn/FieldOut data sets — galbramc / detail
  240. update corsairlite slcp wrapper with speed-up updates — dongjoon / detail
  241. Move DESPMTR check into just TACS — galbramc / detail
  242. Don't write DESPMTR to bdf files — galbramc / detail
  243. Fix segFault from last commit, again — haimes / detail
  244. Fix segFault from last commit — haimes / detail
  245. First cut at using MD5 checksums to check API inputs for continuation mode — haimes / detail
  246. Fix masstran memory leak — galbramc / detail
  247. masstran AIM updates — galbramc / detail
  248. Another OCSM FD sensitivity update — haimes / detail
  249. The calling sequence (SetDtime) was wrong and should be after setting the parameter when calculating sensitivities — haimes / detail
  250. add some debugging output capabilities to corsairlite and properly pass problemObj in Kulfan.py — dongjoon / detail
  251. Compile fix for Windoze — galbramc / detail
  252. Fix continuation with a function that returned an error — galbramc / detail
  253. Fix memory leak — galbramc / detail
  254. Fix masstran units and warning — galbramc / detail
  255. Update aim_copyValue — galbramc / detail
  256. Add geometric sensitvities to masstran AIM — galbramc / detail
  257. Suppress 'could not create compact unwind on M1' for now. — galbramc / detail
  258. Allow for FD sensitivities within the AIM sensitivity functions — haimes / detail
  259. add torch tests for kulfan corsairlite examples — dongjoon / detail
  260. update problem.__init__ to work if running pyscript but not from capsMode — jfdannen / detail
  261. Simplify multifidelity examples. Fig unit bug in caps.py. Support pint dimensionless to caps.py. Support udunits import in corsairlite. — galbramc / detail
  262. Fix typo in comment — haimes / detail
  263. Fix multifidelity corsairlite examples — dongjoon / detail
  264. Another cart3d twist example fix — galbramc / detail
  265. Cart3D example fixes — galbramc / detail
  266. Support Cart3D preSpec inputs and bodies. — galbramc / detail
  267. Forgot the pickle — galbramc / detail
  268. One more makefile fix — galbramc / detail
  269. corsair lite makefile example fix — galbramc / detail
  270. Dissable failing corsair examples again — galbramc / detail
  271. Fix corsairlite execution script — galbramc / detail
  272. Fix uninitialized journaling — galbramc / detail
  273. Run all phasing examples for corsairlite — galbramc / detail
  274. corsair fix for Python 3.10. Minor pyCAPS warning fix. — galbramc / detail
  275. Fix scan-build warning — galbramc / detail
  276. Fix for aim_relPath. Fix for sheet bodies with aim_storeMeshRef. — galbramc / detail
  277. fix morph example — ryan / detail
  278. Fix last commit — galbramc / detail
  279. Fix pyCAPS getValue for string and pointers — galbramc / detail
  280. Fix destroy_aimStorage to resolve segfault — galbramc / detail
  281. lint fixes — galbramc / detail
  282. I think we have mighty morphing powers — galbramc / detail
  283. test/fix morph — ryan / detail
  284. Skip wake with morphing for now. — galbramc / detail
  285. Fixes for mighty morphing powers, still needs some more testing. — galbramc / detail
  286. fix missing file — ryan / detail
  287. fix missing file — ryan / detail
  288. // This software has been cleared for public release on 05 Nov 2020, case number 88ABW-2020-3462.

    #include <string.h>
    #include <stdio.h>
    #include <errno.h>
    #include <ctype.h>

    #include "egads.h"        // Bring in egads utilss
    #include "capsTypes.h"    // Bring in CAPS types
    #include "aimUtil.h"      // Bring in AIM utils
    #include "aimMesh.h"      // Bring in AIM meshing

    #include "miscUtils.h"    // Bring in misc. utility functions
    #include "meshUtils.h"    // Bring in meshing utility functions
    #include "cfdTypes.h"     // Bring in cfd specific types
    #include "cfdUtils.h"
    #include "tecplotUtils.h" // Bring in tecplot utility functions
    #include "fun3dUtils.h"   // Bring in fun3d utility header
    #include "fun3dInputs.h"
    #include "ugridWriter.h"


    #ifdef WIN32
    #define strcasecmp  stricmp
    #define strncasecmp _strnicmp
    #endif


    // Extract the FEPOINT Tecoplot data from a FUN3D Aero-Loads file (connectivity is ignored) - dataMatrix = [numVariable][numDataPoint]
    int fun3d_readAeroLoad(void *aimInfo, char *filename, int *numVariable, char **variableName[],
                           int *numDataPoint, double ***dataMatrix)
    {

        int status = CAPS_SUCCESS; // Function return
        int i, j; // Indexing

        size_t linecap = 0;

        char *line = NULL; // Temporary line holder
        char *tempStr = NULL, *tempStr2 = NULL; // Temporary strings
        int stringLen = 0; // Length of string holder

        FILE *fp = NULL; // File pointer

        // Open file
        fp = aim_fopen(aimInfo, filename, "r");
        if (fp == NULL) {
            AIM_ERROR(aimInfo, "Unable to open file: %s\n", filename);
            return CAPS_IOERR;
        }

        printf("Reading FUN3D AeroLoad File - %s!!!!!!\n", filename);

        *numVariable = 0;
        *numDataPoint = 0;
        // Loop through file line by line until we have determined how many variables and data points there are
        while (*numVariable == 0 || *numDataPoint == 0) {

            // Get line from file
            status = getline(&line, &linecap, fp);
            if ((status < 0) || (line == NULL)) break;

            // Get variable list if available in file line
            if (strncmp("variables=", line, strlen("variables=")) == 0) {

                // Pull out substring at first occurrence of "
                tempStr = strstr(line, "\"");

                // Create a temperory string of the variables in a the folling format - ["a","ae"]
                stringLen  = strlen(tempStr)-1 + 2;

                tempStr2 = (char *) EG_alloc((stringLen +1)*sizeof(char *));
                if (tempStr2 == NULL) {
                    fclose(fp);
                    if (line != NULL) EG_free(line);
                    return EGADS_MALLOC;
                }

                tempStr2[0] = '[';
                strncpy(tempStr2+1, tempStr, strlen(tempStr)-1);
                tempStr2[stringLen-1] = ']';
                tempStr2[stringLen] = '\0';

                // Sort string into an array of strings
                status =  string_toStringDynamicArray(tempStr2, numVariable, variableName);

                if (tempStr2 != NULL) EG_free(tempStr2);
                tempStr2 = NULL;

                if (status != CAPS_SUCCESS) goto cleanup;

                // Print out list of variables found in load file
                printf("Variables found in file %s:\n",filename);
                for (i = 0; i < *numVariable; i++) printf("Variable %d = %s\n", i, (*variableName)[i]);
            }

            // Get the number of data points in file if available in file line
            if (strncmp("zone t=", line, strlen("zone t=")) == 0) {

                // Pull out substring at first occurrence of i=
                tempStr = strstr(line, "i=");

                // Retrieve the i= value
                sscanf(&tempStr[2], "%d", numDataPoint);

                // Print out the number of data points found in load file
                printf("Number of data points = %d, in file %s\n", *numDataPoint, filename);
            }

        }

        if (*numVariable != 0 && *numDataPoint != 0) {

            // Allocate dataMatrix array
            AIM_FREE(*dataMatrix);

            AIM_ALLOC(*dataMatrix, (*numVariable), double *, aimInfo, status);
            for (i = 0; i < *numVariable; i++) (*dataMatrix)[i] = NULL;

            for (i = 0; i < *numVariable; i++) {
                AIM_ALLOC((*dataMatrix)[i], (*numDataPoint), double, aimInfo, status);
            }

            // Loop through the file and fill up the data matrix
            for (j = 0; j < *numDataPoint; j++) {
                for (i = 0; i < *numVariable; i++) {
                    fscanf(fp, "%lf", &(*dataMatrix)[i][j]);
                }
            }

            // Output the first row of the dataMatrix
            //for (i = 0; i < *numVariable; i++) printf("Variable %d - %.6f\n", i, (*dataMatrix)[i][0]);

        } else {

            printf("No data values extracted from file - %s",filename);
            status = CAPS_BADVALUE;
        }

    cleanup:
        if (fp != NULL) fclose(fp);

        if (status != CAPS_SUCCESS) {
          if (*dataMatrix != NULL) {
            for (j = 0; j < *numVariable; j++) {
              AIM_FREE((*dataMatrix)[j]);
            }
            AIM_FREE((*dataMatrix));
          }
        }

        EG_free(line);
        return status;
    }


    static int
    fun3d_read2DBinaryUgrid(void *aimInfo, FILE *fp, meshStruct *surfaceMesh)
    {
      int    status = CAPS_SUCCESS;

      int    numNode, numLine, numTriangle, numQuadrilateral;
      int    numTetrahedral, numPyramid, numPrism, numHexahedral;
      int    i, elementIndex, numPoint, bcID;
      double *coords = NULL;

      /* we get a binary UGRID file */
      status = fread(&numNode,          sizeof(int), 1, fp);
      if (status != 1) { status = CAPS_IOERR; AIM_STATUS(aimInfo, status); }
      status = fread(&numTriangle,      sizeof(int), 1, fp);
      if (status != 1) { status = CAPS_IOERR; AIM_STATUS(aimInfo, status); }
      status = fread(&numQuadrilateral, sizeof(int), 1, fp);
      if (status != 1) { status = CAPS_IOERR; AIM_STATUS(aimInfo, status); }
      status = fread(&numTetrahedral,   sizeof(int), 1, fp);
      if (status != 1) { status = CAPS_IOERR; AIM_STATUS(aimInfo, status); }
      status = fread(&numPyramid,       sizeof(int), 1, fp);
      if (status != 1) { status = CAPS_IOERR; AIM_STATUS(aimInfo, status); }
      status = fread(&numPrism,         sizeof(int), 1, fp);
      if (status != 1) { status = CAPS_IOERR; AIM_STATUS(aimInfo, status); }
      status = fread(&numHexahedral,    sizeof(int), 1, fp);
      if (status != 1) { status = CAPS_IOERR; AIM_STATUS(aimInfo, status); }

      if ( numTetrahedral   +
           numPyramid       +
           numPrism         +
           numHexahedral  > 0) {
        AIM_ERROR(aimInfo, "Expecting a 2D ugrid file!!!");
        status = CAPS_IOERR;
        goto cleanup;
      }

      /*
      printf("\n Header from UGRID file: %d  %d %d  %d %d %d %d\n", numNode,
             numTriangle, numQuadrilateral, numTetrahedral, numPyramid, numPrism,
             numHexahedral);
       */

      AIM_ALLOC(coords, 3*numNode, double, aimInfo, status);

      /* read all of the vertices */
      status = fread(coords, sizeof(double), 3*numNode, fp);
      if (status != 3*numNode) { status = CAPS_IOERR; AIM_STATUS(aimInfo, status); }

      surfaceMesh->analysisType = UnknownMeshAnalysis;

      // Set that this is a volume mesh
      surfaceMesh->meshType = Surface2DMesh;

      // Numbers
      surfaceMesh->numNode = numNode;
      surfaceMesh->numElement = numTriangle + numQuadrilateral;

      surfaceMesh->meshQuickRef.useStartIndex = (int) true;

      surfaceMesh->meshQuickRef.numTriangle      = numTriangle;
      surfaceMesh->meshQuickRef.numQuadrilateral = numQuadrilateral;

      // Nodes - allocate
      AIM_ALLOC(surfaceMesh->node, surfaceMesh->numNode, meshNodeStruct, aimInfo, status);

      // Initialize
      for (i = 0; i < surfaceMesh->numNode; i++) {
          status = initiate_meshNodeStruct(&surfaceMesh->node[i],
                                            surfaceMesh->analysisType);
          AIM_STATUS(aimInfo, status);
      }

      // Nodes - set
      for (i = 0; i < surfaceMesh->numNode; i++) {

        // Copy node data
        surfaceMesh->node[i].nodeID = i+1;

        surfaceMesh->node[i].xyz[0] = coords[3*i+0];
        surfaceMesh->node[i].xyz[1] = coords[3*i+1];
        surfaceMesh->node[i].xyz[2] = coords[3*i+2];
      }
      AIM_FREE(coords);

      // Elements - allocate
      AIM_ALLOC(surfaceMesh->element, surfaceMesh->numElement, meshElementStruct, aimInfo, status);

      // Initialize
      for (i = 0; i < surfaceMesh->numElement; i++ ) {
          status = initiate_meshElementStruct(&surfaceMesh->element[i],
                                               surfaceMesh->analysisType);
          AIM_STATUS(aimInfo, status);
      }

      // Start of element index
      elementIndex = 0;

      // Elements -Set triangles
      if (numTriangle > 0)
        surfaceMesh->meshQuickRef.startIndexTriangle = elementIndex;

      numPoint = mesh_numMeshConnectivity(Triangle);
      for (i = 0; i < numTriangle; i++) {

          surfaceMesh->element[elementIndex].elementType = Triangle;
          surfaceMesh->element[elementIndex].elementID   = elementIndex+1;

          status = mesh_allocMeshElementConnectivity(&surfaceMesh->element[elementIndex]);
          if (status != CAPS_SUCCESS) goto cleanup;

          // read the element connectivity
          status = fread(surfaceMesh->element[elementIndex].connectivity,
                         sizeof(int), numPoint, fp);
          if (status != numPoint) { status = CAPS_IOERR; AIM_STATUS(aimInfo, status); }

          elementIndex += 1;
      }

      // Elements -Set quadrilateral
      if (numQuadrilateral > 0)
        surfaceMesh->meshQuickRef.startIndexQuadrilateral = elementIndex;

      numPoint = mesh_numMeshConnectivity(Quadrilateral);
      for (i = 0; i < numQuadrilateral; i++) {

          surfaceMesh->element[elementIndex].elementType = Quadrilateral;
          surfaceMesh->element[elementIndex].elementID   = elementIndex+1;

          status = mesh_allocMeshElementConnectivity(&surfaceMesh->element[elementIndex]);
          if (status != CAPS_SUCCESS) goto cleanup;

          // read the element connectivity
          status = fread(surfaceMesh->element[elementIndex].connectivity,
                         sizeof(int), numPoint, fp);
          if (status != numPoint) { status = CAPS_IOERR; AIM_STATUS(aimInfo, status); }

          elementIndex += 1;
      }

      // skip face ID section of the file
      status = fseek(fp, (numTriangle + numQuadrilateral)*sizeof(int), SEEK_CUR);
      if (status != 0) { status = CAPS_IOERR; AIM_STATUS(aimInfo, status); }

      // Get the number of Line elements
      status = fread(&numLine, sizeof(int), 1, fp);
      if (status != 1) { status = CAPS_IOERR; AIM_STATUS(aimInfo, status); }

      // Elements - re-allocate with Line elements
      surfaceMesh->meshQuickRef.numLine = numLine;
      AIM_REALL(surfaceMesh->element, surfaceMesh->numElement+numLine, meshElementStruct, aimInfo, status);

      surfaceMesh->meshQuickRef.startIndexLine = elementIndex;

      // Initialize
      for (i = surfaceMesh->numElement; i < surfaceMesh->numElement+numLine; i++ ) {
          status = initiate_meshElementStruct(&surfaceMesh->element[i],
                                               surfaceMesh->analysisType);
          AIM_STATUS(aimInfo, status);
      }
      surfaceMesh->numElement += numLine;

      numPoint = mesh_numMeshConnectivity(Line);
      for (i = 0; i < numLine; i++) {

        surfaceMesh->element[elementIndex].elementType = Line;
        surfaceMesh->element[elementIndex].elementID   = elementIndex+1;

        status = mesh_allocMeshElementConnectivity(&surfaceMesh->element[elementIndex]);
        AIM_STATUS(aimInfo, status);

        // read the element connectivity
        status = fread(surfaceMesh->element[elementIndex].connectivity,
                       sizeof(int), numPoint, fp);
        if (status != numPoint) { status = CAPS_IOERR; AIM_STATUS(aimInfo, status); }
        status = fread(&bcID, sizeof(int), 1, fp);
        if (status != 1) { status = CAPS_IOERR; AIM_STATUS(aimInfo, status); }

        surfaceMesh->element[elementIndex].markerID = bcID;

        elementIndex += 1;
      }

      status = CAPS_SUCCESS;

      cleanup:
          if (status != CAPS_SUCCESS)
            printf("Premature exit in getUGRID status = %d\n", status);

          EG_free(coords); coords = NULL;

          return status;
    }


    // Create a 3D BC for FUN3D from a 2D mesh
    int fun3d_2DBC(void *aimInfo,
                   cfdBoundaryConditionStruct *bcProps)
    {
        int status; // Function return status

        int i; // Indexing

        int faceBCIndex = -1, extrusionBCIndex = -1;

        // Find the faceBCIndex for the symmetry plane
        for (i = 0; i < bcProps->numSurfaceProp-1; i++) {
          if (bcProps->surfaceProp[i].surfaceType == Symmetry) {
            faceBCIndex = bcProps->surfaceProp[i].bcID;
            break;
          }
        }

        if (faceBCIndex == -1) {
          // Add plane boundary condition
          AIM_REALL(bcProps->surfaceProp, bcProps->numSurfaceProp+1, cfdSurfaceStruct, aimInfo, status);
          bcProps->numSurfaceProp += 1;

          status = initiate_cfdSurfaceStruct(&bcProps->surfaceProp[bcProps->numSurfaceProp-1]);
          AIM_STATUS(aimInfo, status);

          bcProps->surfaceProp[bcProps->numSurfaceProp-1].surfaceType = Symmetry;
          bcProps->surfaceProp[bcProps->numSurfaceProp-1].symmetryPlane = 1;

          // Find largest index value for bcID and set it plus 1 to the new surfaceProp
          for (i = 0; i < bcProps->numSurfaceProp-1; i++) {
              if (bcProps->surfaceProp[i].bcID >= faceBCIndex) {
                faceBCIndex = bcProps->surfaceProp[i].bcID + 1;
              }
          }
          bcProps->surfaceProp[bcProps->numSurfaceProp-1].bcID = faceBCIndex;
        }


        // Add extruded plane boundary condition
        AIM_REALL(bcProps->surfaceProp, bcProps->numSurfaceProp+1, cfdSurfaceStruct, aimInfo, status);
        bcProps->numSurfaceProp += 1;

        status = initiate_cfdSurfaceStruct(&bcProps->surfaceProp[bcProps->numSurfaceProp-1]);
        AIM_STATUS(aimInfo, status);

        bcProps->surfaceProp[bcProps->numSurfaceProp-1].surfaceType = Symmetry;
        bcProps->surfaceProp[bcProps->numSurfaceProp-1].symmetryPlane = 2;

        // Find largest index value for bcID and set it plus 1 to the new surfaceProp
        for (i = 0; i < bcProps->numSurfaceProp-1; i++) {
            if (bcProps->surfaceProp[i].bcID >= extrusionBCIndex) {
              extrusionBCIndex = bcProps->surfaceProp[i].bcID + 1;
            }
        }
        bcProps->surfaceProp[bcProps->numSurfaceProp-1].bcID = extrusionBCIndex;

        status = CAPS_SUCCESS;

    cleanup:
        return status;
    }


    // Create a 3D mesh for FUN3D from a 2D mesh
    int fun3d_2DMesh(void *aimInfo,
                     aimMeshRef *meshRef,
                     const char *projectName,
                     const mapAttrToIndexStruct *groupMap)
    {

        int status; // Function return status

        int i; // Indexing

        int faceBCIndex = -1, extrusionBCIndex = -1;

        double extrusion = -1.0; // Extrusion length

        // Flip coordinates
        int xMeshConstant = (int) true, yMeshConstant = (int) true, zMeshConstant= (int) true; // 2D mesh checks
        double tempCoord;

        meshStruct surfaceMesh;
        meshStruct volumeMesh;

        char filename[PATH_MAX];
    //    int elementIndex;
        FILE *fp = NULL;

        status = initiate_meshStruct(&surfaceMesh);
        AIM_STATUS(aimInfo, status);

        status = initiate_meshStruct(&volumeMesh);
        AIM_STATUS(aimInfo, status);

        sprintf(filename, "%s%s", meshRef->fileName, MESHEXTENSION);

        fp = fopen(filename, "rb");
        if (fp == NULL) {
          AIM_ERROR(aimInfo, "Cannot open file: %s\n", filename);
          status = CAPS_IOERR;
          goto cleanup;
        }

        status = fun3d_read2DBinaryUgrid(aimInfo, fp, &surfaceMesh);
        AIM_STATUS(aimInfo, status);

        // add boundary elements if they are missing
        if (surfaceMesh.meshQuickRef.numLine == 0) {
            status = mesh_addTess2Dbc(aimInfo, &surfaceMesh, groupMap);
            if (status != CAPS_SUCCESS) goto cleanup;
        }

        // Set the symmetry index for all Tri/Quad
        for (i = 0; i < surfaceMesh.numElement; i++) {

            if (surfaceMesh.element[i].elementType != Triangle &&
                surfaceMesh.element[i].elementType != Quadrilateral) {
                continue;
            }

            surfaceMesh.element[i].markerID = faceBCIndex;
        }

    #ifdef I_DONT_THINK_WE_NEED_THIS
        // Determine a suitable boundary index of the extruded plane
        *extrusionBCIndex = faceBCIndex;
        for (i = 0; i < surfaceMesh.meshQuickRef.numLine; i++) {

            if (surfaceMesh.meshQuickRef.startIndexLine >= 0) {
                elementIndex = surfaceMesh.meshQuickRef.startIndexLine + i;
            } else {
                elementIndex = surfaceMesh.meshQuickRef.listIndexLine[i];
            }

            marker = surfaceMesh.element[elementIndex].markerID;

            if (marker > *extrusionBCIndex)  {
                *extrusionBCIndex = marker;
            }
        }
        *extrusionBCIndex += 1;
    #endif

        // Check to make sure the face is on the y = 0 plane
        for (i = 0; i < surfaceMesh.numNode; i++) {

            if (surfaceMesh.node[i].xyz[1] != 0.0) {
                printf("\nSurface mesh is not on y = 0.0 plane, FUN3D could fail during execution for this 2D mesh!!!\n");
                break;
            }
        }

        // Constant x?
        for (i = 0; i < surfaceMesh.numNode; i++) {
            if ((surfaceMesh.node[i].xyz[0] - surfaceMesh.node[0].xyz[0]) > 1E-7) {
                xMeshConstant = (int) false;
                break;
            }
        }

        // Constant y?
        for (i = 0; i < surfaceMesh.numNode; i++) {
            if ((surfaceMesh.node[i].xyz[1] - surfaceMesh.node[0].xyz[1] ) > 1E-7) {
                yMeshConstant = (int) false;
                break;
            }
        }

        // Constant z?
        for (i = 0; i < surfaceMesh.numNode; i++) {
            if ((surfaceMesh.node[i].xyz[2] - surfaceMesh.node[0].xyz[2]) > 1E-7) {
                zMeshConstant = (int) false;
                break;
            }
        }

        if (yMeshConstant != (int) true) {
            printf("FUN3D expects 2D meshes be in the x-z plane... attempting to rotate mesh!\n");

            if (xMeshConstant == (int) true && zMeshConstant == (int) false) {
                printf("Swapping y and x coordinates!\n");
                for (i = 0; i < surfaceMesh.numNode; i++) {
                    tempCoord = surfaceMesh.node[i].xyz[0];
                    surfaceMesh.node[i].xyz[0] = surfaceMesh.node[i].xyz[1];
                    surfaceMesh.node[i].xyz[1] = tempCoord;
                }

            } else if(xMeshConstant == (int) false && zMeshConstant == (int) true) {

                printf("Swapping y and z coordinates!\n");
                for (i = 0; i < surfaceMesh.numNode; i++) {
                    tempCoord = surfaceMesh.node[i].xyz[2];
                    surfaceMesh.node[i].xyz[2] = surfaceMesh.node[i].xyz[1];
                    surfaceMesh.node[i].xyz[1] = tempCoord;
                }

            } else {
                AIM_ERROR(aimInfo, "Unable to rotate mesh!\n");
                status = CAPS_NOTFOUND;
                goto cleanup;
            }
        }

        status = extrude_SurfaceMesh(extrusion, extrusionBCIndex, &surfaceMesh, &volumeMesh);
        AIM_STATUS(aimInfo, status);

        strcpy(filename, projectName);

        // Write AFLR3
    /*@-nullpass@*/
         status = mesh_writeAFLR3(aimInfo, filename,
                                  0, // write binary file
                                  &volumeMesh,
                                  1.0);
    /*@+nullpass@*/
         AIM_STATUS(aimInfo, status);

        status = CAPS_SUCCESS;

    cleanup:
        if (status != CAPS_SUCCESS) {
            printf("Error: Premature exit in fun3d_2DMesh status = %d\n", status);
        }

    /*@-dependenttrans@*/
        if (fp != NULL) fclose(fp);
    /*@+dependenttrans@*/

        // Destroy meshes
        (void) destroy_meshStruct(&surfaceMesh);
        (void) destroy_meshStruct(&volumeMesh);

        return status;
    }


    // Remove unused nodes from dataMatrix and update connectivity matrix
    static int fun3d_removeUnused(void *aimInfo, int numVariable, int *numNode,  int used[],
                                  double ***data, /*@null@*/ int *numConnect,
                                  /*@null@*/ int *dataConnectMatrix)
    {
        int i, j, k; //Indexing
        int status;

        int *usedNode=NULL; // Freeable

        double **dataMatrix;

        dataMatrix = *data;

        // Copy used node array
        usedNode = (int *) EG_alloc(*numNode*sizeof(int));
        if (usedNode == NULL) {
            status = EGADS_MALLOC;
            goto cleanup;
        }
        for (i = 0; i < *numNode; i++) usedNode[i] = used[i];

        // Remove unused nodes
        j = 0;
        for (i = 0; i< *numNode; i++ ) {
            if (usedNode[i] == (int) false || usedNode[i] < 0) continue;

            usedNode[i] = j+1; // Set i-th node to essentially the node ID,  1-bias

            j +=1;
        }

        j = 0;
        for (i = 0; i< *numNode; i++ ) {
            if (usedNode[i] == (int) false || usedNode[i] < 0) continue;

            for (k = 0; k < numVariable; k++) {
                dataMatrix[k][j] = dataMatrix[k][i]; //Re-order dataMatrix - bubbling i'th index to j
            }

            j += 1;
        }

        *numNode = j; // New number of nodes

        // Redo connectivity
        if (dataConnectMatrix != NULL) {
            AIM_NOTNULL(numConnect, aimInfo, status);
            j = 0;
            for (i = 0; i < *numConnect; i++) {

                if (usedNode[dataConnectMatrix[4*i+ 0]-1] == (int) false) continue;
                if (usedNode[dataConnectMatrix[4*i+ 1]-1] == (int) false) continue;
                if (usedNode[dataConnectMatrix[4*i+ 2]-1] == (int) false) continue;
                if (usedNode[dataConnectMatrix[4*i+ 3]-1] == (int) false) continue;

                for (k = 0; k < 4; k++) {
                   dataConnectMatrix[4*j+ k] = usedNode[dataConnectMatrix[4*i+ k]-1];
                }

                j += 1;
            }

            *numConnect = j; // New number of elements
        }

        status = CAPS_SUCCESS;

    cleanup:
        if (status != CAPS_SUCCESS)
            printf("Error: Premature exit in fun3d_removeUnused status = %d\n",
                   status);

        if (usedNode != NULL) EG_free(usedNode);
        return status;
    }


    // Write FUN3D data transfer files
    int fun3d_dataTransfer(void *aimInfo,
                           const char *projectName,
                           const mapAttrToIndexStruct *groupMap,
                           const cfdBoundaryConditionStruct bcProps,
                           aimMeshRef *meshRef,
                           /*@null@*/ cfdModalAeroelasticStruct *eigenVector)
    {

        /*! \page dataTransferFUN3D FUN3D Data Transfer
         *
         * \section dataToFUN3D Data transfer to FUN3D (FieldIn)
         *
         * <ul>
         *  <li> <B>"Displacement"</B> </li> <br>
         *   Retrieves nodal displacements (as from a structural solver)
         *   and updates FUN3D's surface mesh; a new [project_name]_body1.dat file is written out which may
         *   be loaded into FUN3D to update the surface mesh/move the volume mesh using the FUN3D command line option
         *   -\-read_surface_from_file
         * </ul>
         *
         * <ul>
         *  <li> <B>"EigenVector_#"</B> </li> <br>
         *   Retrieves modal eigen-vectors from a structural solver, where "#" should be replaced by the
         *   corresponding mode number for the eigen-vector (eg. EigenVector_3 would correspond to the third mode,
         *   while EigenVector_6 would be the sixth mode) . A [project_name]_body1_mode#.dat file is written
         *   out for each mode.
         * </ul>
         *
         */

        int status; // Function return status
        int i, j, ibound, ibody, iface, iglobal, eigenIndex; // Indexing

        int stringLength = 0;

        char *filename = NULL;

        // Discrete data transfer variables
        capsDiscr *discr;
        char **boundName = NULL;
        int numBoundName = 0;
        enum capsdMethod dataTransferMethod;
        int numDataTransferPoint;
        int dataTransferRank;
        double *dataTransferData;
        char   *units;

        int state, nGlobal, *globalOffset=NULL, nFace;
        ego body, *faces=NULL;

        int alen, ntri, atype, itri, ielem;
        const double *face_xyz, *face_uv, *reals;
        const int *face_ptype, *face_pindex, *face_tris, *face_tric, *nquad=NULL;
        const char *string, *groupName = NULL;

        // Variables used in global node mapping
        int ptype, pindex;
        double xyz[3];

        // Data transfer Out variables
        const char *dataOutName[] = {"x","y","z", "id", "dx", "dy", "dz"};
        const int dataOutFormat[] = {Double, Double, Double, Integer, Double, Double, Double};

        double **dataOutMatrix = NULL;
        int *dataConnectMatrix = NULL;

        int numOutVariable = 7;
        int numOutDataPoint = 0;
        int numOutDataConnect = 0;

        const char fileExtBody[] = "_body1";
        const char fileExt[] = ".dat";
        const char fileExtMode[] = "_mode";

        int foundDisplacement = (int) false, foundEigenVector = (int) false;

        int marker;

        int numUsedNode = 0, numUsedConnectivity = 0, usedElems;
        int *usedNode = NULL;

        status = aim_getBounds(aimInfo, &numBoundName, &boundName);
        AIM_STATUS(aimInfo, status);

        foundDisplacement = foundEigenVector = (int) false;
        for (ibound = 0; ibound < numBoundName; ibound++) {
          AIM_NOTNULL(boundName, aimInfo, status);

          status = aim_getDiscr(aimInfo, boundName[ibound], &discr);
          if (status != CAPS_SUCCESS) continue;

          status = aim_getDataSet(discr,
                                  "Displacement",
                                  &dataTransferMethod,
                                  &numDataTransferPoint,
                                  &dataTransferRank,
                                  &dataTransferData,
                                  &units);

          if (status == CAPS_SUCCESS) { // If we do have data ready is the rank correct

            foundDisplacement = (int) true;

            if (dataTransferRank != 3) {
              AIM_ERROR(aimInfo, "Displacement transfer data found however rank is %d not 3!!!!\n", dataTransferRank);
              status = CAPS_BADRANK;
              goto cleanup;
            }
            break;
          }

          if (eigenVector != NULL) {
            for (eigenIndex = 0; eigenIndex < eigenVector->numEigenValue; eigenIndex++) {

              status = aim_getDataSet(discr,
                                      eigenVector->eigenValue[eigenIndex].name,
                                      &dataTransferMethod,
                                      &numDataTransferPoint,
                                      &dataTransferRank,
                                      &dataTransferData,
                                      &units);

              if (status == CAPS_SUCCESS) { // If we do have data ready is the rank correct

                foundEigenVector = (int) true;

                if (dataTransferRank != 3) {
                  AIM_ERROR(aimInfo, "EigenVector transfer data found however rank is %d not 3!!!!\n", dataTransferRank);
                  status = CAPS_BADRANK;
                  goto cleanup;
                }
                break;
              }
            } // Loop through EigenValues

            if (foundEigenVector == (int) true) break;

          } // If eigen-vectors provided
        } // Loop through transfer names

        if (foundDisplacement != (int) true && foundEigenVector != (int) true) {
          printf("Info: No recognized data transfer names found.\n");
          status = CAPS_NOTFOUND;
          goto cleanup;
        }

        // Ok looks like we have displacements/EigenVectors to get so lets continue
        printf("Writing FUN3D data transfer files\n");

        // Allocate data arrays that are going to be output
        AIM_ALLOC(dataOutMatrix, numOutVariable, double*, aimInfo, status);
        for (i = 0; i < numOutVariable; i++) dataOutMatrix[i] = NULL;

        AIM_ALLOC(globalOffset, meshRef->nmap+1, int, aimInfo, status);
        numOutDataPoint = 0;
        ielem = 0;
        globalOffset[0] = 0;
        for (i = 0; i < meshRef->nmap; i++) {
          if (meshRef->maps[i].tess == NULL) continue;

          status = EG_statusTessBody(meshRef->maps[i].tess, &body, &state, &nGlobal);
          AIM_STATUS(aimInfo, status);

          // re-allocate data arrays
          for (j = 0; j < numOutVariable; j++) {
            AIM_REALL(dataOutMatrix[j], numOutDataPoint + nGlobal, double, aimInfo, status);
          }
          AIM_REALL(usedNode, numOutDataPoint + nGlobal, int, aimInfo, status);
          for (j = globalOffset[0]; j < numOutDataPoint + nGlobal; j++) usedNode[j] = (int) false;


          for (iglobal = 0; iglobal < nGlobal; iglobal++) {
            status = EG_getGlobal(meshRef->maps[i].tess,
                                  iglobal+1, &ptype, &pindex, xyz);
            AIM_STATUS(aimInfo, status);

            // First just set the Coordinates
            dataOutMatrix[0][globalOffset[i]+iglobal] = xyz[0];
            dataOutMatrix[1][globalOffset[i]+iglobal] = xyz[1];
            dataOutMatrix[2][globalOffset[i]+iglobal] = xyz[2];

            // Volume mesh node ID
            dataOutMatrix[3][globalOffset[i]+iglobal] = meshRef->maps[i].map[iglobal];

            // Delta displacements
            dataOutMatrix[4][i] = 0;
            dataOutMatrix[5][i] = 0;
            dataOutMatrix[6][i] = 0;
          }

          // check if the tessellation has a mixture of quad and tess
          status = EG_attributeRet(meshRef->maps[i].tess, ".mixed",
                                   &atype, &alen, &nquad, &reals, &string);
          if (status != EGADS_SUCCESS &&
              status != EGADS_NOTFOUND) AIM_STATUS(aimInfo, status);

          status = EG_getBodyTopos(body, NULL, FACE, &nFace, &faces);
          AIM_STATUS(aimInfo, status);
          for (iface = 0; iface < nFace; iface++) {
            // get the face tessellation
            status = EG_getTessFace(meshRef->maps[i].tess, iface+1, &alen, &face_xyz, &face_uv,
                                    &face_ptype, &face_pindex, &ntri, &face_tris, &face_tric);
            AIM_STATUS(aimInfo, status);
            AIM_NOTNULL(faces, aimInfo, status);

            status = retrieve_CAPSGroupAttr(faces[iface], &groupName);
            if (status == EGADS_SUCCESS) {
              AIM_NOTNULL(groupName, aimInfo, status);
              status = get_mapAttrToIndexIndex(groupMap, groupName, &marker);
              if (status != CAPS_SUCCESS) {
                AIM_ERROR(aimInfo, "No capsGroup \"%s\" not found in attribute map", groupName);
                goto cleanup;
              }
            } else {
              AIM_ERROR(aimInfo, "No capsGroup on face %d", iface+1);
              print_AllAttr(aimInfo, faces[iface]);
              goto cleanup;
            }

            //  To keep with the moving_bodying input we will assume used nodes are all inviscid and viscous surfaces instead
            //                        usedNode[k] = (int) true;
            usedElems = (int) false;
            for (j = 0; j < bcProps.numSurfaceProp; j++) {
              if (marker != bcProps.surfaceProp[j].bcID) continue;

              if (bcProps.surfaceProp[j].surfaceType == Viscous ||
                  bcProps.surfaceProp[j].surfaceType == Inviscid) {
                  usedElems = (int) true;
              }
              break;
            }

            if (nquad == NULL) { // all triangles

              // re-allocate data arrays
              AIM_REALL(dataConnectMatrix, 4*(numOutDataConnect + ntri), int, aimInfo, status);

              for (itri = 0; itri < ntri; itri++, ielem++) {
                for (j = 0; j < 3; j++) {
                  status = EG_localToGlobal(meshRef->maps[i].tess, iface+1, face_tris[3*itri+j], &iglobal);
                  AIM_STATUS(aimInfo, status);
                  dataConnectMatrix[4*ielem+j] = globalOffset[i] + iglobal;
                  usedNode[globalOffset[i]+iglobal-1] = usedElems;
                }
                // repeat the last node for triangles
                dataConnectMatrix[4*ielem+3] = dataConnectMatrix[4*ielem+2];
              }

              numOutDataConnect += ntri;

            } else { // mixture of tri and quad elements

              // re-allocate data arrays
              AIM_REALL(dataConnectMatrix, 4*(numOutDataConnect + ntri-nquad[iface]), int, aimInfo, status);

              // process triangles
              for (itri = 0; itri < ntri-2*nquad[iface]; itri++, ielem++) {
                for (j = 0; j < 3; j++) {
                  status = EG_localToGlobal(meshRef->maps[i].tess, iface+1, face_tris[3*itri+j], &iglobal);
                  AIM_STATUS(aimInfo, status);
                  dataConnectMatrix[4*ielem+j] = globalOffset[i] + iglobal;
                  usedNode[globalOffset[i]+iglobal-1] = usedElems;
                }
                // repeat the last node for triangle
                dataConnectMatrix[4*ielem+3] = dataConnectMatrix[4*ielem+2];
              }
              // process quads
              for (; itri < ntri; itri++, ielem++) {
                for (j = 0; j < 3; j++) {
                  status = EG_localToGlobal(meshRef->maps[i].tess, iface+1, face_tris[3*itri+j], &iglobal);
                  AIM_STATUS(aimInfo, status);
                  dataConnectMatrix[4*ielem+j] = globalOffset[i] + iglobal;
                  usedNode[globalOffset[i]+iglobal-1] = usedElems;
                }

                // add the last node from the 2nd triangle to make the quad
                itri++;
                status = EG_localToGlobal(meshRef->maps[i].tess, iface+1, face_tris[3*itri+2], &iglobal);
                AIM_STATUS(aimInfo, status);
                dataConnectMatrix[4*ielem+3] = globalOffset[i] + iglobal;
                usedNode[globalOffset[i]+iglobal-1] = usedElems;
              }

              numOutDataConnect += ntri-nquad[iface];
            }

          }
          AIM_FREE(faces);

          numOutDataPoint += nGlobal;
          globalOffset[i+1] = globalOffset[i] + nGlobal;
        }

        // Re-loop through transfers - if we are doing displacements
        if (foundDisplacement == (int) true) {

          for (ibound = 0; ibound < numBoundName; ibound++) {
            AIM_NOTNULL(boundName, aimInfo, status);

            status = aim_getDiscr(aimInfo, boundName[ibound], &discr);
            if (status != CAPS_SUCCESS) continue;

            status = aim_getDataSet(discr,
                                    "Displacement",
                                    &dataTransferMethod,
                                    &numDataTransferPoint,
                                    &dataTransferRank,
                                    &dataTransferData,
                                    &units);
            if (status != CAPS_SUCCESS) continue; // If no elements in this object skip to next transfer name

            if (numDataTransferPoint != discr->nPoints &&
                numDataTransferPoint > 1) {
              AIM_ERROR(aimInfo, "Developer error!! %d != %d", numDataTransferPoint, discr->nPoints);
              status = CAPS_MISMATCH;
              goto cleanup;
            }

            for (i = 0; i < discr->nPoints; i++) {

              ibody   = discr->tessGlobal[2*i+0];
              iglobal = discr->tessGlobal[2*i+1];

              status = EG_getGlobal(discr->bodys[ibody-1].tess,
                                    iglobal, &ptype, &pindex, xyz);
              AIM_STATUS(aimInfo, status);

              // Find the disc tessellation in the original list of tessellations
              for (j = 0; j < meshRef->nmap; j++) {
                if (discr->bodys[ibody-1].tess == meshRef->maps[j].tess) {
                  break;
                }
              }
              if (j == meshRef->nmap) {
                AIM_ERROR(aimInfo, "Could not find matching tessellation!");
                status = CAPS_MISMATCH;
                goto cleanup;
              }

              if (numDataTransferPoint == 1) {
                // A single point means this is an initialization phase

                // Apply delta displacements
                dataOutMatrix[0][globalOffset[j]+iglobal-1] += dataTransferData[0];
                dataOutMatrix[1][globalOffset[j]+iglobal-1] += dataTransferData[1];
                dataOutMatrix[2][globalOffset[j]+iglobal-1] += dataTransferData[2];

                // save delta displacements
                dataOutMatrix[4][globalOffset[j]+iglobal-1] = dataTransferData[0];
                dataOutMatrix[5][globalOffset[j]+iglobal-1] = dataTransferData[1];
                dataOutMatrix[6][globalOffset[j]+iglobal-1] = dataTransferData[2];

              } else {
                // Apply delta displacements
                dataOutMatrix[0][globalOffset[j]+iglobal-1] += dataTransferData[3*i+0];
                dataOutMatrix[1][globalOffset[j]+iglobal-1] += dataTransferData[3*i+1];
                dataOutMatrix[2][globalOffset[j]+iglobal-1] += dataTransferData[3*i+2];

                dataOutMatrix[4][globalOffset[j]+iglobal-1] = dataTransferData[3*i+0];
                dataOutMatrix[5][globalOffset[j]+iglobal-1] = dataTransferData[3*i+1];
                dataOutMatrix[6][globalOffset[j]+iglobal-1] = dataTransferData[3*i+2];
              }
            }
          } // End numBoundName loop

          // Remove unused nodes
          numUsedNode = numOutDataPoint;
          numUsedConnectivity = numOutDataConnect;
          AIM_NOTNULL(usedNode, aimInfo, status);
          status = fun3d_removeUnused(aimInfo, numOutVariable, &numUsedNode, usedNode,
                                      &dataOutMatrix, &numUsedConnectivity,
                                      dataConnectMatrix);
          AIM_STATUS(aimInfo, status);

          stringLength = strlen(projectName) + strlen(fileExtBody) + strlen(fileExt) + 1;
          AIM_ALLOC(filename, stringLength+1, char, aimInfo, status);

          strcpy(filename, projectName);
          strcat(filename, fileExtBody);
          strcat(filename, fileExt);
          filename[stringLength] = '\0';

          // Write out displacement in tecplot file
          /*@-nullpass@*/
          status = tecplot_writeFEPOINT(aimInfo, filename,
                                        "FUN3D AeroLoads",
                                        NULL,
                                        numOutVariable,
                                        (char **)dataOutName,
                                        numUsedNode, // numOutDataPoint,
                                        dataOutMatrix,
                                        dataOutFormat,
                                        numUsedConnectivity, //numOutDataConnect, // numConnectivity
                                        dataConnectMatrix, // connectivity matrix
                                        NULL); // Solution time
          /*@+nullpass@*/
          AIM_STATUS(aimInfo, status);
          AIM_FREE(filename);
        } // End if found displacements

        // Re-loop through transfers - if we are doing eigen-vectors
        if ((foundEigenVector == (int) true) && (eigenVector != NULL)) {

          for (eigenIndex = 0; eigenIndex < eigenVector->numEigenValue; eigenIndex++) {

            // Zero out the eigen-vectors each time we are writing out a new one
            for (i = 0; i < numOutDataPoint; i++ ) {

              // Delta eigen-vectors
              dataOutMatrix[4][i] = 0;
              dataOutMatrix[5][i] = 0;
              dataOutMatrix[6][i] = 0;
            }

            for (ibound = 0; ibound < numBoundName; ibound++) {
              AIM_NOTNULL(boundName, aimInfo, status);

              status = aim_getDiscr(aimInfo, boundName[ibound], &discr);
              if (status != CAPS_SUCCESS) continue;

              status = aim_getDataSet(discr,
                                      eigenVector->eigenValue[eigenIndex].name,
                                      &dataTransferMethod,
                                      &numDataTransferPoint,
                                      &dataTransferRank,
                                      &dataTransferData,
                                      &units);
              if (status != CAPS_SUCCESS) continue; // If no elements in this object skip to next transfer name

              if (numDataTransferPoint != discr->nPoints &&
                  numDataTransferPoint > 1) {
                AIM_ERROR(aimInfo, "Developer error!! %d != %d", numDataTransferPoint, discr->nPoints);
                status = CAPS_MISMATCH;
                goto cleanup;
              }

              for (i = 0; i < discr->nPoints; i++) {

                ibody   = discr->tessGlobal[2*i+0];
                iglobal = discr->tessGlobal[2*i+1];

                // Find the disc tessellation in the original list of tessellations
                for (j = 0; j < meshRef->nmap; j++) {
                  if (discr->bodys[ibody-1].tess == meshRef->maps[j].tess) {
                    break;
                  }
                }
                if (j == meshRef->nmap) {
                  AIM_ERROR(aimInfo, "Could not find matching tessellation!");
                  status = CAPS_MISMATCH;
                  goto cleanup;
                }

                if (numDataTransferPoint == 1) {
                  // A single point means this is an initialization phase

                  // save Eigen-vector
                  dataOutMatrix[4][globalOffset[j]+iglobal-1] = dataTransferData[0];
                  dataOutMatrix[5][globalOffset[j]+iglobal-1] = dataTransferData[1];
                  dataOutMatrix[6][globalOffset[j]+iglobal-1] = dataTransferData[2];

                } else {
                  // save Eigen-vector
                  dataOutMatrix[4][globalOffset[j]+iglobal-1] = dataTransferData[3*i+0];
                  dataOutMatrix[5][globalOffset[j]+iglobal-1] = dataTransferData[3*i+1];
                  dataOutMatrix[6][globalOffset[j]+iglobal-1] = dataTransferData[3*i+2];
                }
              }
            } // End dataTransferDiscreteObj loop

            // Remove unused nodes
            numUsedNode = numOutDataPoint;
            AIM_NOTNULL(usedNode, aimInfo, status);

            if (eigenIndex == 0) {
              numUsedConnectivity = numOutDataConnect;
              status = fun3d_removeUnused(aimInfo, numOutVariable, &numUsedNode,
                                          usedNode, &dataOutMatrix,
                                          &numUsedConnectivity, dataConnectMatrix);
              AIM_STATUS(aimInfo, status);
            } else {
              status = fun3d_removeUnused(aimInfo, numOutVariable, &numUsedNode,
                                          usedNode, &dataOutMatrix, NULL, NULL);
              AIM_STATUS(aimInfo, status);
            }

            stringLength = strlen(projectName) +
                           strlen(fileExtBody) +
                           strlen(fileExtMode) +
                           strlen(fileExt) + 5;

            AIM_ALLOC(filename, stringLength+1, char, aimInfo, status);

            sprintf(filename, "%s%s%s%d%s",
                    projectName,
                    fileExtBody,
                    fileExtMode,  // Change modeNumber so it always starts at 1!
                    eigenIndex+1, // eigenVector->eigenValue[eigenIndex].modeNumber,
                    fileExt);

            // Write out eigen-vector in tecplot file
            /*@-nullpass@*/
            status = tecplot_writeFEPOINT(aimInfo,
                                          filename,
                                          "FUN3D Modal",
                                          NULL,
                                          numOutVariable,
                                          (char **)dataOutName,
                                          numUsedNode, //numOutDataPoint,
                                          dataOutMatrix,
                                          dataOutFormat,
                                          numUsedConnectivity, //numOutDataConnect, // numConnectivity
                                          dataConnectMatrix, // connectivity matrix
                                          NULL); // Solution time
            /*@+nullpass@*/
            AIM_STATUS(aimInfo, status);
            AIM_FREE(filename);

          } // End eigenvector names
        } // End if found eigenvectors

        status = CAPS_SUCCESS;

        // Clean-up
    cleanup:

        if (status != CAPS_SUCCESS &&
            status != CAPS_NOTFOUND) printf("Error: Premature exit in fun3d_dataTransfer status = %d\n", status);

        if (dataOutMatrix != NULL) {
          for (i = 0; i < numOutVariable; i++) {
            AIM_FREE(dataOutMatrix[i]);
          }
        }

        AIM_FREE(faces);
        AIM_FREE(dataOutMatrix);
        AIM_FREE(dataConnectMatrix);

        AIM_FREE(filename);
        AIM_FREE(boundName);
        AIM_FREE(usedNode);

        return status;
    }


    // Write FUN3D fun3d.nml file
    int fun3d_writeNML(void *aimInfo, capsValue *aimInputs, cfdBoundaryConditionStruct bcProps)
    {

        int status; // Function return status

        int i; // Indexing

        FILE *fnml = NULL;
        char filename[PATH_MAX];
        char fileExt[] ="fun3d.nml";

        printf("Writing fun3d.nml\n");
        if (aimInputs[Design_Functional-1].nullVal == NotNull ||
            aimInputs[Design_SensFile-1].vals.integer == (int)true) {
    #ifdef WIN32
            snprintf(filename, PATH_MAX, "Flow\\%s", fileExt);
    #else
            snprintf(filename, PATH_MAX, "Flow/%s", fileExt);
    #endif
        } else {
            strcpy(filename, fileExt);
        }

        fnml = aim_fopen(aimInfo, filename, "w");
        if (fnml == NULL) {
            AIM_ERROR(aimInfo, "Unable to open file - %s\n", filename);
            status = CAPS_IOERR;
            goto cleanup;
        }

        // &project
        fprintf(fnml,"&project\n");
        fprintf(fnml," project_rootname = \"%s\"\n",
                aimInputs[Proj_Name-1].vals.string);
        fprintf(fnml,"/\n\n");

        // &raw_grid
        fprintf(fnml,"&raw_grid\n");
        //fprintf(fnml," grid_format = \"%s\"\n",
        //        aimInputs[Mesh_Format-1].vals.string);

    //    if (aimInputs[Mesh_ASCII_Flag-1].vals.integer == (int) true) {
    //        fprintf(fnml," data_format = \"ascii\"\n");
    //    } else fprintf(fnml," data_format = \"stream\"\n");

        fprintf(fnml," grid_format = \"AFLR3\"\n");
        fprintf(fnml," data_format = \"stream\"\n");

        if (aimInputs[Two_Dimensional-1].vals.integer == (int) true) {
            fprintf(fnml," twod_mode = .true.\n");
          //fprintf(fnml," ignore_euler_number = .true.\n");
        }

        fprintf(fnml,"/\n\n");

        // &reference_physical_properties
        fprintf(fnml,"&reference_physical_properties\n");

        if (aimInputs[Mach-1].nullVal != IsNull) {
            fprintf(fnml," mach_number = %f\n", aimInputs[Mach-1].vals.real);
        }

        if (aimInputs[Re-1].nullVal != IsNull) {
            fprintf(fnml," reynolds_number = %f\n", aimInputs[Re-1].vals.real);
        }

        if (aimInputs[Alpha-1].nullVal != IsNull) {
            fprintf(fnml," angle_of_attack = %f\n", aimInputs[Alpha-1].vals.real);
        }

        if (aimInputs[Beta-1].nullVal != IsNull) {
            fprintf(fnml," angle_of_yaw = %f\n", aimInputs[Beta-1].vals.real);
        }

        if (aimInputs[Reference_Temperature-1].nullVal != IsNull) {
                fprintf(fnml," temperature = %f\n", aimInputs[Reference_Temperature-1].vals.real);

                if (aimInputs[Reference_Temperature-1].units != NULL) {
                    fprintf(fnml," temperature_units = \'%s\'\n", aimInputs[Reference_Temperature-1].units);
                }
        }

        fprintf(fnml,"/\n\n");

        // &governing_equations
        fprintf(fnml,"&governing_equations\n");

        if (aimInputs[Viscoux-1].nullVal != IsNull) {
            fprintf(fnml," viscous_terms = \"%s\"\n", aimInputs[Viscoux-1].vals.string);
        }

        if (aimInputs[Equation_Type-1].nullVal != IsNull) {
            fprintf(fnml," eqn_type = \"%s\"\n", aimInputs[Equation_Type-1].vals.string);
        }

        fprintf(fnml,"/\n\n");

        // &nonlinear_solver_parameters
        fprintf(fnml,"&nonlinear_solver_parameters\n");

        if (aimInputs[Time_Accuracy-1].nullVal != IsNull) {
            fprintf(fnml," time_accuracy = \"%s\"\n",
                    aimInputs[Time_Accuracy-1].vals.string);
        }

        if (aimInputs[Time_Step-1].nullVal != IsNull) {
            fprintf(fnml," time_step_nondim = %f\n", aimInputs[Time_Step-1].vals.real);
        }

        if (aimInputs[Num_Subiter-1].nullVal != IsNull) {
            fprintf(fnml," subiterations = %d\n",
                    aimInputs[Num_Subiter-1].vals.integer);
        }

        if (aimInputs[Temporal_Error-1].nullVal != IsNull) {

            fprintf(fnml," temporal_err_control = .true.\n");
            fprintf(fnml," temporal_err_floor = %f\n",
                    aimInputs[Temporal_Error-1].vals.real);

        }

        if (aimInputs[CFL_Schedule-1].nullVal != IsNull) {
            fprintf(fnml," schedule_cfl = %f %f\n",
                    aimInputs[CFL_Schedule-1].vals.reals[0],
                    aimInputs[CFL_Schedule-1].vals.reals[1]);
        }

        if (aimInputs[CFL_Schedule_Iter-1].nullVal != IsNull) {
            fprintf(fnml," schedule_iteration = %d %d\n",
                    aimInputs[CFL_Schedule_Iter-1].vals.integers[0],
                    aimInputs[CFL_Schedule_Iter-1].vals.integers[1]);
        }

        fprintf(fnml,"/\n\n");

        // &code_run_control
        fprintf(fnml,"&code_run_control\n");

        if (aimInputs[Num_Iter-1].nullVal != IsNull) {
            fprintf(fnml," steps = %d\n", aimInputs[Num_Iter-1].vals.integer);
        }

        if (aimInputs[Restart_Read-1].nullVal != IsNull) {
            fprintf(fnml," restart_read = '%s'\n",
                    aimInputs[Restart_Read-1].vals.string);
        }


        fprintf(fnml,"/\n\n");

        //&force_moment_integ_properties
        fprintf(fnml,"&force_moment_integ_properties\n");

        if (aimInputs[Reference_Area-1].nullVal != IsNull) {
            fprintf(fnml," area_reference = %f\n",
                    aimInputs[Reference_Area-1].vals.real);
        }

        if (aimInputs[Moment_Length-1].nullVal != IsNull) {
            fprintf(fnml," x_moment_length = %f\n",
                    aimInputs[Moment_Length-1].vals.reals[0]);

            fprintf(fnml," y_moment_length = %f\n",
                    aimInputs[Moment_Length-1].vals.reals[1]);
        }

        if (aimInputs[Moment_Center-1].nullVal != IsNull) {
            fprintf(fnml," x_moment_center = %f\n",
                    aimInputs[Moment_Center-1].vals.reals[0]);

            fprintf(fnml," y_moment_center = %f\n",
                    aimInputs[Moment_Center-1].vals.reals[1]);

            fprintf(fnml," z_moment_center = %f\n",
                    aimInputs[Moment_Center-1].vals.reals[2]);
        }

        fprintf(fnml,"/\n\n");

        //&boundary_conditions
        fprintf(fnml,"&boundary_conditions\n");

        // Loop through boundary conditions
        for (i = 0; i < bcProps.numSurfaceProp ; i++) {

            // Temperature
            if (bcProps.surfaceProp[i].wallTemperatureFlag == (int) true) {
                fprintf(fnml," wall_temperature(%d) = %f\n",bcProps.surfaceProp[i].bcID,
                        bcProps.surfaceProp[i].wallTemperature);
                fprintf(fnml," wall_temp_flag(%d) = .true.\n",bcProps.surfaceProp[i].bcID);
            }

            // Total pressure and temperature
            if (bcProps.surfaceProp[i].surfaceType == SubsonicInflow) {

                fprintf(fnml, " total_pressure_ratio(%d) = %f\n", bcProps.surfaceProp[i].bcID,
                        bcProps.surfaceProp[i].totalPressure);

                fprintf(fnml, " total_temperature_ratio(%d) = %f\n", bcProps.surfaceProp[i].bcID,
                        bcProps.surfaceProp[i].totalTemperature);
            }

            // Static pressure
            if (bcProps.surfaceProp[i].surfaceType == BackPressure ||
                    bcProps.surfaceProp[i].surfaceType == SubsonicOutflow) {

                fprintf(fnml, " static_pressure_ratio(%d) = %f\n", bcProps.surfaceProp[i].bcID,
                        bcProps.surfaceProp[i].staticPressure);
            }

            // Mach number
            if (bcProps.surfaceProp[i].surfaceType == MachOutflow ||
                    bcProps.surfaceProp[i].surfaceType == MassflowOut) {

                fprintf(fnml, " mach_bc(%d) = %f\n", bcProps.surfaceProp[i].bcID,
                        bcProps.surfaceProp[i].machNumber);
            }

            // Massflow
            if (bcProps.surfaceProp[i].surfaceType == MassflowIn ||
                    bcProps.surfaceProp[i].surfaceType == MassflowOut) {

                fprintf(fnml, " massflow(%d) = %f\n", bcProps.surfaceProp[i].bcID,
                        bcProps.surfaceProp[i].massflow);
            }

            // Fixed inflow and outflow
            /*if (bcProps.surfaceProp[i].surfaceType == FixedInflow ||
                bcProps.surfaceProp[i].surfaceType == FixedOutflow) {

                fprintf(fnml, " qset(%d,1) = %f\n", bcProps.surfaceProp[i].bcID,
                                                    bcProps.surfaceProp[i].staticDensity);

                fprintf(fnml, " qset(%d,2) = %f\n", bcProps.surfaceProp[i].bcID,
                                                    bcProps.surfaceProp[i].uVelocity);

                fprintf(fnml, " qset(%d,3) = %f\n", bcProps.surfaceProp[i].bcID,
                                                    bcProps.surfaceProp[i].vVelocity);

                fprintf(fnml, " qset(%d,4) = %f\n", bcProps.surfaceProp[i].bcID,
                                                    bcProps.surfaceProp[i].wVelocity);

                fprintf(fnml, " qset(%d,5) = %f\n", bcProps.surfaceProp[i].bcID,
                                                    bcProps.surfaceProp[i].staticDensity);
            }*/
        }

        fprintf(fnml,"/\n\n");

        // &noninertial_reference_frame
        fprintf(fnml,"&noninertial_reference_frame\n");


        if (aimInputs[NonInertial_Rotation_Rate-1].nullVal   != IsNull ||
            aimInputs[NonInertial_Rotation_Center-1].nullVal != IsNull) {

            fprintf(fnml," noninertial = .true.\n");
        }

        if (aimInputs[NonInertial_Rotation_Center-1].nullVal != IsNull) {
            fprintf(fnml," rotation_center_x = %f\n",
                    aimInputs[NonInertial_Rotation_Center-1].vals.reals[0]);
            fprintf(fnml," rotation_center_y = %f\n",
                    aimInputs[NonInertial_Rotation_Center-1].vals.reals[1]);
            fprintf(fnml," rotation_center_z = %f\n",
                    aimInputs[NonInertial_Rotation_Center-1].vals.reals[2]);
        }

        if (aimInputs[NonInertial_Rotation_Rate-1].nullVal != IsNull) {
            fprintf(fnml," rotation_rate_x = %f\n",
                    aimInputs[NonInertial_Rotation_Rate-1].vals.reals[0]);
            fprintf(fnml," rotation_rate_y = %f\n",
                    aimInputs[NonInertial_Rotation_Rate-1].vals.reals[1]);
            fprintf(fnml," rotation_rate_z = %f\n",
                    aimInputs[NonInertial_Rotation_Rate-1].vals.reals[2]);

        }

        fprintf(fnml,"/\n\n");

        status = CAPS_SUCCESS;

    cleanup:

        if (status != CAPS_SUCCESS)
            printf("Error: Premature exit in fun3d_writeNML status = %d\n", status);

        if (fnml != NULL) fclose(fnml);

        return status;
    }


    // Write FUN3D movingbody.input file
    int fun3d_writeMovingBody(void *aimInfo, double fun3dVersion, cfdBoundaryConditionStruct bcProps,
                              cfdModalAeroelasticStruct *modalAeroelastic)
    {

        int status; // Function return status

        int i, eigenIndex; // Indexing
        int counter = 0;
        FILE *fp = NULL;
        char *filename = NULL;
        char fileExt[] ="moving_body.input";

        int bodyIndex = 1;
        int stringLength;

        printf("Writing moving_body.input");

        stringLength = strlen(fileExt) + 1;

        AIM_ALLOC(filename,stringLength +1, char, aimInfo, status);

        strcpy(filename, fileExt);
        filename[stringLength] = '\0';

        fp = aim_fopen(aimInfo, filename, "w");
        if (fp == NULL) {
            AIM_ERROR(aimInfo, "Unable to open file - %s\n", filename);
            status = CAPS_IOERR;
            goto cleanup;
        }

        // &body_definitions
        fprintf(fp,"&body_definitions\n");

        fprintf(fp," n_moving_bodies = %d\n", bodyIndex);

        counter = 0;
        for (i = 0; i < bcProps.numSurfaceProp; i++) {

            if (bcProps.surfaceProp[i].surfaceType == Viscous ||
                    bcProps.surfaceProp[i].surfaceType == Inviscid) {

                fprintf(fp," defining_bndry(%d,%d) = %d\n", counter+1,
                        bodyIndex,
                        bcProps.surfaceProp[i].bcID);

                counter += 1;
            }
        }

        fprintf(fp," n_defining_bndry(%d) = %d\n", bodyIndex, counter);

        fprintf(fp," motion_driver(%d) = ", bodyIndex);
        if (modalAeroelastic != NULL) {
            fprintf(fp,"\"aeroelastic\"\n");
        }

        fprintf(fp," mesh_movement(%d) = ", bodyIndex);
        if (modalAeroelastic != NULL) {
            fprintf(fp,"\"deform\"\n");
        }

        fprintf(fp,"/\n\n");

        if (modalAeroelastic != NULL) {

            // &aeroelastic_modal_data
            fprintf(fp,"&aeroelastic_modal_data\n");

            fprintf(fp," nmode(%d) = %d\n", bodyIndex, modalAeroelastic->numEigenValue);

            if (fun3dVersion < 13.1) {
                fprintf(fp," uinf(%d) = %f\n", bodyIndex, modalAeroelastic->freestreamVelocity);
                fprintf(fp," qinf(%d) = %f\n", bodyIndex, modalAeroelastic->freestreamDynamicPressure);
                fprintf(fp," grefl(%d) = %f\n", bodyIndex, modalAeroelastic->lengthScaling);
            } else {
                fprintf(fp," uinf = %f\n", modalAeroelastic->freestreamVelocity);
                fprintf(fp," qinf = %f\n", modalAeroelastic->freestreamDynamicPressure);
                fprintf(fp," grefl = %f\n",modalAeroelastic->lengthScaling);
            }

            fprintf(fp, "\n");


            for (i = 0; i < modalAeroelastic->numEigenValue; i++) {

                eigenIndex = i + 1; // Change mode number so that it always starts at 1
                // modalAeroelastic->eigenValue[i].modeNumber

                fprintf(fp, " ! Mode %d of %d (structural mode %d)\n", eigenIndex,
                        modalAeroelastic->numEigenValue,
                        modalAeroelastic->eigenValue[i].modeNumber);

                fprintf(fp," freq(%d,%d) = %f\n", eigenIndex, bodyIndex, modalAeroelastic->eigenValue[i].frequency);
                fprintf(fp," damp(%d,%d) = %f\n", eigenIndex, bodyIndex, modalAeroelastic->eigenValue[i].damping);

                fprintf(fp," gmass(%d,%d) = %f\n"  , eigenIndex, bodyIndex, modalAeroelastic->eigenValue[i].generalMass);
                fprintf(fp," gdisp0(%d,%d) = %f\n" , eigenIndex, bodyIndex, modalAeroelastic->eigenValue[i].generalDisplacement);
                fprintf(fp," gvel0(%d,%d) = %f\n"  , eigenIndex, bodyIndex, modalAeroelastic->eigenValue[i].generalVelocity);
                fprintf(fp," gforce0(%d,%d) = %f\n", eigenIndex, bodyIndex, modalAeroelastic->eigenValue[i].generalForce);

                fprintf(fp, "\n");
            }
            fprintf(fp,"/\n\n");
        }

        status = CAPS_SUCCESS;

    cleanup:
        if (status != CAPS_SUCCESS)
            printf("Error: Premature exit in fun3d_writeMovingBody status = %d\n",
                   status);

        if (fp != NULL) fclose(fp);

        if (filename != NULL) EG_free(filename);

        return status;
    }


    // Write FUN3D parameterization/sensitivity file
    // Will not calculate shape sensitivities if there are no geometry design variable; will
    // simple check and dump out the body meshes in model.tec files
    int  fun3d_writeParameterization(void *aimInfo,
                                     int numDesignVariable,
                                     cfdDesignVariableStruct designVariable[],
                                     aimMeshRef *meshRef)
    {

        int status; // Function return status

        int i, j, k, m, row, col; // Indexing

        int stringLength = 7;

        // Data transfer Out variables
        char **dataOutName= NULL;

        double ***dataOutMatrix = NULL;
        int *dataOutFormat = NULL;
        int *dataConnectMatrix = NULL;

        int numOutVariable = 4; // x, y, z, id, ... + 3* active GeomIn
        int numOutDataPoint = 0;
        int numOutDataConnect = 0;

        // Variables used in global node mapping
        int ptype, pindex;
        double xyz[3];

        const char *geomInName;
        int numPoint;
        double *dxyz = NULL;

        int index;
        int iface, iglobal;
        int state, nFace;
        ego body, *faces=NULL;

        int alen, ntri, atype, itri, ielem;
        const double *face_xyz, *face_uv, *reals;
        const int *face_ptype, *face_pindex, *face_tris, *face_tric, *nquad=NULL;
        const char *string;

        char message[100];
        char filePre[] = "model.tec.";
        char fileExt[] = ".sd1";
        char *filename = NULL;
        char folder[]  = "Rubberize";
        char zoneTitle[100];

        capsValue *geomInVal;
        int *geomSelect = NULL;

        AIM_ALLOC(geomSelect, numDesignVariable, int, aimInfo, status);

        // Determine number of geometry input variables

        for (i = 0; i < numDesignVariable; i++) {
            geomSelect[i] = (int) false;

            printf("DesignVariable = %s\n", designVariable[i].name);

            index = aim_getIndex(aimInfo, designVariable[i].name, GEOMETRYIN);
            if (index == CAPS_NOTFOUND) continue;
            if (index < CAPS_SUCCESS ) {
              status = index;
              AIM_STATUS(aimInfo, status);
            }

            if(aim_getGeomInType(aimInfo, index) != 0) {
                AIM_ERROR(aimInfo, "GeometryIn value %s is a configuration parameter and not a valid design parameter - can't get sensitivity\n",
                          designVariable[i].name);
                status = CAPS_BADVALUE;
                goto cleanup;
            }


            status = aim_getValue(aimInfo, index, GEOMETRYIN, &geomInVal);
            AIM_STATUS(aimInfo, status);

            numOutVariable += 3*geomInVal->length; // xD1, yD1, zD1, ...

            // Don't compute sensitivities if not needed
            geomSelect[i] = (int) true;
        }

        // No need to write Rubberize files without GeometryIn design variables
        if (numOutVariable == 4) {
            status = CAPS_SUCCESS;
            goto cleanup;
        }

        if (numOutVariable > 99999999) {
            AIM_ERROR(aimInfo, "Array of design variable names will be over-run!");
            status = CAPS_RANGEERR;
            goto cleanup;
        }

        // Allocate our names
        AIM_ALLOC(dataOutName, numOutVariable, char*, aimInfo, status);
        for (i = 0; i < numOutVariable; i++) dataOutName[i] = NULL;

        stringLength = 11;
        j = 1;
        k = 1;
        for (i = 0; i < numOutVariable; i++) {
            AIM_ALLOC(dataOutName[i], stringLength+1, char, aimInfo, status);

            // Set names
            if      (i == 0) sprintf(dataOutName[i], "%s", "x");
            else if (i == 1) sprintf(dataOutName[i], "%s", "y");
            else if (i == 2) sprintf(dataOutName[i], "%s", "z");
            else if (i == 3) sprintf(dataOutName[i], "%s", "id");
            else {

                if      (j == 1) sprintf(dataOutName[i], "%s%d", "xD", k);
                else if (j == 2) sprintf(dataOutName[i], "%s%d", "yD", k);
                else if (j == 3) {
                    sprintf(dataOutName[i], "%s%d", "zD", k);
                    j = 0;
                    k += 1;
                }
                j += 1;
            }
        }

        AIM_ALLOC(dataOutFormat, numOutVariable, int, aimInfo, status);

        // Set data out formatting
        for (i = 0; i < numOutVariable; i++) {
            if (strcasecmp(dataOutName[i], "id") == 0) {
                dataOutFormat[i] = (int) Integer;
            } else {
                dataOutFormat[i] = (int) Double;
            }
        }

        // Allocate data arrays that are going to be output
        AIM_ALLOC(dataOutMatrix, meshRef->nmap, double**, aimInfo, status);
        for (i = 0; i < meshRef->nmap; i++) dataOutMatrix[i] = NULL;

        for (i = 0; i < meshRef->nmap; i++) {
          AIM_ALLOC(dataOutMatrix[i], numOutVariable, double*, aimInfo, status);
          for (j = 0; j < numOutVariable; j++) dataOutMatrix[i][j] = NULL;
        }

        for (i = 0; i < meshRef->nmap; i++) {
          if (meshRef->maps[i].tess == NULL) continue;

          status = EG_statusTessBody(meshRef->maps[i].tess, &body, &state, &numOutDataPoint);
          AIM_STATUS(aimInfo, status);

          // allocate data arrays
          for (j = 0; j < numOutVariable; j++) {
            AIM_ALLOC(dataOutMatrix[i][j], numOutDataPoint, double, aimInfo, status);
          }

          for (iglobal = 0; iglobal < numOutDataPoint; iglobal++) {
            status = EG_getGlobal(meshRef->maps[i].tess,
                                  iglobal+1, &ptype, &pindex, xyz);
            AIM_STATUS(aimInfo, status);

            // First just set the Coordinates
            dataOutMatrix[i][0][iglobal] = xyz[0];
            dataOutMatrix[i][1][iglobal] = xyz[1];
            dataOutMatrix[i][2][iglobal] = xyz[2];

            // Volume mesh node ID
            dataOutMatrix[i][3][iglobal] = meshRef->maps[i].map[iglobal];
          }
        }

        // Loop over the geometry in values and compute sensitivities for all bodies
        m = 4;
        for (j = 0; j < numDesignVariable; j++) {

          if (geomSelect[j] == (int) false) continue;

          geomInName = designVariable[j].name;
          index = aim_getIndex(aimInfo, geomInName, GEOMETRYIN);

          status = aim_getValue(aimInfo, index, GEOMETRYIN, &geomInVal);
          AIM_STATUS(aimInfo, status);

          for (row = 0; row < geomInVal->nrow; row++) {
            for (col = 0; col < geomInVal->ncol; col++) {

              for (i = 0; i < meshRef->nmap; i++) {
                if (meshRef->maps[i].tess == NULL) continue;
                status = aim_tessSensitivity(aimInfo,
                                             geomInName,
                                             row+1, col+1, // row, col
                                             meshRef->maps[i].tess,
                                             &numPoint, &dxyz);
                AIM_STATUS(aimInfo, status, "Sensitivity for: %s\n", geomInName);
                AIM_NOTNULL(dxyz, aimInfo, status);

                for (k = 0; k < numPoint; k++) {
                  dataOutMatrix[i][m+0][k] = dxyz[3*k + 0]; // dx/dGeomIn
                  dataOutMatrix[i][m+1][k] = dxyz[3*k + 1]; // dy/dGeomIn
                  dataOutMatrix[i][m+2][k] = dxyz[3*k + 2]; // dz/dGeomIn
                }
                AIM_FREE(dxyz);
              }
              m += 3;
            }
          }
        }

        // Write sensitivity files for each body tessellation

        for (i = 0; i < meshRef->nmap; i++) {
          if (meshRef->maps[i].tess == NULL) continue;
          status = EG_statusTessBody(meshRef->maps[i].tess, &body, &state, &numOutDataPoint);
          AIM_STATUS(aimInfo, status);

          // check if the tessellation has a mixture of quad and tess
          status = EG_attributeRet(meshRef->maps[i].tess, ".mixed",
                                   &atype, &alen, &nquad, &reals, &string);
          if (status != EGADS_SUCCESS &&
              status != EGADS_NOTFOUND) AIM_STATUS(aimInfo, status);

          status = EG_getBodyTopos(body, NULL, FACE, &nFace, &faces);
          AIM_STATUS(aimInfo, status);

          ielem = 0;
          numOutDataConnect = 0;
          for (iface = 0; iface < nFace; iface++) {
            // get the face tessellation
            status = EG_getTessFace(meshRef->maps[i].tess, iface+1, &alen, &face_xyz, &face_uv,
                                    &face_ptype, &face_pindex, &ntri, &face_tris, &face_tric);
            AIM_STATUS(aimInfo, status);

            if (nquad == NULL) { // all triangles

              // re-allocate data arrays
              AIM_REALL(dataConnectMatrix, 4*(numOutDataConnect + ntri), int, aimInfo, status);

              for (itri = 0; itri < ntri; itri++, ielem++) {
                for (j = 0; j < 3; j++) {
                  status = EG_localToGlobal(meshRef->maps[i].tess, iface+1, face_tris[3*itri+j], &iglobal);
                  AIM_STATUS(aimInfo, status);
                  dataConnectMatrix[4*ielem+j] = iglobal;
                }
                // repeat the last node for triangles
                dataConnectMatrix[4*ielem+3] = dataConnectMatrix[4*ielem+2];
              }

              numOutDataConnect += ntri;

            } else { // mixture of tri and quad elements

              // re-allocate data arrays
              AIM_REALL(dataConnectMatrix, 4*(numOutDataConnect + ntri-nquad[iface]), int, aimInfo, status);

              // process triangles
              for (itri = 0; itri < ntri-2*nquad[iface]; itri++, ielem++) {
                for (j = 0; j < 3; j++) {
                  status = EG_localToGlobal(meshRef->maps[i].tess, iface+1, face_tris[3*itri+j], &iglobal);
                  AIM_STATUS(aimInfo, status);
                  dataConnectMatrix[4*ielem+j] = iglobal;
                }
                // repeat the last node for triangle
                dataConnectMatrix[4*ielem+3] = dataConnectMatrix[4*ielem+2];
              }
              // process quads
              for (; itri < ntri; itri++, ielem++) {
                for (j = 0; j < 3; j++) {
                  status = EG_localToGlobal(meshRef->maps[i].tess, iface+1, face_tris[3*itri+j], &iglobal);
                  AIM_STATUS(aimInfo, status);
                  dataConnectMatrix[4*ielem+j] = iglobal;
                }

                // add the last node from the 2nd triangle to make the quad
                itri++;
                status = EG_localToGlobal(meshRef->maps[i].tess, iface+1, face_tris[3*itri+2], &iglobal);
                AIM_STATUS(aimInfo, status);
                dataConnectMatrix[4*ielem+3] = iglobal;
              }

              numOutDataConnect += ntri-nquad[iface];
            }

          }
          AIM_FREE(faces);

          sprintf(message,"%s %d,", "sensitivity file for body", i+1);

          stringLength = strlen(folder) + 1 + strlen(filePre) + 7 + strlen(fileExt) + 1 ;

          AIM_REALL(filename, stringLength, char, aimInfo, status);

    #ifdef WIN32
          sprintf(filename, "%s\\%s%d%s", folder, filePre, i+1, fileExt);
    #else
          sprintf(filename, "%s/%s%d%s",  folder, filePre, i+1, fileExt);
    #endif

          sprintf(zoneTitle, "%s_%d", "Body", i+1);
          /*@-nullpass@*/
          status = tecplot_writeFEPOINT(aimInfo,
                                        filename,
                                        message,
                                        zoneTitle,
                                        numOutVariable,
                                        dataOutName,
                                        numOutDataPoint,
                                        dataOutMatrix[i],
                                        dataOutFormat,
                                        numOutDataConnect,
                                        dataConnectMatrix,
                                        NULL);
          /*@+nullpass@*/
          AIM_STATUS(aimInfo, status);
        }

        status = CAPS_SUCCESS;

    cleanup:
        (void) string_freeArray(numOutVariable, &dataOutName);
    #ifdef S_SPLINT_S
        EG_free(dataOutName);
    #endif

        if (dataOutMatrix != NULL) {
            for (i = 0; i < meshRef->nmap; i++) {
              if (dataOutMatrix[i] != NULL) {
                  for (j = 0; j < numOutVariable; j++) {
                      AIM_FREE(dataOutMatrix[i][j]);
                  }
              }
              AIM_FREE(dataOutMatrix[i]);
            }
        }

        AIM_FREE(dataOutMatrix);
        AIM_FREE(dataOutFormat);
        AIM_FREE(dataConnectMatrix);
        AIM_FREE(faces);

        AIM_FREE(dxyz);
        AIM_FREE(filename);
        AIM_FREE(geomSelect);

        return status;
    }


    static int _writeFunctinoalComponent(void *aimInfo, FILE *fp, cfdDesignFunctionalCompStruct *comp)
    {
        int status = CAPS_SUCCESS;

        const char *names[] = {"cl", "cd",                   // Lift, drag coefficients
                               "clp", "cdp",                 // Lift, drag coefficients: pressure contributions
                               "clv", "cdv",                 // Lift, drag coefficients: shear contributions
                               "cmx", "cmy", "cmz",          // x/y/z-axis moment coefficients
                               "cmxp", "cmyp", "cmzp",       // x/y/z-axis moment coefficients: pressure contributions
                               "cmxv", "cmyv", "cmzv",       // x/y/z-axis moment coefficients: shear contributions
                               "cx", "cy", "cz",             // x/y/z-axis force coefficients
                               "cxp", "cyp", "czp",          // x/y/z-axis force coefficients: pressure contributions
                               "cxv", "cyv", "czv",          // x/y/z-axis force coefficients: shear contributions
                               "powerx", "powery", "powerz", // x/y/z-axis power coefficients
                               "clcd",                       // Lift-to-drag ratio
                               "fom"    ,                    // Rotorcraft figure of merit
                               "propeff",                    // Rotorcraft propulsive efficiency
                               "rtr"    ,                    // thrust Rotorcraft thrust function
                               "pstag"  ,                    // RMS of stagnation pressure in cutting plane disk
                               "distort",                    // Engine inflow distortion
                               "boom"   ,                    // targ Near-field p/p∞ pressure target
                               "sboom"  ,                    // Coupled sBOOM ground-based noise metrics
                               "ae"     ,                    // Supersonic equivalent area target distribution
                               "press"  ,                    // box RMS of pressure in user-defined box, also pointwise dp/dt, dρ/dt
                               "cpstar" ,                    // Target pressure distributions
                               "sgen"                        // Entropy generation
                              };

        int i, found = (int)false;
        char *function=NULL, *c=NULL;

        for (i = 0; i < sizeof(names)/sizeof(char*); i++)
            if ( strcasecmp(names[i], comp->name) == 0 ) {
                found = (int)true;
                break;
            }

        if (found == (int) false) {
            AIM_ERROR(aimInfo, "Unknown function: '%s'", comp->name);
            AIM_ADDLINE(aimInfo, "Available functions:");
            for (i = 0; i < sizeof(names)/sizeof(char*); i++)
                AIM_ADDLINE(aimInfo, "'%s'", names[i]);
            status = CAPS_BADVALUE;
            goto cleanup;
        }

        // make the name lower case
        AIM_STRDUP(function, comp->name, aimInfo, status);
        for (c = function; *c != '\0'; ++c) *c = tolower(*c);

        // fprintf(fp, "Components of function   1: boundary id (0=all)/name/value/weight/target/power\n");
        fprintf(fp, " %d %s          %f %f %f %f\n", comp->bcID,
                                                     function,
                                                     0.0,
                                                     comp->weight,
                                                     comp->target,
                                                     comp->power);

        status = CAPS_SUCCESS;

    cleanup:
        AIM_FREE(function);
        return status;
    }


    // Write FUN3D  rubber.data file
    // Will not write shape entries unless explicitly told to check if they are need
    int fun3d_writeRubber(void *aimInfo,
                          cfdDesignStruct design,
                          int checkGeomShape,
                          double fun3dVersion,
                          aimMeshRef *meshRef)
    {
        int status; // Function return status

        int i, j, k, m; // Indexing

        int numBody = 0, numShapeVar = 0;

        char file[] = "rubber.data";
        FILE *fp = NULL;

        printf("Writing %s \n", file);
        if (meshRef == NULL) return CAPS_NULLVALUE;

        // Open file
        fp = aim_fopen(aimInfo, file, "w");
        if (fp == NULL) {
            AIM_ERROR(aimInfo, "Unable to open file: %s\n", file);
            status = CAPS_IOERR;
            goto cleanup;
        }

        numBody = meshRef->nmap;

        if (checkGeomShape == (int) true) {
            // Determine number of geometry input variables
            for (i = 0; i < design.numDesignVariable; i++) {

                if (design.designVariable[i].type != DesignVariableGeometry) continue;

                numShapeVar += design.designVariable[i].var->length; // xD1, yD1, zD1, ...
            }
        }

        // Don't write out body information if there are no geometry design variables
        if (numShapeVar == 0) numBody = 0;


        fprintf(fp, "################################################################################\n");
        fprintf(fp, "########################### Design Variable Information ########################\n");
        fprintf(fp, "################################################################################\n");
        fprintf(fp, "Global design variables (Mach number, AOA, Yaw, Noninertial rates)\n");
        fprintf(fp, "Var Active         Value               Lower Bound            Upper Bound\n");

        for (i = 0; i < design.numDesignVariable; i++) {

            if (strcasecmp(design.designVariable[i].name, "Mach") != 0) continue;

            if (design.designVariable[i].var->length < 1) {
                status = CAPS_RANGEERR;
                goto cleanup;
            }

            fprintf(fp, "Mach    1   %.15E  %.15E  %.15E\n", design.designVariable[i].value[0],
                                                             design.designVariable[i].lowerBound[0],
                                                             design.designVariable[i].upperBound[0]);
            break;
        }

        if (i >= design.numDesignVariable) fprintf(fp, "Mach    0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00\n");

        for (i = 0; i < design.numDesignVariable; i++) {

            if (strcasecmp(design.designVariable[i].name, "Alpha") != 0) continue;

            if (design.designVariable[i].var->length < 1) {
                status = CAPS_RANGEERR;
                goto cleanup;
            }

            fprintf(fp, "AOA     1   %.15E  %.15E  %.15E\n", design.designVariable[i].value[0],
                                                             design.designVariable[i].lowerBound[0],
                                                             design.designVariable[i].upperBound[0]);
            break;
        }

        if (i >= design.numDesignVariable) fprintf(fp, "AOA     0   0.000000000000000E+00  0.000000000000000E+00  0.00000000000000E+00\n");


        if (fun3dVersion > 12.4) {
            // FUN3D version 13.1 - version 12.4 doesn't have these available

            for (i = 0; i < design.numDesignVariable; i++) {

                if (strcasecmp(design.designVariable[i].name, "Beta") != 0) continue;

                if (design.designVariable[i].var->length < 1) {
                    status = CAPS_RANGEERR;
                    goto cleanup;
                }

                fprintf(fp, "Yaw     1   %.15E  %.15E  %.15E\n", design.designVariable[i].value[0],
                                                                 design.designVariable[i].lowerBound[0],
                                                                 design.designVariable[i].upperBound[0]);
                break;
            }

            if (i >= design.numDesignVariable) fprintf(fp, "Yaw     0   0.000000000000000E+00  0.000000000000000E+00  0.00000000000000E+00\n");

            for (i = 0; i < design.numDesignVariable; i++) {

                if (strcasecmp(design.designVariable[i].name, "NonInertial_Rotation_Rate") != 0) continue;

                if (design.designVariable[i].var->length < 3) {
                    status = CAPS_RANGEERR;
                    goto cleanup;
                }

                fprintf(fp, "xrate   1   %.15E  %.15E  %.15E\n", design.designVariable[i].value[0],
                                                                 design.designVariable[i].lowerBound[0],
                                                                 design.designVariable[i].upperBound[0]);
                break;
            }

            if (i >= design.numDesignVariable) fprintf(fp, "xrate   0   0.000000000000000E+00  0.000000000000000E+00  0.00000000000000E+00\n");

            for (i = 0; i < design.numDesignVariable; i++) {

                if (strcasecmp(design.designVariable[i].name, "NonInertial_Rotation_Rate") != 0) continue;

                if (design.designVariable[i].var->length < 3) {
                    status = CAPS_RANGEERR;
                    goto cleanup;
                }

                fprintf(fp, "yrate   1   %.15E  %.15E  %.15E\n", design.designVariable[i].value[1],
                                                                 design.designVariable[i].lowerBound[1],
                                                                 design.designVariable[i].upperBound[1]);
                break;
            }

            if (i >= design.numDesignVariable) fprintf(fp, "yrate   0   0.000000000000000E+00  0.000000000000000E+00  0.00000000000000E+00\n");

            for (i = 0; i < design.numDesignVariable; i++) {

                if (strcasecmp(design.designVariable[i].name, "NonInertial_Rotation_Rate") != 0) continue;

                if (design.designVariable[i].var->length < 3) {
                    status = CAPS_RANGEERR;
                    goto cleanup;
                }

                fprintf(fp, "zrate   1   %.15E  %.15E  %.15E\n", design.designVariable[i].value[2],
                                                                 design.designVariable[i].lowerBound[2],
                                                                 design.designVariable[i].upperBound[2]);
                break;
            }

            if (i >= design.numDesignVariable) fprintf(fp, "zrate   0   0.000000000000000E+00  0.000000000000000E+00  0.00000000000000E+00\n");
        }

        fprintf(fp, "Number of bodies\n");
        fprintf(fp, "%d\n", numBody);
        for (i = 0; i < numBody; i++) {
            fprintf(fp, "Rigid motion design variables for 'Body %d'\n", i+1);
            fprintf(fp, "Var Active         Value               Lower Bound            Upper Bound\n");
            fprintf(fp, "RotRate  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00\n");
            fprintf(fp, "RotFreq  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00\n");
            fprintf(fp, "RotAmpl  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00\n");
            fprintf(fp, "RotOrgx  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00\n");
            fprintf(fp, "RotOrgy  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00\n");
            fprintf(fp, "RotOrgz  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00\n");
            fprintf(fp, "RotVecx  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00\n");
            fprintf(fp, "RotVecy  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00\n");
            fprintf(fp, "RotVecz  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00\n");
            fprintf(fp, "TrnRate  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00\n");
            fprintf(fp, "TrnFreq  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00\n");
            fprintf(fp, "TrnAmpl  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00\n");
            fprintf(fp, "TrnVecx  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00\n");
            fprintf(fp, "TrnVecy  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00\n");
            fprintf(fp, "TrnVecz  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00\n");
            if (fun3dVersion > 12.4) {
                // FUN3D version 13.1 - version 12.4 doesn't have option 5
                fprintf(fp, "Parameterization Scheme (Massoud=1 Bandaids=2 Sculptor=4 User-Defined=5)\n");
                fprintf(fp, "5\n");
            } else {

                fprintf(fp, "Parameterization Scheme (Massoud=1 Bandaids=2 Sculptor=4)\n");
                fprintf(fp, "1\n");
            }

            fprintf(fp, "Number of shape variables for 'Body %d'\n", i+1);
            fprintf(fp, "%d\n", numShapeVar);
            fprintf(fp, "Index Active         Value               Lower Bound            Upper Bound\n");

            m = 1;
            for (j = 0; j < design.numDesignVariable; j++) {

                if (design.designVariable[j].type != DesignVariableGeometry) continue;

                for (k = 0; k < design.designVariable[j].var->length; k++ ) {

                    fprintf(fp, "%d    1   %.15E  %.15E  %.15E\n", m, design.designVariable[j].value[k],
                                                                      design.designVariable[j].lowerBound[k],
                                                                      design.designVariable[j].upperBound[k]);

                    m += 1;
                }
            }
        }

        fprintf(fp, "################################################################################\n");
        fprintf(fp, "############################### Function Information ###########################\n");
        fprintf(fp, "################################################################################\n");
        fprintf(fp, "Number of composite functions for design problem statement\n");
        fprintf(fp, "%d\n", design.numDesignFunctional);

        for (i = 0; i < design.numDesignFunctional; i++) {
            fprintf(fp, "################################################################################\n");
            fprintf(fp, "Cost function (1) or constraint (2)\n");
            fprintf(fp, "1\n");
            fprintf(fp, "If constraint, lower and upper bounds\n");
            fprintf(fp, "0.0 0.0\n");
            fprintf(fp, "Number of components for function   %d\n", i+1);
            fprintf(fp, "%d\n", design.designFunctional[i].numComponent);
            fprintf(fp, "Physical timestep interval where function is defined\n");
            fprintf(fp, "1 1\n");
            fprintf(fp, "Composite function weight, target, and power\n");
            fprintf(fp, "1.0 0.0 1.0\n");
            fprintf(fp, "Components of function   %d: boundary id (0=all)/name/value/weight/target/power\n", i+1);

            for (j = 0; j < design.designFunctional[i].numComponent; j++) {
                //fprintf(fp, "0 clcd          0.000000000000000    1.000   10.00000 2.000\n");
                status = _writeFunctinoalComponent(aimInfo, fp, &design.designFunctional[i].component[j]);
                if (status != CAPS_SUCCESS) goto cleanup;
            }

            fprintf(fp, "Current value of function   %d\n", i+1);
            fprintf(fp, "0.000000000000000\n");
            fprintf(fp, "Current derivatives of function wrt global design variables\n");
            fprintf(fp, "0.000000000000000\n");
            fprintf(fp, "0.000000000000000\n");

            if (fun3dVersion > 12.4) {
                // FUN3D version 13.1 - version 12.4 doesn't have these available
                fprintf(fp, "0.000000000000000\n"); // Yaw
                fprintf(fp, "0.000000000000000\n"); // xrate
                fprintf(fp, "0.000000000000000\n"); // yrate
                fprintf(fp, "0.000000000000000\n"); // zrate
            }

            for (j = 0; j < numBody; j++) {
                fprintf(fp, "Current derivatives of function wrt rigid motion design variables of body %d\n", j+1);
                fprintf(fp, "0.000000000000000\n");
                fprintf(fp, "0.000000000000000\n");
                fprintf(fp, "0.000000000000000\n");
                fprintf(fp, "0.000000000000000\n");
                fprintf(fp, "0.000000000000000\n");
                fprintf(fp, "0.000000000000000\n");
                fprintf(fp, "0.000000000000000\n");
                fprintf(fp, "0.000000000000000\n");
                fprintf(fp, "0.000000000000000\n");
                fprintf(fp, "0.000000000000000\n");
                fprintf(fp, "0.000000000000000\n");
                fprintf(fp, "0.000000000000000\n");
                fprintf(fp, "0.000000000000000\n");
                fprintf(fp, "0.000000000000000\n");
                fprintf(fp, "0.000000000000000\n");
                fprintf(fp, "Current derivatives of function wrt shape design variables of body %d\n", j+1);

                for (k = 0; k < design.numDesignVariable; k++) {

                    if (design.designVariable[k].type != DesignVariableGeometry) continue;

                    for (m = 0; m < design.designVariable[k].var->length; m++ ) fprintf(fp, "0.000000000000000\n");
                }
            }
        }

        status = CAPS_SUCCESS;

    cleanup:
        if (status != CAPS_SUCCESS)
            printf("Error: Premature exit in fun3d_writeRubber status = %d\n",
                   status);

        if (fp != NULL) fclose(fp);

        return status;

        /* Version 13.1 - template
    ################################################################################
    ########################### Design Variable Information ########################
    ################################################################################
    Global design variables (Mach number, AOA, Yaw, Noninertial rates)
    Var Active         Value               Lower Bound            Upper Bound
    Mach    0   0.800000000000000E+00  0.000000000000000E+00  0.900000000000000E+00
      AOA    1   1.000000000000000E+00  0.000000000000000E+00  5.000000000000000E+00
      Yaw    0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    xrate    0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    yrate    0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    zrate    0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    Number of bodies
    2
    Rigid motion design variables for 'wing'
    Var Active         Value               Lower Bound            Upper Bound
    RotRate  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    RotFreq  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    RotAmpl  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    RotOrgx  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    RotOrgy  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    RotOrgz  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    RotVecx  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    RotVecy  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    RotVecz  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    TrnRate  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    TrnFreq  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    TrnAmpl  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    TrnVecx  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    TrnVecy  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    TrnVecz  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    Parameterization Scheme (Massoud=1 Bandaids=2 Sculptor=4 User-Defined=5)
    1
    Number of shape variables for 'wing'
    3
    Index Active         Value               Lower Bound            Upper Bound
    1    1   1.000000000000000E+00  0.000000000000000E+00  2.000000000000000E+00
    2    1   1.000000000000000E+00  0.000000000000000E+00  2.000000000000000E+00
    3    1   1.000000000000000E+00  0.000000000000000E+00  2.000000000000000E+00
    Rigid motion design variables for 'tail'
    Var Active         Value               Lower Bound            Upper Bound
    RotRate  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    RotFreq  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    RotAmpl  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    RotOrgx  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    RotOrgy  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    RotOrgz  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    RotVecx  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    RotVecy  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    RotVecz  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    TrnRate  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    TrnFreq  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    TrnAmpl  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    TrnVecx  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    TrnVecy  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    TrnVecz  0   0.000000000000000E+00  0.000000000000000E+00  0.000000000000000E+00
    Parameterization Scheme (Massoud=1 Bandaids=2 Sculptor=4 User-Defined=5)
    2
    Number of shape variables for 'tail'
    2
    Index Active         Value               Lower Bound            Upper Bound
    1    1   2.000000000000000E+00 -1.000000000000000E+00  5.000000000000000E+00
    2    1   2.000000000000000E+00 -1.000000000000000E+00  5.000000000000000E+00
    ################################################################################
    ############################### Function Information ###########################
    ################################################################################
    Number of composite functions for design problem statement
    2
    ################################################################################
    Cost function (1) or constraint (2)
    1
    If constraint, lower and upper bounds
    0.0 0.0
    Number of components for function   1
    1
    Physical timestep interval where function is defined
    1 1
    Composite function weight, target, and power
    1.0 0.0 1.0
    Components of function   1: boundary id (0=all)/name/value/weight/target/power
    0 cl            0.000000000000000    1.000   10.00000 2.000
    Current value of function   1
    0.000000000000000
    Current derivatives of function wrt global design variables
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    Current derivatives of function wrt rigid motion design variables of body   1
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    Current derivatives of function wrt shape design variables of body   1
    0.000000000000000
    0.000000000000000
    0.000000000000000
    Current derivatives of function wrt rigid motion design variables of body   2
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    Current derivatives of function wrt shape design variables of body   2
    0.000000000000000
    0.000000000000000
    ################################################################################
    Cost function (1) or constraint (2)
    2
    If constraint, lower and upper bounds
    -0.03 -0.01
    Number of components for function   2
    1
    Physical timestep interval where function is defined
    1 1
    Composite function weight, target, and power
    1.0 0.0 1.0
    Components of function   2: boundary id (0=all)/name/value/weight/target/power
    0 cmy           0.000000000000000    1.000    0.00000 1.000
    Current value of function   2
    0.000000000000000
    Current derivatives of function wrt global design variables
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    Current derivatives of function wrt rigid motion design variables of body   1
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    Current derivatives of function wrt shape design variables of body   1
    0.000000000000000
    0.000000000000000
    0.000000000000000
    Current derivatives of function wrt rigid motion design variables of body   2
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    0.000000000000000
    Current derivatives of function wrt shape design variables of body   2
    0.000000000000000
    0.000000000000000
         */
    }

    // Finds a line in rubber.data that matches header
    static int findHeader(const char *header, char **line, size_t *nline, int *iline, FILE *fp)
    {
        int i;
        while (getline(line, nline, fp) != -1) {
            (*iline)++;
            if (nline == 0) continue;
            if ((*line)[0] == '#') continue;
            i = 0;
            while ((*line)[i] == ' ' && (*line)[i] != '\0') i++;
            if (strncasecmp(header, &(*line)[i], strlen(header)) == 0)
              break;
        }
        if (feof(fp)) return CAPS_IOERR;

        return CAPS_SUCCESS;
    }


    // Read objective value and derivatives from FUN3D rubber.data file
    // Will not read shape entries unless explicitly told to check if they are needed
    int fun3d_readRubber(void *aimInfo,
                         cfdDesignStruct design,
                         int checkGeomShape,
                         double fun3dVersion,
                         aimMeshRef *meshRef)
    {
        int status; // Function return status

        int i, j, k, ibody; // Indexing

        int numShapeVar = 0;

        size_t nline;
        int iline=0;
        char *line=NULL;
        char file[] = "rubber.data";
        double dfun_dvar = 0;
        FILE *fp = NULL;

        int numBody;

        // Get AIM bodies
        numBody = meshRef->nmap;

        printf("Reading %s \n", file);

        // Open file
        fp = aim_fopen(aimInfo, file, "r");
        if (fp == NULL) {
            AIM_ERROR(aimInfo, "Unable to open file: %s\n", file);
            status = CAPS_IOERR;
            goto cleanup;
        }

        for (i = 0; i < design.numDesignFunctional; i++) {

            status = findHeader("Current value of function", &line, &nline, &iline, fp);
            AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);

            // Get the line with the objective value
            status = getline(&line, &nline, fp); iline++;
            if (status == -1) status = CAPS_IOERR; else status = CAPS_SUCCESS;
            AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);
            AIM_NOTNULL(line, aimInfo, status);

            status = sscanf(line, "%lf", &design.designFunctional[i].value);
            if (status != 1) status = CAPS_IOERR; else status = CAPS_SUCCESS;
            AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);

            // skip: Current derivatives of function wrt rigid motion design variables of
            status = getline(&line, &nline, fp); iline++;
            if (status == -1) status = CAPS_IOERR; else status = CAPS_SUCCESS;
            AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);
            AIM_NOTNULL(line, aimInfo, status);

            // read the dFun/dMach
            status = getline(&line, &nline, fp); iline++;
            if (status == -1) status = CAPS_IOERR; else status = CAPS_SUCCESS;
            AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);
            AIM_NOTNULL(line, aimInfo, status);

            for (j = 0; j < design.designFunctional[i].numDesignVariable; j++) {

                if (strcasecmp(design.designFunctional[i].dvar[j].name, "Mach") != 0) continue;

                status = sscanf(line, "%lf", &design.designFunctional[i].dvar[j].value[0]);
                if (status != 1) status = CAPS_IOERR; else status = CAPS_SUCCESS;
                AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);
                break;
            }

            // read the dFun/dAOA
            status = getline(&line, &nline, fp); iline++;
            if (status == -1) status = CAPS_IOERR; else status = CAPS_SUCCESS;
            AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);
            AIM_NOTNULL(line, aimInfo, status);

            for (j = 0; j < design.numDesignVariable; j++) {

                if (strcasecmp(design.designFunctional[i].dvar[j].name, "Alpha") != 0) continue;

                status = sscanf(line, "%lf", &design.designFunctional[i].dvar[j].value[0]);
                if (status != 1) status = CAPS_IOERR; else status = CAPS_SUCCESS;
                AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);
                break;
            }

            if (fun3dVersion > 12.4) {
                // FUN3D version 13.1 - version 12.4 doesn't have these available

                // read the dFun/dBeta
                status = getline(&line, &nline, fp); iline++;
                if (status == -1) status = CAPS_IOERR; else status = CAPS_SUCCESS;
                AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);
                AIM_NOTNULL(line, aimInfo, status);

                for (j = 0; j < design.designFunctional[i].numDesignVariable; j++) {

                    if (strcasecmp(design.designFunctional[i].dvar[j].name, "Beta") != 0) continue;

                    status = sscanf(line, "%lf", &design.designFunctional[i].dvar[j].value[0]);
                    if (status != 1) status = CAPS_IOERR; else status = CAPS_SUCCESS;
                    AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);
                    break;
                }

                // read the dFun/dNonInertial_Rotation_Rate[0]
                status = getline(&line, &nline, fp); iline++;
                if (status == -1) status = CAPS_IOERR; else status = CAPS_SUCCESS;
                AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);
                AIM_NOTNULL(line, aimInfo, status);

                for (j = 0; j < design.designFunctional[i].numDesignVariable; j++) {

                    if (strcasecmp(design.designFunctional[i].dvar[j].name, "NonInertial_Rotation_Rate") != 0) continue;

                    status = sscanf(line, "%lf", &design.designFunctional[i].dvar[j].value[0]);
                    if (status != 1) status = CAPS_IOERR; else status = CAPS_SUCCESS;
                    AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);
                    break;
                }

                // read the dFun/dNonInertial_Rotation_Rate[1]
                status = getline(&line, &nline, fp); iline++;
                if (status == -1) status = CAPS_IOERR; else status = CAPS_SUCCESS;
                AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);
                AIM_NOTNULL(line, aimInfo, status);

                for (j = 0; j < design.designFunctional[i].numDesignVariable; j++) {

                    if (strcasecmp(design.designFunctional[i].dvar[j].name, "NonInertial_Rotation_Rate") != 0) continue;

                    status = sscanf(line, "%lf", &design.designFunctional[i].dvar[j].value[1]);
                    if (status != 1) status = CAPS_IOERR; else status = CAPS_SUCCESS;
                    AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);
                    break;
                }

                // read the dFun/dNonInertial_Rotation_Rate[2]
                status = getline(&line, &nline, fp); iline++;
                if (status == -1) status = CAPS_IOERR; else status = CAPS_SUCCESS;
                AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);
                AIM_NOTNULL(line, aimInfo, status);

                for (j = 0; j < design.designFunctional[i].numDesignVariable; j++) {

                    if (strcasecmp(design.designFunctional[i].dvar[j].name, "NonInertial_Rotation_Rate") != 0) continue;

                    status = sscanf(line, "%lf", &design.designFunctional[i].dvar[j].value[2]);
                    if (status != 1) status = CAPS_IOERR; else status = CAPS_SUCCESS;
                    AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);
                    break;
                }
            }


            numShapeVar = 0; // Need to re-zero every functional loop

            if (checkGeomShape == (int) true) {
                // zero out previous derivatives
                for (j = 0; j < design.designFunctional[i].numDesignVariable; j++) {
                    if (design.designFunctional[i].dvar[j].type != DesignVariableGeometry) continue;
                    numShapeVar++;
                    for (k = 0; k < design.designVariable[j].var->length; k++ ) {
                      design.designFunctional[i].dvar[j].value[k] = 0;
                    }
                }
            }

            // No body information if there are no Geometry derivatives
            if (numShapeVar == 0) numBody = 0;

            for (ibody = 0; ibody < numBody; ibody++) {

              // Rigid motion design variables
              status = findHeader("Current derivatives of", &line, &nline, &iline, fp);
              AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);

              // Skip reading rigid motion design variables for now
             
              // Read shape design variables
              status = findHeader("Current derivatives of", &line, &nline, &iline, fp);
              AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);

              for (j = 0; j < design.designFunctional[i].numDesignVariable; j++) {

                  if (design.designFunctional[i].dvar[j].type != DesignVariableGeometry) continue;

                  for (k = 0; k < design.designVariable[j].var->length; k++ ) {

                      // read the dFun/dDesignVar[k]
                      status = getline(&line, &nline, fp); iline++;
                      if (status == -1) status = CAPS_IOERR; else status = CAPS_SUCCESS;
                      AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);
                      AIM_NOTNULL(line, aimInfo, status);

                      status = sscanf(line, "%lf", &dfun_dvar);
                      if (status != 1) status = CAPS_IOERR; else status = CAPS_SUCCESS;
                      AIM_STATUS(aimInfo, status, "rubber.data line %d", iline);

                      // accumulate derivatives across bodies
                      design.designFunctional[i].dvar[j].value[k] += dfun_dvar;
                  }
              }
            }
        }

        status = CAPS_SUCCESS;

    cleanup:

        if (line != NULL) free(line); // Must use free!
        if (fp   != NULL) fclose(fp);

        return status;
    }

    // Make FUN3D directory structure/tree
    int fun3d_makeDirectory(void *aimInfo)
    {
        int status; // Function return status

        char filename[PATH_MAX];

        char flow[] = "Flow";
        char datafile[] = "datafiles";
        char adjoint[] = "Adjoint";
        char rubber[] = "Rubberize";

        printf("Creating FUN3D directory tree\n");

        // Flow
        status = aim_mkDir(aimInfo, flow);
        AIM_STATUS(aimInfo, status);

        // Datafiles
        sprintf(filename, "%s/%s", flow, datafile);
        status = aim_mkDir(aimInfo, filename);
        AIM_STATUS(aimInfo, status);

        // Adjoint
        status = aim_mkDir(aimInfo, adjoint);
        AIM_STATUS(aimInfo, status);

        // Rubber
        status = aim_mkDir(aimInfo, rubber);
        AIM_STATUS(aimInfo, status);

        status = CAPS_SUCCESS;

    cleanup:
        return status;
    }



    // Morphing input
    // First time through and morphing
    // -  Write bodies and mesh to disc only if mesh is linked a
    // -  AIM_CP_FIle the meshfile
    //


    // aim_storeMeshRef(aimInfo, meshRef, MESHEXTENSION);
    //aim_storeMeshRef(aimInfo, meshRef, MESHEXTENSION);
    //
    //aimMeshRef meshRef2;
    //aim_initMeshRef(&meshRef2);
    //aim_loadMeshRef(aimInfo, &meshRef2);
    //aim_freeMeshRef(&meshRef2);

    // Logic for selecting/setting mesh pointer if morphing the mesh
    int fun3d_morphMeshLogic(void *aimInfo, int storeAllowed, aimMeshRef **meshRef, aimMeshRef *meshRefObj)
    {
        int status = CAPS_SUCCESS;

        AIM_NOTNULL(meshRefObj, aimInfo, status);

        if (*meshRef != NULL && storeAllowed == (int) true) { // If we are NOT null lets store the mesh - if allowed

            status = aim_storeMeshRef(aimInfo, *meshRef, MESHEXTENSION);
            AIM_STATUS(aimInfo, status);

            *meshRef =  meshRefObj;

           // Lets "reload" the meshRef now - A little awkward but.....
           status = aim_loadMeshRef(aimInfo, *meshRef);
           AIM_STATUS(aimInfo, status);

        } else if (*meshRef != NULL  && storeAllowed == (int) false) { // If we are NOT null

             // Do nothing

        } else { // *meshRef == NULL

            *meshRef =  meshRefObj;

            // Lets "load" the meshRef now
            status = aim_loadMeshRef(aimInfo, *meshRef);
            AIM_STATUS(aimInfo, status);
        }

        cleanup:
            return status;
    }


    //{
    //    int status = CAPS_SUCCESS;
    //
    //    AIM_NOTNULL(meshRefObj, aimInfo, status);
    //
    //    if (*meshRef != NULL && storeAllowed == (int) true) { // If we are NOT null lets store the mesh
    //        status = aim_storeMeshRef(aimInfo, *meshRef, MESHEXTENSION);
    //        AIM_STATUS(aimInfo, status);
    //
    //        meshRef = NULL;
    //    }
    //
    //    *meshRef =  meshRefObj;
    //
    //    // Lets "reload" the meshRef now - A little awkward but.....
    //    status = aim_loadMeshRef(aimInfo, *meshRef);
    //    AIM_STATUS(aimInfo, status);
    //
    //    cleanup:
    //        return status;
    //}

    // Map the old surface tessellation on to the new bodies
    int fun3d_morpMeshUpdate(void *aimInfo,  aimMeshRef *meshRef, int numBody, ego *bodies)
    {
        int status = CAPS_SUCCESS;
        int i=0;
        int state, numVert;
        ego bodyMapping;
        ego body;
        ego tess;

        // Have the number of bodies changed?
        if (meshRef->nmap != numBody) {
            printf("The number of original surface meshes does NOT equal the number of current bodies!\n");
            AIM_STATUS(aimInfo, CAPS_MISMATCH);
        }

        // Are the bodies topological equivalent?
        for (i = 0; i < meshRef->nmap; i++) {

            status = EG_statusTessBody(meshRef->maps[i].tess, &body, &state, &numVert);
            AIM_STATUS(aimInfo, status);

            status = EG_mapBody(body, bodies[i], "_faceID",  &bodyMapping); // "_faceID" - same as in OpenCSM
            if (status != EGADS_SUCCESS || bodyMapping != NULL) {

                printf("New and old body %d (of %d) do not appear to be topologically equivalent!\n", i+1, meshRef->nmap);

                if (bodyMapping != NULL) {
                    printf("Body mapping isn't NULL!\n");
                }

                AIM_STATUS(aimInfo, CAPS_MISMATCH);
            }
        }

        // Now lets "tweak" the surface tessellation - map the old tessellation to the new bodies
        for (i = 0; i < meshRef->nmap; i++) {

            status = EG_copyObject(bodies[i], NULL, &body);
            AIM_STATUS(aimInfo, status);

            status = EG_mapTessBody(meshRef->maps[i].tess,
                                    body,
                                    &tess);
            AIM_STATUS(aimInfo, status);

            status = EG_deleteObject(meshRef->maps[i].tess);
            meshRef->maps[i].tess = tess;

        }

        cleanup:
            return status;
    }
    ryan / detail
  289. Remove old egads file in aim_storeMeshRef. Set AIMptr to NULL when unlinking. — galbramc / detail
  290. Suppress lint warnings — galbramc / detail
  291. Fix for last commit — galbramc / detail
  292. Add aim_storeMeshRef and aim_loadMeshRef — galbramc / detail
  293. Doc updates — haimes / detail
  294. Fix typo in doc, and short Python Units Appendix — galbramc / detail
  295. Minor documentation (and coding) changes for the Python 1-to-1 CAPS interface — haimes / detail
  296. Document 1-to-1 pyCAPS API. Change pyCAPS setLimits/getLimits to setLimitsSize/getLimitsSize. Add support for limit arrays to pyCAPS. — galbramc / detail
  297. Addition of a CAPS API function that anly returns a Value Object's size — haimes / detail
  298. Try again! — haimes / detail
  299. Only set limits on OpenCSM DESPMTRs — haimes / detail
  300. Completed the first cut for per element support of limits — haimes / detail
  301. Adjust Value functions to support per element limits — haimes / detail
  302. Update bfr instructions — galbramc / detail
  303. Fix lint error — haimes / detail
  304. readd multifidelity phasing examples — dongjoon / detail
  305. Read/write and update setLimits/getLimits for per element limits — haimes / detail
  306. Skeleton additions for adding per element limits — haimes / detail
  307. Support for higher precssion xfoil executables. Add BoundaryLayerIntersect meshProp for AFLR4 and AFLR3. — galbramc / detail
  308. Compile needed aflr43 files — galbramc / detail
  309. Upgrade to AFLR 10.22.23 — galbramc / detail
  310. Uprev CAPS — haimes / detail
  311. Update corasairlite README to indicate hoburg_blackbox.py requies scipy. Remove hoburg_lsqp.py from testing. — galbramc / detail
  312. delete duplicate file — dongjoon / detail
  313. Fix sensitivites with AFLR and TRANSP. Fix check for return codes in caps_info/caps_analysisInfo in pyCAPS. — galbramc / detail
  314. Don't run corsairlite scipy exemples without scipy — galbramc / detail
  315. Remove unused variable to fix stanalizer — galbramc / detail
  316. cCAPS example fix — galbramc / detail
  317. Stanalizer fixes — galbramc / detail
  318. Fixes for dealing with TRANSP surfaces. Add AFLR3 TRANSP tests. — galbramc / detail
  319. Turn off wake for all tetgen examples — galbramc / detail
  320. Fix SU2 to support internal BCs. TetGen does not support internal surfaces. — galbramc / detail
  321. Add TRANSP_UG3_GBC testing. Don't allow TRANSP_SRC_UG3_GBC for AFLR with CAPS. echo exectables when running tests. — galbramc / detail
  322. Codify corsairlite phasing example as commandline scripts — galbramc / detail
  323. Only set signals from the python Main Thread. — galbramc / detail
  324. Catch import signal ValueError. — galbramc / detail
  325. CorsairLite doc update — haimes / detail
  326. Various small cleanups — galbramc / detail
  327. Fix signal handling in pyCAPS — galbramc / detail
  328. Small Makefile cleanup — galbramc / detail
  329. Add intentPhase to corsair capsPhase examples — galbramc / detail
  330. Upgrade AFLR version check to 10.22.22 libraries. Add more AFLR3 tests. — galbramc / detail
  331. Update training solution — galbramc / detail
  332. Fix bug not removing .tessType for Tri EGADS tessellations — galbramc / detail
  333. Updated training box wing to remove capsIgnore — galbramc / detail
  334. Cleanup corsair examples a little — galbramc / detail
  335. Add intentPhrase and history to pyCAPS — galbramc / detail
  336. Replaced viscous wall bc to inviscid for Wing1 — nitin / detail
  337. changed viscous wall bc to inviscid for Wing1 — nitin / detail
  338. delete corsairlite example multifidelity — dongjoon / detail
  339. Bug fix for cart3d with geometric sensitvities — galbramc / detail
  340. Add symmetry inputs to cart3d — galbramc / detail
  341. Updated SU2 AIM for compatibility with the latest (SU2-7.3.1) — nitin / detail
  342. Protect value index from changes in aimCalcOutput — galbramc / detail
  343. lint fixes — galbramc / detail
  344. fix tabs to spasces — dongjoon / detail
  345. Fix warning — galbramc / detail
  346. Fix aimTransfer to use surface to volume maps — galbramc / detail
  347. modify corsair examples to generate pickle — dongjoon / detail
  348. Lint and memory leak fixes — galbramc / detail
  349. delete duplicate examples/corsairlite/phase_design directory — dongjoon / detail
  350. Update multifidelity examples with no hard coded paths and phaseStart — dongjoon / detail
  351. Update corsairlite examples with multifidelity phasing — dongjoon / detail
  352. Fix copy/pasta mistake — galbramc / detail
  353. Fix boundary indexing for aflr3 to mach capsGroup indexing — galbramc / detail
  354. lint fixes — galbramc / detail
  355. Fix AFLR NMakefiles — galbramc / detail
  356. Plug memory leak in aflr3 and run new Symmetry testing with MESH — galbramc / detail
  357. Reorder AFLR libraries — galbramc / detail
  358. Upgrade to AFLR 10.22.21 with support for sensitvities on symmetry planes — galbramc / detail
  359. os independent file paths for corsair examples — galbramc / detail
  360. Ignore corsairlite for legacy regression tests — galbramc / detail
  361. Use cdef in fun3dNamelist.pyx to avoid segfault during garbage collection — galbramc / detail
  362. Forgot a file — galbramc / detail
  363. embedded python updates — galbramc / detail
  364. Fix divide by zero — galbramc / detail
  365. Relax tolerances for cvxopt — galbramc / detail
  366. Replaced serveCSM with serveESP — nitin / detail
  367. added figures to html version, consistent with pdf — nitin / detail
  368. Update corsairlite kulfan models — dongjoon / detail
  369. Copy hoburg.pl for corsair testing. Ignore corsair in C regressions — galbramc / detail
  370. Cleanup corsairlite capsPhase examples a little — galbramc / detail
  371. Run corsairlite qp for MINIMAL testing — galbramc / detail
  372. Fix examples copy for corsairlite — galbramc / detail
  373. Enable corsairlite test again. — galbramc / detail
  374. Don't test corsairlite yet — galbramc / detail
  375. Defer scipy import error for corsair kulfan datatype — galbramc / detail
  376. Add corsairlite examples — galbramc / detail
  377. Add corsairlite — galbramc / detail
  378. Some dox cleanup — galbramc / detail
  379. Add caps.phaseNewCSM to pyCAPS. Enalbe use of phaseNewCSM in pyCAPS Problem. — galbramc / detail
  380. Updated CAPS overview dox, *_dox.cfg, *_header.tex to fix warnings — nitin / detail
  381. Add caps_phaseNewCSM to the CAPS API — haimes / detail
  382. Fix bug specifuing Mesh_Sizing on Edges for aflr4 — galbramc / detail
  383. Update phasing tests. Fix Multiple_Mesh for TetGen. — galbramc / detail
  384. Make updates fix directory removal under error — haimes / detail
  385. Cleanup phasing in pyCAPS — galbramc / detail
  386. Include IDE's parent info in phaseUtil and fix some minor issues — haimes / detail
  387. Complete phaseUtil — haimes / detail
  388. Add AnalysisIn derivatives in sens file for tacs and fun3d — galbramc / detail
  389. Add the phaseUtil app -- still needs filling out — haimes / detail
  390. Change skeleton AIM so it can be used as part of the ESP IDE tutorial — haimes / detail
  391. Add mses executables to ESPbfr — galbramc / detail
  392. Protect FunID read against a corrupt file — haimes / detail
  393. Revert adding debug in Problem.__init__ — galbramc / detail
  394. Output file position on Journal read during debugging — haimes / detail
  395. Guard pyCAPS.Problem.__init__ caps calls with caps_debug — galbramc / detail
  396. Stanalizer fix — galbramc / detail
  397. Fix memory leak in Cart3D data transfer — galbramc / detail
  398. Fix bug in last commit. Cleanup caps_preAnalysiX. Add forgotten Cart3D FSI example. — galbramc / detail
  399. Put user name and date/time stamp in capsLock — haimes / detail
  400. fix memory leak in msesAIM — galbramc / detail
  401. Lint fixes — galbramc / detail
  402. another scan-build fix — galbramc / detail
  403. scan-build fixes — galbramc / detail
  404. Add environment variable to output Journal entries as they process — haimes / detail
  405. Fix warning — galbramc / detail
  406. Dedicated function to call aim_UpdateState. Re-formulate phasing/continuation in pyCAPS Problem constructor. Indent AIM error messages. Add Displacement data transfer to Cart3D for FSI. Only allow cals to caps_getDataSet in aimPreAnalysis. Do not allow disk manipulation in aimUpdateState. — galbramc / detail
  407. Fix childByName when in debug mode — haimes / detail
  408. Finally the correct Windoze executable — galbramc / detail
  409. Update avl exec on Linux and Windoze — galbramc / detail
  410. Fix both the documentation and the code so they are consistent with adding const to the AIM functions Pre and Exec — haimes / detail
  411. update jfd3AIM to adjust for recent API changes — jfdannen / detail
  412. Reinstate no intent phrase flag — haimes / detail
  413. Try that again — galbramc / detail
  414. Update macOS avl executables without X11 dylib dependency — galbramc / detail
  415. Don't journal on initPhrase calls in caps_open — haimes / detail
  416. Revert last commit — haimes / detail
  417. Turn off journaling of intentPhrase in caps_open — haimes / detail
  418. lint fixes — galbramc / detail
  419. So many def files... — galbramc / detail
  420. Fixes for delaundo — galbramc / detail
  421. Another forgotten def file — galbramc / detail
  422. Missed one — galbramc / detail
  423. aimUpdateState is no longer optional — galbramc / detail
  424. Forgot def file — galbramc / detail
  425. Add aimUpdateState to su2 AIM, and fix warnings — galbramc / detail
  426. Add aimUpdateState to nastran and poinwise AIMs — galbramc / detail
  427. Add aimUpdateState to hsm, interference, masstran, mystran, and aimUtil.h — galbramc / detail
  428. Fix writing a Integer Value Object that is NULL — haimes / detail
  429. Add aimUpdateState to fun3dAIM. Call aim_UpdateState in post analysis during reload. — galbramc / detail
  430. Fix lint issue on skeletonAIM — haimes / detail
  431. Fix warnings from last commit — haimes / detail
  432. Protect against writing NULL double value objects; Update skeleton AIM — haimes / detail
  433. Fix applying offset to NULL pointer — galbramc / detail
  434. Update avl reference data. Plug memory leak in egadsTess — galbramc / detail
  435. Fix aimUpdateState in egadsTess AIM — galbramc / detail
  436. Don't run mystran_PyTest on Windoze — galbramc / detail
  437. Forgot def file — galbramc / detail
  438. Remove on too many lines — galbramc / detail
  439. Fix warning from last commit — galbramc / detail
  440. More aimUpdateState updates. Remove some redundant tests — galbramc / detail
  441. Add aimUpdateState to a number of AIMs. Turn on CLink between Phases. — galbramc / detail
  442. Misseed one astros in training — galbramc / detail
  443. Allow aim_relPath to cross Phases — haimes / detail
  444. Guard againts running mastros test when mastros does not exist — galbramc / detail
  445. Fixes for calling aimUpdateState in caps_preAnalysis — galbramc / detail
  446. Plug memory leak — galbramc / detail
  447. More mses tests. Add aimUpdateStatus to avlAIM. Other small fixes. — galbramc / detail
  448. Allow for debug mode coming into caps_outputObjects — haimes / detail
  449. Allow for debug mode coming into caps_outputObjects — haimes / detail
  450. in pyCAPS.Problem(), use running Caps Problem if it already exists — jfdannen / detail
  451. Add phasing xfoil tests — galbramc / detail
  452. Add Phasing test to pyCAPS unit testing. Fix probemName misspelling. — galbramc / detail
  453. Turn off Analysis links for now — haimes / detail
  454. Fix the warnings from the last commit — haimes / detail
  455. First cut at Analysis disk links for new Phases — haimes / detail
  456. Reduce execution time in legacy xfoil example — galbramc / detail
  457. Faster geometry construction for ESP_Commit — galbramc / detail
  458. Add some more timing — galbramc / detail
  459. Remove incorrect CL derivatives from msesAIM. Run one test per aim for MINIMAL tests. — galbramc / detail
  460. Fix last commit — haimes / detail
  461. Prepare the AIM utilities for Analysis directory links — haimes / detail
  462. Missed one free — galbramc / detail
  463. lint fixes — galbramc / detail
  464. Use aimUpdateState in msesAIM. Cache sensitvities in msesAIM. Expose more inputs in msesAIM. — galbramc / detail
  465. Implement undocumented caps_modifiedDesPmtrs so that the IDE can know which DESPMTRs have been modified by CAPS — haimes / detail
  466. Some more mses updates and regression script fix — galbramc / detail
  467. Don't check alpha for TargetCL Cart3D test — galbramc / detail
  468. Add TargetCL to Cart3D and enable Cart3D 2D mode — galbramc / detail
  469. Try that again — galbramc / detail
  470. Fix infinite loop in convert_doubleToString — galbramc / detail
  471. Fix calling updateState when an AnalysisIn Object has changed — haimes / detail
  472. Add the AIM function aimUpdateState which will allays be the first function executed in the sequence — haimes / detail
  473. A few more mses corrections — galbramc / detail
  474. Adjust mses data — galbramc / detail
  475. mses updates — galbramc / detail
  476. Remove caps_resetAnalysis from the API — haimes / detail
  477. Use curvature weighted point distribution for avl/xfoil/mses — galbramc / detail
  478. Remove caps_resetAnalysis from pyCAPS — galbramc / detail
  479. Don't write 'empty' rubberize files — galbramc / detail
  480. "fix" to fun3dAIM when to write/read shape sensitivities — ryan / detail
  481. Fix intent phrase sync issue on initialization — haimes / detail
  482. Add initial history for GeometryIn, Analysis and AnalysisIn Objects — haimes / detail
  483. Fix journaling so that changing DESPMTR (GeometryIn) dimensioning is handled — haimes / detail
  484. Remove old caps_open CSM reload option and replace it with the new — haimes / detail
  485. Fix history addition for reloading CSM and new GeometryIn Value Object — haimes / detail
  486. Relax tolerance and try to get consistent xfoil results on all machines — galbramc / detail
  487. Update mses data. — galbramc / detail
  488. Update xfoil data. Don't set OCS_CONPMTR when journaling — galbramc / detail
  489. More robust xfoil execution — galbramc / detail
  490. Update legacy test xfoil data — galbramc / detail
  491. Adjust tolerances — galbramc / detail
  492. Add mses OpenMDAO example — galbramc / detail
  493. Missed some test that needed updated reference data — galbramc / detail
  494. Use EGADS tessellator for airfoil files — galbramc / detail
  495. Fix warning clang 13.1.6 warning — galbramc / detail
  496. Fix full path on CSM filename for oPNewCSM option with caps_open — haimes / detail
  497. Forgot to close a file — galbramc / detail
  498. Fix msesAIM sensitivities — galbramc / detail
  499. Support a directory of CSM/UDC files at init or CSM reload for caps_open; test for all analyses past post for completing a Phase — haimes / detail
  500. Don't write fun3d Rubberize files when not needed — galbramc / detail
  501. Don't write out body information to rubber.data for only AnalysisIn sensitvities — galbramc / detail
  502. Stanalizer fix — galbramc / detail
  503. Add avl 3.40 min version error message — galbramc / detail
  504. Remove libquadmath dependency on DARWIN64 — galbramc / detail
  505. Add avl 3.40 to ESPbfr — galbramc / detail
  506. Plug one more memory leak — galbramc / detail
  507. Fix array bound issue in avlmrf — galbramc / detail
  508. Move variable declarations to top of functions — galbramc / detail
  509. Fix avl NMakefile. Fix uninitialized data. — galbramc / detail
  510. Lint and memory leak fixes — galbramc / detail
  511. aimBackdoor has been removed from the avl AIM — galbramc / detail
  512. avl fixes — galbramc / detail
  513. Upgrade to avl 3.41 — galbramc / detail
  514. Change caps_delete to caps_markForDelete in pyCAPS — galbramc / detail
  515. Change caps_delete to caps_markForDelete — haimes / detail
  516. Preserve pyCAPS objects when calling caps_delete. caps_delete and pyCAPS delete will be renamed. — galbramc / detail
  517. Revert astros example — galbramc / detail
  518. Fix last scan-build error — haimes / detail
  519. Add history to geometry objects that are either new inputs or all outputs when reloading a CSM file — haimes / detail
  520. Fix scan-build complaint — haimes / detail
  521. lint fixes — galbramc / detail
  522. Restote attributes and history on geometry objects with a CSM reload — haimes / detail
  523. Update legacy su2 test — galbramc / detail
  524. Add some egadsTess NodeBody tests — galbramc / detail
  525. Fix BC indexing for meshRef — galbramc / detail
  526. Add history to geometry outs and other minor updates — haimes / detail
  527. Use enum instead of numerical value for checking stFlag — haimes / detail
  528. Also return row vector in caps_getValue — galbramc / detail
  529. Patch up some potential problems with restart/journaling and changing OpenCSM dimensions — haimes / detail
  530. Add read-only option on caps_open -- not well tested — haimes / detail
  531. remove jfd3AIM from aim/Makefile — jfdannen / detail
  532. add hfd3AIM for testing Bounds and DataSets — jfdannen / detail
  533. Add new caps_delete to pyCAPS — galbramc / detail
  534. Reconcile addHistory with writeSerialNum — haimes / detail
  535. Add history to caps_makeValue — haimes / detail
  536. Upgrade to mystran 13.3a — galbramc / detail
  537. Take away double CSM build ifdef in caps_open — haimes / detail
  538. Add CAPS open option to ignore object delete markers; return delete status in caps_info — haimes / detail
  539. Actually write the serial number in caps_writeSerialNum — haimes / detail
  540. Update legacy example — galbramc / detail
  541. lint fix and update astros Design example — galbramc / detail
  542. Stanalizer fix — galbramc / detail
  543. Fix warning — galbramc / detail
  544. Fix memory leaks. Journal caps_setValue(NULL). — galbramc / detail
  545. Only write sNum to the Problem file if that is all that is needed — haimes / detail
  546. Minor fixes & move sNum to beginning of problem file — haimes / detail
  547. Remove Bound directory during deletion and fix up internal Parameter index when there are deletions — haimes / detail
  548. re-expose su2 variables for aeroelastic cases — nitin / detail
  549. New phase deletion fleshed out — haimes / detail
  550. Remove capsLock beforey renmaing a phase on caps_close — galbramc / detail
  551. Fix logic for tracking pyCPAS ProblemState — galbramc / detail
  552. Update makefiles to run skeletonAIM example — galbramc / detail
  553. Fix skeleton AIM — galbramc / detail
  554. Hold on to and delete User Value Objects at a complete CAPS close; change the meaning of caps_delete (still need to do the deletion at start of a new phase) — haimes / detail
  555. SU2 AIM updated for SU2-7.3.0, Changed boundary markers from numbers to strings — nitin / detail
  556. SU2 AIM updated for SU2-7.3.0, Changed boundary markers from numbers to strings — nitin / detail
  557. Fix mses memory leak — galbramc / detail
  558. Fix legacy script. Add caps_intentPhrase to pyCAPS. — galbramc / detail
  559. scan-build fix — galbramc / detail
  560. Add Cheby_Mode output and sensitvities to msesAIM — galbramc / detail
  561. lint fixes — galbramc / detail
  562. Fix warnings — galbramc / detail
  563. Make relaoding AIMs lazy. Remove unused problem->exec. Enable Journaling/Phasing for aflr3 and fun3d. — galbramc / detail
  564. Fix caps_size in debug mode for Dynamic Outputs — haimes / detail
  565. Implementation of new History tracking — haimes / detail
  566. dox fix — ryan / detail
  567. lint fixes for aflr4 — galbramc / detail
  568. Enable phasing and journaling for aflr4AIM — galbramc / detail
  569. lint fixes — galbramc / detail
  570. Don't call analsysisInfo with problem object — galbramc / detail
  571. scan-build fixes — galbramc / detail
  572. Close ugrid file after reading header — galbramc / detail
  573. Use correct CAPSLONG in pyCAPS on Windoze — galbramc / detail
  574. Update caps_jrnlRead with funID — galbramc / detail
  575. Add funID to caps_jrnlWrite. Fix call to caps_ownerInfo. Fix memory leak in egadsTess. — galbramc / detail
  576. Update pyCAPS for new history tracking. Fixes in su2. Test Phasing with egads/tetgen/su2. — galbramc / detail
  577. Move CAPS towards the new history tracking — haimes / detail
  578. Revert changes in CAPS/src from previous accidental commit — galbramc / detail
  579. Fix training files from last commit. Remove bodyTessMappingStruct in lieu of .mixed attribute. Fixes for Journaling. Fixes for autoExec when the upstream AIM unputs are dirty. Store mesh on disk for egadsTessAIM to work with Journaling and Phasing. Update tetgenAIM to work with Journaling and Phasing. Add tetgen pyCAPS unit tests. — galbramc / detail
  580. Remove caps_freeOwner from pyCAPS. Add commented out caps_getHistory and caps_intentPhrase for the future. — galbramc / detail
  581. Put caps_freeOwner back in the def file — haimes / detail
  582. remove caps_setOwner from caps.py — jfdannen / detail
  583. Prepare for history changes — haimes / detail
  584. Add aim_readBinaryUgridHeader — galbramc / detail
  585. Remove addHistory and getHistory from pyCAPS — galbramc / detail
  586. Allow for removing the entire phase at caps_close — haimes / detail
  587. Don't call caps_delete in pyCAPS for now — galbramc / detail
  588. Add aim_rmFile — galbramc / detail
  589. Change pyCAPS caps_triangulate to caps_getTriangles — galbramc / detail
  590. Add caps_printErrors; change caps_triangulate to caps_getTriangles and other fixes — haimes / detail
  591. Some dox cleanup for tacsAIM — galbramc / detail
  592. tacs dox fix — ryan / detail
  593. fixes for 'Flow' directory switching for fun3dAIM — ryan / detail
  594. Update flowchart viewing and check for parameter value object uniqueness — haimes / detail
  595. Track closure of problem object to avoid calling caps_delete. This will leak attributes for now if the problem object is explicitly closed. — galbramc / detail
  596. Track closure of problem object to avoid calling caps_delete. This will leak attributes for now if the problem object is explicitly closed. — galbramc / detail
  597. Training fix — galbramc / detail
  598. Undo accidental change — galbramc / detail
  599. Some more training fixes — galbramc / detail
  600. Fix comments in training examples — galbramc / detail
  601. dox fixes — galbramc / detail
  602. Require using Design_Variable_Relation for bdf files. — galbramc / detail
  603. dox fix to clarify symmetry boundary condition requirements for fun3d — ryan / detail
  604. Disable autoExecution for functions in capsBase when in debug mode — haimes / detail
  605. Add newline to printing of tuples that are NULL — haimes / detail
  606. Fix memory leak from last commits — haimes / detail
  607. Remove debug prints — haimes / detail
  608. Update outputObjects and add Body and Tess count to AIM info for printObjects — haimes / detail
  609. Remove the regeneration of FieldIn DataSets during AIM restart — haimes / detail
  610. Revamp the way postAnalysis gets invoked during recycling — haimes / detail
  611. Fix jouranling bug — galbramc / detail
  612. Remove first OCSM build when starting a new phase updating the CSM script; don't write out value objects with the link nullified — haimes / detail
  613. Add None arguments to outputObjects — galbramc / detail
  614. Add stream output option to caps_outputObjects — haimes / detail
  615. Add outputObjects to capsProblem — galbramc / detail
  616. Fix bug found by Stanalyzer output — haimes / detail
  617. First cut at DongJoon's CAPS flowchart (debugging) — haimes / detail
  618. Fix caps_rmWild to support spaces in path — haimes / detail
  619. Try to get by Cart3D tests again — haimes / detail
  620. Make sure there is enough room for commands with quoted paths — haimes / detail
  621. Allow for spaces in Problem paths — haimes / detail
  622. Documentation updates and raise an error when caps_open is given a path with an included space — haimes / detail
  623. Fix last commit — galbramc / detail
  624. Try to plug unitialized values from last commit — haimes / detail
  625. Implement a debug mode that does not journal or autoExec/autoFill — haimes / detail
  626. Update .sens file for tacsAIM and fun3dAIM. Add Phasing test for avl. — galbramc / detail
  627. add functional to fun3d options (undocumented) — ryan / detail
  628. Fix writeTecplot — galbramc / detail
  629. Fix for updated pyCAPS constructors — galbramc / detail
  630. Fix last commit — galbramc / detail
  631. Another try at fixing the memory leak. Update pyCAPS for the new caps_triangulate. Add caps_phaseStatus to pyCAPS. — galbramc / detail
  632. Lets try that again — galbramc / detail
  633. Another memory leak fix — galbramc / detail
  634. Update caps.def — galbramc / detail
  635. Update aimTransferUtilTest to test caps_ functions — galbramc / detail
  636. Fix memory leaks from last commit — haimes / detail
  637. Add mesh information to the data returned from caps_triangulate — haimes / detail
  638. Adjust the calling sequence of caps_open to be consistent with the documentation — haimes / detail
  639. Fix deriv bug in caps_writeValue — galbramc / detail
  640. Fix memory corruption from cut & paste — haimes / detail
  641. Add file handling functions to the def file — haimes / detail
  642. Fix SegFault in caps_open CSM reload — haimes / detail
  643. Regression test fixes — galbramc / detail
  644. Update legacy test for PointwiseV18.5R1 — galbramc / detail
  645. Try to fix Stanalyzer error from last commit — haimes / detail
  646. Some corrections to Phase start with CSM reload — haimes / detail
  647. Try again to fix Stanalyzer (scan-build) errors — haimes / detail
  648. Try to fix Stanalyzer (scan-build) errors — haimes / detail
  649. Implementation of new phase startup with CSM script reload -- needs more tessting — haimes / detail
  650. Suppress lint — galbramc / detail
  651. Ignore zero lenth units string in caps_makeValue — galbramc / detail
  652. Fix warning and relax tolerance — galbramc / detail
  653. Fix for caps_getDeriv. Lots of updates to msesAIM — galbramc / detail
  654. Fix for caps_hasDeriv — galbramc / detail
  655. Allow pyCAPS.Problem construction with a capsObj — galbramc / detail
  656. Add missing reference quanteties — galbramc / detail
  657. Updated legacy 'truth' avl values — galbramc / detail
  658. Upgrade pointwimse AIM to support Pointwise 18.5. Rotate airfoils for astros. Add error checking for capsReference quantities in avl. — galbramc / detail
  659. add stl2tess to Slugs/src — jfdannen / detail
  660. Fix for last commit — galbramc / detail
  661. Add more checks when reading sens file — galbramc / detail
  662. Update the copyright year to 2022 — haimes / detail
  663. Add SensFile reader to fun3dAIM — galbramc / detail
  664. Fix memory leak — galbramc / detail
  665. Fix memory leaks — galbramc / detail
  666. Stanilizer fixes — galbramc / detail
  667. Turn on mses unit test again — galbramc / detail
  668. Fix warning and NMakefile — galbramc / detail
  669. Fixes for last commit. Dissable mses test until we get new executables. — galbramc / detail
  670. MSES seems to be working with sensitvities. Many other small fixes. — galbramc / detail
  671. Fix relative path for geometry.view and analysis.view functions — galbramc / detail
  672. Fix TACS test — galbramc / detail
  673. Fix TACS sensitivity bug — galbramc / detail
  674. First cut at MSES IO functions — haimes / detail
  675. outLevel fixes — galbramc / detail
  676. mses, xfoil and tacs fixes — galbramc / detail
  677. Added initial msesAIM. Very much work in progress — galbramc / detail
  678. Update awave error message — galbramc / detail
  679. Lint fix — galbramc / detail
  680. Dynamic Web Server library cleanup — haimes / detail
  681. Revert back to testing just one wing with cart3d — galbramc / detail
  682. Skiop inconsistency — galbramc / detail
  683. Tighter tolerance — galbramc / detail
  684. Enable multi-body for cart3d — galbramc / detail
  685. Changes due to WV server library going dynamic — haimes / detail
  686. Update getDeriv for GeometryOut for fattened Jacobian — galbramc / detail
  687. Allow for passing a user pointer into browserMessage -- breaks compatibility! — haimes / detail
  688. Fix sanitizer — galbramc / detail
  689. doc fix — galbramc / detail
  690. Warning fix — galbramc / detail
  691. lint fixes — galbramc / detail
  692. Forgot Windoze NMake — galbramc / detail
  693. Add TACS AIM — galbramc / detail
  694. Update pyCAPS examples to use caps_system call — galbramc / detail
  695. Cart3D fixes. Remove os.chdir from doc. Add some Analysis.system calls. — galbramc / detail
  696. Relax tolerances and skip openmdao when not available — galbramc / detail
  697. More Cart3D fixes — galbramc / detail
  698. Suppress ocsmBuild for sensitvities (to avoid confusion with an actual build). Fix memory leak in xddm. — galbramc / detail
  699. Fix uninitialized data — galbramc / detail
  700. Cart3D fixes — galbramc / detail
  701. More xddm cleanup — galbramc / detail
  702. xddm fix — galbramc / detail
  703. scan-build fixes — galbramc / detail
  704. Lint fixes — galbramc / detail
  705. Minor cleanup of xddm — galbramc / detail
  706. Tweak cart makefile — galbramc / detail
  707. Update fun3d OpenMDAO example with dynamic outputs — galbramc / detail
  708. Warning fix — galbramc / detail
  709. Fix warning and properly suppress cart test when cart is not present — galbramc / detail
  710. Update training example — galbramc / detail
  711. Add auto execution for AnalysisDynO. Update Fun3D with AnalysisDynO. Add geometric sensitivties to Cart3D. Allow Cart3D trix file to write multiple bodies. Add Cart3D_OpenMDAO examples. Other smaller cleanup. — galbramc / detail
  712. Remove AFLR3 .tmp.b8.ugrid file — galbramc / detail
  713. Surpress delete message (for wildcards that don't exist) on Windows — haimes / detail
  714. Fix Windows Warning — haimes / detail
  715. First complete implementation of Analysis Dynamic Outputs — haimes / detail
  716. Warning fix — galbramc / detail
  717. Add wildcards to aim_rmDir — galbramc / detail
  718. Initialize Dynamic Outs for Restart — haimes / detail
  719. Begin the implementation of Analysis Dynamic Outputs — haimes / detail
  720. Windoze fix — galbramc / detail
  721. Fix last commit — galbramc / detail
  722. Add aim_rmDir and update doc — galbramc / detail
  723. lint fix — galbramc / detail
  724. Fix for reading fun3d .forces with Design_Functional — galbramc / detail
  725. Fix last commit — galbramc / detail
  726. Lint fixes — galbramc / detail
  727. Fix copy/pasta mistake — galbramc / detail
  728. Add interferenceTest to regressoin testing — galbramc / detail
  729. Minor corrections to interfaceAIM — haimes / detail
  730. scan-build fix and dox fix — galbramc / detail
  731. First cut at the Interference AIM and fix for instance number — haimes / detail
  732. Fix AIM_ERROR that was just supposed to be printf — galbramc / detail
  733. scan-build fixes — galbramc / detail
  734. Missed a file — galbramc / detail
  735. Remove static array size for fun3d Design_Functional output. Return list of list for matrix varaibles. — galbramc / detail
  736. Remove fun3d redundant sensitivity calculations — galbramc / detail
  737. Fix some typos — galbramc / detail
  738. Fix bug in limits check in caps_setValue — galbramc / detail
  739. Forgot a file — galbramc / detail
  740. Fixes to fun3d design — galbramc / detail
  741. Another warning fix — galbramc / detail
  742. Fix warning — galbramc / detail
  743. Forgot a file — galbramc / detail
  744. Re-design fun3d design. — galbramc / detail
  745. fixes for the previous fixes — ryan / detail
  746. fix for fun objectives/functionals — ryan / detail
  747. Fix for cart bc — ryan / detail
  748. Lint fix — galbramc / detail
  749. Fix vlmControl memory leak — galbramc / detail
  750. Make avl smarter about when geometry file needs to be written. — galbramc / detail
  751. UpRev to 1.21 — haimes / detail
  752. Fix documentation links — galbramc / detail
  753. another dox fix — ryan / detail
  754. minor dox fix last one — ryan / detail
  755. minor dox fix — ryan / detail
  756. minor dox fix — ryan / detail
  757. Clear aim_setSensivity flags in caps_build — galbramc / detail
  758. Remove spurious Info printf and make sure we are between pre and post in caps_system — haimes / detail
  759. Document AIM execution modes — haimes / detail
  760. Don't use packaging module — galbramc / detail
  761. Fix last commit — galbramc / detail
  762. Try multiple times to get pointwise license in C example — galbramc / detail
  763. Check OpenMDAO version in example — galbramc / detail
  764. Add caps_system to pyCAPS — galbramc / detail
  765. Add caps_system and add relative path to aim_system — haimes / detail
  766. Upgrade to SU2 7.2.0. Minor avl fixes. — galbramc / detail
  767. Try again and again for pointwise license — galbramc / detail
  768. Adjust regression script — galbramc / detail
  769. Suppress lint warnings — galbramc / detail
  770. Fix warning — galbramc / detail
  771. Cleanup hasDeriv/getDeriv and add derivatives outputs to avlAIM — galbramc / detail
  772. Update the documentation and make the AIM file function naming consistent — haimes / detail
  773. Add caps_journalState to the API — haimes / detail
  774. Lint fix — galbramc / detail
  775. Fix warning — galbramc / detail
  776. Forgot the actual journal test — galbramc / detail
  777. First test of journaling. Works with autoExect, manual exec needs work. — galbramc / detail
  778. Replace verbosity with outLevel — galbramc / detail
  779. Use environment variable to set outLevel=0 for CAPS training (not documented). — galbramc / detail
  780. Add awave cCAPS example. Cleanup avl AutoSpan test. Return CAPS_EXECERR error on system call failure. — galbramc / detail
  781. Comment out matplotlib import — galbramc / detail
  782. fund3dAIM fixes — galbramc / detail
  783. Add enum for caps_open flag — haimes / detail
  784. Plug memory leak — galbramc / detail
  785. Add M1 libraries to BFR tarball and adjust call to calcOutput for pointers that have not been used — haimes / detail
  786. Remove one little space — galbramc / detail
  787. Upgrade to AFLR 10.17.5 — galbramc / detail
  788. Add auto-execution error message — galbramc / detail
  789. Call postAnalysis on any auto-executed AIMs during journal reads — haimes / detail
  790. fun3DAIM fixes — galbramc / detail
  791. Add caps_getTessels to the API -- gives access to the analysis' tessellation objects — haimes / detail
  792. Fix data transfer for legacy scripts — galbramc / detail
  793. Remove capsLock in caps_close — galbramc / detail
  794. Fix warnings — galbramc / detail
  795. Lazier auto-execution. Enable auto-execution for data transfer. — galbramc / detail
  796. Mesh Writer Doc updates — haimes / detail
  797. Stanalizer fix for fclose. No idea why lint started complaining about it\!\?\!\?\! — galbramc / detail
  798. Missed closing a file — galbramc / detail
  799. Fix uninitialized data — galbramc / detail
  800. Fix array out-of-bound — galbramc / detail
  801. Fix memory leaks and return code for tetgen — galbramc / detail
  802. One more warning fix — galbramc / detail
  803. A sphere is still not a sphere — galbramc / detail
  804. Fix warning — galbramc / detail
  805. Fix Windoze build — galbramc / detail
  806. Lint fixes — galbramc / detail
  807. Remove duplicated CFD meshes on disk. Lots of refactoring... — galbramc / detail
  808. fixed uninitialized variable in Slugs — jfdannen / detail
  809. First cut at documenting mesh writers — haimes / detail
  810. fix addressing bug in udpWarp; initial implementation of timVspSetup — jfdannen / detail
  811. convert backslashes to forward slashes in filenames in udpVsp3 because anglescipt expects forward slashes — jfdannen / detail
  812. properly rename vsp3 verification test cases — jfdannen / detail
  813. ATTRRECYCLE forces UDPRIM to not be recycled; fix printing of SELECT with attrValu a number; update udpVsp3 to automatically run vsp; add data/vsp3 test cases; add propInteg*a test cases; use _plugsIgnore on Faces that should be ignored during cloud point reclassifications in Plugs; add udpWarp; add ablate0* test cases — jfdannen / detail
  814. modify ocsmPrintBrep to show list Edges as degenerate rather than skipping them; add SPECIAL printCPs command to print the control points associated with all Nurbs in the Body on the top of the stack; add first version of udpVsp3 — jfdannen / detail
  815. first version of udpVspComp — jfdannen / detail
  816. fix bug that did not retain Edge attributes during an ELEVATE operation — jfdannen / detail
  817. add mincp argument to udpNuscale and convertToBSplines functions; add ablate* test cases, including using Plugs; extend Plugs to be able to use DIMENSIONed DESPMTRs; fix bug in velocityOfEdge for Edges with dots that have changing tranges — jfdannen / detail
  818. temporarily remove vspFuse* test cases — jfdannen / detail
  819. analytic sensitivities for sketches; update .gsen and .tsen files; move sketch13* test cases to designY* — jfdannen / detail
  820. start implementing analytic sensitivities for Sketches; add sketch13* test cases — jfdannen / detail
  821. initial, very early, preliminary version of udpVspFuse and associated test cases — jfdannen / detail
  822. fix error in serveESP.mak in previous commit — jfdannen / detail
  823. fix error in serveESP.mak; fix debug code error for windoze — jfdannen / detail
  824. change the SUBTRACTion of two co-planar SheetBodys such that if the Loop associated with the second Body does not cut a clean hole in the first Body, revert to the (default) scribing behavior for SheetBodys, that is scribe the first Body with the Edges from the second Body;  update the documentation for SUBTRACT; add scribe11* test cases; fix occasional bug associated with analytical sensitivities when DUMPing a .sens file from with .csm script — jfdannen / detail
  825. add support for BLENDs with .C1side Attributes; add blend23* test cases; change serveESP.mak so that it does not error if PYTHONINC is not set — jfdannen / detail
  826. uprev to v1.24 (ESP.html, ESP-localhost.html, ESP-help.html, OpenCSM.h, ocsm.rc) — jfdannen / detail
  827. added ability to double-click on python error to open pyscript editor at the correct line — jfdannen / detail
  828. update various testing scripts — jfdannen / detail
  829. add udfLinalg and linalg1 test case; add sketch12* test cases — jfdannen / detail
  830. another update to Makefile.LINUX64 — jfdannen / detail
  831. update Makefile.LINUX64 to execute full test suite — jfdannen / detail
  832. fix warnings in previous commit — jfdannen / detail
  833. add ocsmTraceAttrs, ocsmTraceStors, ocsmGetFiletree, and ocsmShowTblOfContents; add ability to trace Attributes, Storges, the FileTree, and the provided representations in the .csm editor; limit number of files in File menu in ESP so that it does not overflow the display; add SPECIAL provides statement to work with ocsmShowTblOfContents — jfdannen / detail
  834. fix bug that did not properly decrement the pattern counter for ENDIF statements after a PATBREAK was executed; fix bug that returned error after SELECTing a degenerate Edge — jfdannen / detail
  835. take shortcut when creating tessellation sensitivities for Faces that do not have Edges that are the result of Boolean operations; update .tsen files for both 7.6.0 and 7.7.0 — jfdannen / detail
  836. fix typo in text string in serveESP — jfdannen / detail
  837. fix warning in previous commit — jfdannen / detail
  838. fix bug that copied Csystems into a UDPRIM; add udfMechanism and mechanism* test cases — jfdannen / detail
  839. add udfDeform to change BSpline control points associated with Faces (and Edges and Nodes) in a Body; add deform* test cases; modify some verification data to account for differences between 7.6.0 and 7.7.0 on all operating systems — jfdannen / detail
  840. remove more clang warnings — jfdannen / detail
  841. remove clang warnings — jfdannen / detail
  842. remove GLOVES from ESP menu (for now) — jfdannen / detail
  843. update data/capsExamples/verify_7.7.0 files; use EG_copyObject since EGADS now allows the copying of PCurves; fix typos in testScript.txt; updates to avoid warnings in latest version of clang — jfdannen / detail
  844. allow cases with Edge-only tessellations to work; add edgeGrid* test cases; update 7.7.0 verification data for imprint5 (should fail); add PLOT_DISPLACE to plot displaced Edges based upon tessellation sensitivities — jfdannen / detail
  845. fix recently-added bug associated with FD tessellation sensitivities for NodeBodys — jfdannen / detail
  846. create verification data for OCC 7.7.0; make sure EVALUATE returns dot=0 — jfdannen / detail
  847. compute tessellatiopn sensitivities correctly for a NodeBody; set and report sensitivity range properly when looking at only one component of tessellation sensitivities; add -forceFDs command line option to force finite difference sensitivities in serveESP — jfdannen / detail
  848. protect against stanalyzer bug — jfdannen / detail
  849. further improvements to flends; add flend10* test cases; fix memory leak when udfOffset encounters an error — jfdannen / detail
  850. add code to protect for UDFs that have references to its input Model; add (hidden) option to create timingReport.txt file; improve flends; add flend9* test cases — jfdannen / detail
  851. update flend8* test cases and their verification data — jfdannen / detail
  852. fix lint error in udfMatchBodys; re-add 7.4.1 verification data for flend8* test cases — jfdannen / detail
  853. change flend fits to be better in some cases; track down memory leaks — jfdannen / detail
  854. fix problem erroneously flagged by lint in udpOffset; update errors reported by udfFlend; fix bug where wrong UDP storage was used in udfOffset (which caused problems when udpOffset was called more than once); remove SPECIAL test of EG_otherCurve; document .multiNode use in RULE command; fix bug where UDP storage is incorrectly cleared for an embedded UDP (in udpCsm); fix bug in udfFlend that sometimes did not correctly reverse one of the Loops; fix memory leak in EVALUATE EDGEKT, EDGECP, FACEUKT, FACEVKT, and FACECP when a signal is raised — jfdannen / detail
  855. fix compiler warning in latest commit — jfdannen / detail
  856. account for fact that Py_SetPythonHome was deprecated in Python 3.11; update udfOffset so that it can generate offsets on SolidBodys (for FLENDs); add offset(I-R)* test cases; use zebra stripe coloring for maximum curvature in ESP (displayType=4); update convertToBsplines to reuse Pcurves whenever possible; add udpBspline and bspline* test cases — jfdannen / detail
  857. improve printing of Pcurves in ocsmPrintEgo; improve marking of Faces with _body and _brch Attributes when returned from a UDF; add PRINT_MAPPING_INFO define to OpenCSM; fix bug that did not account for Node and Edge sensitivities when report sensitivity range in serveESP; fix bug that occasionally did not properly compute Node tessellation sensitivities — jfdannen / detail
  858. add EVALUATE EDGEKT, EVALUATE EDGECP, EVALUATE FACEUKT, EVALUATE FACEVKT, and EVALUATE FACECP; add evaluate3* test cases; add multiRegions* test cases; add SELECT FLIP to flip the order of rntities in at-sellist — jfdannen / detail
  859. add copyAttr=0 argument to RULE and BLEND to copy Edge Attributes in xsects onto RULE/BLEND Edges; add blend29 and rule29 test cases — jfdannen / detail
  860. improve test for matching Nodes in udfMatchBodys; adjust matchBodys5 test case to check at-at-parameters — jfdannen / detail
  861. add arcLengths to ocsmPrintEgo; fix bug in udfMatchBodys when tol was large — jfdannen / detail
  862. modify udfMatchBodys to transfer an Attribute from one Body to the other when the Nodes, Edges, or Faces match; add matchBody5 test case — jfdannen / detail
  863. fix bug associated with UDP/UDF outputs that change shape — jfdannen / detail
  864. remove stanalyzer false positive by disabling checks for one loop in udfTester1.c — jfdannen / detail
  865. attempt to fix stanalizer error in udfTester1.c — jfdannen / detail
  866. allow at-at-parameters from a UDP/UDF to have velocities; split udpTest into udfTester1 (to demonstrate matrix outputs from a UDP/UDF) and udpTester2 (to demonstrate output velocities from a UDP/UDF); adjust Makefiles and associated test cases — jfdannen / detail
  867. add test.so to Makefiles; add diagnostic printouts when a Face does not tessellate; make sure all UDP/UDFs return output values to the numUdp instance — jfdannen / detail
  868. allow number of rows and columns to be accessible in UDPs; allow at-at-parameters from a UDP/UDF to be vectors or matricies; add udp_error1 to udp_error9 as possible argument to CATBEG statement; fix bug that did not restore at-at-parameters when a UDP/UDF was recycled; refactor way UDP/UDF arguments are handled — jfdannen / detail
  869. update header files to allow use of C++ main program; add simpleCSM.cpp and modify Makefile.DARWIN64 for testing — jfdannen / detail
  870. change udfSlices to skip a slice if OpenCASCADE fails (rather than return an eror); add SET statement to udpWaffle;  add waffleB1 and waffleB2 test cases; fix bug in plotting of normals in serveESP and serveCSM; add PRINT_RULE_KNOTS to print number of knots in BSPLINEs entering a RULE or BLEND; allow -ATTRREALSENS to indicate a UDPRIM parameter that is intended to signal that Parameter is used within an included file; add waffleB3 test case to demonstrate this; add waffleB3.jrnl to demonstrate generation of .sens file for every DESPMTR without rebuilds — jfdannen / detail
  871. update copyright notices — jfdannen / detail
  872. remove training/data/session10/version99/* — jfdannen / detail
  873. uprev to v1.23 (ESP.html, ESP-localhost.html, ESP-help.html, OpenCSM.h, ocsm.rc) — jfdannen / detail
  874. put 1 second delay when opening a pyscript to make sure that the browser is ready to display the pyscript in the editor; do not change status of ESP if an error was found while executing a pyscript; update session10 training files to be consistent with new method for creating a large, multi-component, multi-discipline model; update Makefile.DARWIN64; update ESP_QuickReference; update testScript.txt — jfdannen / detail
  875. write and test viewSimplySupport for transport test case — jfdannen / detail
  876. more updates to training/session10 and CAPS/training/python — jfdannen / detail
  877. more updates to transport training files — jfdannen / detail
  878. update error handling in flapz.udc; first attempt at python files for new transport for CAPS training — jfdannen / detail
  879. account for forward- and backward-slashes when opening a .udc — jfdannen / detail
  880. update ereped6a and project verification data again; fix recently-added bug that causes a memory fault for some non-manifold Edges — jfdannen / detail
  881. add Trace button in .csm editor to trace all top-level Parameters; reorganize session10 files to make it easier to build large, multi-component, multi-view models; update ereped6a, hollowC6, hollowC7, hollowCA, hollowCB, and project 3 verification data on 7.6.0 (because of issues highlighted by Xcode 14 on M1); update ereped6a and project3 verification data on 7.4.1 (because of issues highlighted by Xcode 14 on M1); add description of -dxdd flag to ESP-help — jfdannen / detail
  882. update testScript.txt; fix possible buffer overflow in SPECIAL command — jfdannen / detail
  883. update verification data for clearance1 and clerance4 to allow for slight differenes due to chaotic behavior of the EGADS tessellator — jfdannen / detail
  884. convert all (deprecated) sprintf calls to snprintf — jfdannen / detail
  885. update Verification.sh to use serveESP — jfdannen / detail
  886. fix bug where result of SPECIAL/clearance was not recycled — jfdannen / detail
  887. update .tsen files for designG5 and designG6 — jfdannen / detail
  888. remove suppressions of sensitivity checks on designH2, designJ1c, designJ1d, and designJ5; add suppressions of sensitivity checks to designG5 and designG6 (for rounded tips); fix valgrind error in sensitivities in udpWaffle — jfdannen / detail
  889. fix some compiler warnings in most recent commit — jfdannen / detail
  890. add ocsmClearance; add clearance* test cases — jfdannen / detail
  891. fix bug in serveESP that did not properly update the build status message after File->Edit->Save; implement analytic sensitivities in udpWaffle; add designX* test cases; make sure userPointer gets reset after perturbation is removed — jfdannen / detail
  892. update designV1,gsen for 7.4 — jfdannen / detail
  893. add ocsmAdjoint and testOcsmAdjoint (in serveESP); allow timPlotter to have two y-axes; add plotter3.py test case — jfdannen / detail
  894. update adjoint test to remove (incorrect) compiler warning — jfdannen / detail
  895. remove data/ide (because it is redundant with data/tutorial6); eliminate automatic build when entering CAPS mode (depend on the lazy evaluation in CAPS); enable sensitivity calculations for scribes and trims; add designW* test cases; fix bug that put wrong _edgeID on scribed Edges; update attrScribe, scribeWing, and scribedSphere test cases; create splitEdges.udc; add splitEdges* test cases — jfdannen / detail
  896. remember name of Pyscript file for next Tool->Pyscript; clean up ESP messages after builds; remove code in esp.timSetCaps that removed the _finalize method; fix memory problem in timViewer for very long scene-graph meta-data buffers; reset magic number to zero to catch cases when a MODL is tried to be used after ocsmFree; modify IMPORT so that it properly marks NODE_BODYs; force tessellation if needed in timViewer; fix bug in ocsmLoadFromEgads that did not properly initialize the .ileft and .irite Branches; remove underscore attributes in .egads files in ocsmLoadFromEgads; force python garbage collection at end of each pyscript execution; add interactive testScript — jfdannen / detail
  897. add PLOT_TESSSENS and PLOT_TEMPCOMPS flags to help in debugging tessellation sensitivities; remove tessellation velocity calculation shortcut to make Edge and Face tessellation velocities consistent; refactor signalError() and signalError2(); allow plotTypes =7 for x-component, =8 for y-component, =9 for z-component of sensitivity — jfdannen / detail
  898. clarify description of SELECT x -1 ibody1 — jfdannen / detail
  899. update to account for latest EGADS fix to EG_generalBoolean — jfdannen / detail
  900. add ocsmRegBcstCB to ocsm.def — jfdannen / detail
  901. update Building button to show progress of build in ESP; fix memory leak when ELEVATE command fails (like it often does in the combine.udc); extend SELECT command to SELECT all Faces/Edges/Nodes in current Body that match a Face in another Body; add SELECT NOT to SELECT the Faces/Edges/Nodes not selected and vice versa; fix bug associated with determining if an Edge is a subset of another; update to account for change in EG_isEquivalent; fix bug that did not copy attributes from an Edge in a WireBody that was INTERSECTed with a SolidBody to the new Edge; add PRINT_LAST_EGO compile-time flag to print the last ego after every step in an ocsmBuild; fix bug in sensCSM when trying to remove .csm or .cpc extension from the casename when it did not exist; extend SELECT command to SELECT all Faces/Edges/Nodes in current Body that are within another Body — jfdannen / detail
  902. fix DUMP x.sens for degenerate Edges; add combine.udc so that old .csm scripts that used the (now deprecated) COMBINE command still work; add combine* test cases; add makeErep journal entry so that ereped can be tested; modify at-itype, at-nface, and at-nedge if there is an erep; add POWLE and POWTE arguments to udfDroop; add new droop* test cases; add udfNaca6mc to warp the input thickness distribution with the sum of multiple NACA 6-series meanlines; add naca6mc* test cases — jfdannen / detail
  903. protect against string overflows in strncpy and strncat; fix mesgCallbackFromOpenCSM so that it does not try to broadcast text when in batch mode; initial version of udpNaca6mc — jfdannen / detail
  904. Remove dependencies from file copies — haimes / detail
  905. clean up usage of include files; update dependencies in Makefile and NMakefile — jfdannen / detail
  906. remove pyscript from lint in serveESP.make — jfdannen / detail
  907. update serveCSM.make to fix stanilizer error for pyscript — jfdannen / detail
  908. another attempt to move building of pyscript from Makefile to serveESP.make — jfdannen / detail
  909. move building of pyscript from Makefile to serveESP.make — jfdannen / detail
  910. fix recently added bug in ereped that only allowed 9 colors; remove timHold from viewBodys.py; add batch flag to ESP structure; add assert command in browserToServer; add method of verifying ereped and plugs if running from journal and in -batch mode; next versions of udfDroop2 and udfDroop3; migrate testing in Makefile.DARWIN64 and Makefile.LINUX64 from serveCSM to serveESP; fix bug in esp.SetCaps() in pyESP — jfdannen / detail
  911. next version of udfDroop2; first version of udfDroop3 — jfdannen / detail
  912. next (still incomplete) version of udfDroop2 — jfdannen / detail
  913. initial version of udfDroop2 — jfdannen / detail
  914. fix test_pyOCSM to account for updated MESSAGE statement — jfdannen / detail
  915. extend MESSAGE to optionally write to a file; modify message test case; update ESP-help and ESP_QuickReference — jfdannen / detail
  916. fix memory leak when a UDF returns an error; remove extra prints when udfFlend or udfOffset detect an error; update sanitize targets in Makefile.LINUX — jfdannen / detail
  917. allow OFFSET to function properly when the number of Edges in the offset is fewer than the original Body; fix escape-close-parenthesis in ESP_QuickReference; add ability to create periodic SPLINE in sketcher by using SSLOPE(0); add sslope6* test cases — jfdannen / detail
  918. add assert in udfOffset to eliminate warnings on gcc — jfdannen / detail
  919. fix bug that caused ereped to not work for a named Body; fix bug that added bar at end of file that was being editted in ESP; extend ereped so that it can be applied if there are multiple Bodys on the stack; add ereped8 test case; fix ESP hint associated with ELEVATE command; fix bug when SELECT EGDE with a bounding box was applied to a Body with degenerate Edges; add extractBodys test case; fix array bounds error in udpEqn2body; fix bug in ereped initializations for a single Body — jfdannen / detail
  920. remove use of _scaleuv Attribute — jfdannen / detail
  921. allow very long message to be sent from browser to server; add setCsmFile instead of setScmFileBeg/Mid/End; if error occurs when processing a timMesg, put the tim back into READY mode; post message when erep is successfully generated; implement udpEqn2body for SheetBodys; update frustrum3 test case; use __usedBodys__ attribute when computing velocity of Faces or Edges for RULE and BLEND; fix bug in sensCSM that did not reset maximum errors for Bodys when in -tess mode; fix big that did not copy .hasdots during RESTORE . (dot) — jfdannen / detail
  922. update Makefile.LINUX64 — jfdannen / detail
  923. add udfDumpPmtrs and associated test case; implement RESTORE .. (dot dot) to duplicate all Bodys (and Mark) back to the Mark and RESTORE ... (dot dot dot) to duplicate entire stack; add restore3 test case; allow UDF to not return a Body or Bodys; update udfOffset so that it can handle concave corners (but not case where Edges disappear) — jfdannen / detail
  924. temporarily remove offset9* test cases — jfdannen / detail
  925. update udfOffset for negative distance — jfdannen / detail
  926. fix hint associated with JOIN; change JOIN so that it can make non-manifold WireBodys; modify numWireBody* test cases; create ELEVATE command, which only elevates WireBody to SheetBody and SheetBody to SolidBody;  remove COMBINE command and instruct user to use JOIN and ELEVATE instead; update UNION and JOIN such that if toMark is set but the operation fails, the stack is left unaltered; add unionSolids* test cases; fix typos in ESP-help (and OpenCSM.h) — jfdannen / detail
  927. add (unneeded) initializations in udfOffset to resolve incorrect lint complaints — jfdannen / detail
  928. implement udpEqn2body for WireBodys; modify inflatedBody2b to use the replicate.udc; implement udfOffset; create offset* test cases; improve error handling associated with SELECT SORT; modify flend5* test cases to use udfOffset — jfdannen / detail
  929. uprev to v1.22 — jfdannen / detail
  930. fix bug that did not update at-parameters for REORDER command; fix bug that changed the input Body to REORDER; fix sensitivity bug whan a RULE/BLEND xsect is RESTOREd after being used — jfdannen / detail
  931. initialize *info in ocsmBodyDetails; return sensible error message when a SET is applied to a CONPMTR, CFGPMTR, or DESPMTR — jfdannen / detail
  932. update duct7.vfy files — jfdannen / detail
  933. return stub.py to expected state at beginning of tutorial6 — jfdannen / detail
  934. add wingBEM2 test case; add duct7 test case; add replicate.udc and ereped6* and ereped7 test cases; add sharpFin test case; typo fix in documentation — jfdannen / detail
  935. protect for degenerate Edges in sensCSM; fix ESP bug that dropped user out of CapsMode if a non-existant pyscript is attempted; update ESP_QuickReference — jfdannen / detail
  936. update compare1b.vfy — jfdannen / detail
  937. fix bug in computing tessellation sensitivities for a NodeBody — jfdannen / detail
  938. try invEvaluateGuess for very hard cases in udfCompare; update compare1b test case — jfdannen / detail
  939. fix bug in IDE that did not properly journal updates to the intent phrase — jfdannen / detail
  940. second cut at tutorial6 write-up — jfdannen / detail
  941. more documentation updates — jfdannen / detail
  942. remove erroneous non-manifold warning associated with NodeBodys — jfdannen / detail
  943. fix bug when visualizing new-style quads and .mixed=NULL; do not process _makeQuads on a Face if the Body has a _makeQuads Attribute — jfdannen / detail
  944. fix bug in ESP.js that did not properly clear the display when velocities were cleared — jfdannen / detail
  945. fix bug that did not persist Edge Attributes to new non-manifold Edges that are generated by EXTRACTing Faces; add attributeA test case; add duct6 test case — jfdannen / detail
  946. fix bug in ESP.js associated with clearing velocities for a scalar; update tutorials 1 to 5 for v1.21 — jfdannen / detail
  947. modify way python is initialized and finalized to work around a problem in numpy - take 2 — jfdannen / detail
  948. modify way python is initialized and finalized to work around a problem in numpy — jfdannen / detail
  949. copy CFGPMTRs and DESPMTRs from temporary CAPS MODL back into the ESP MODL in CapsCommit and CapsSuspend; automatically rebuild MODL in CapsCommit and CapsSuspend — jfdannen / detail
  950. fix recently-added typo to timPyscript.c — jfdannen / detail
  951. add sanitize-thread target to Makefile.DARWIN64 — jfdannen / detail
  952. fix error message associated with not enough arguments to SPHERE; fix bug when user double-clicks in MessageWindow (Chrome and Safari) — jfdannen / detail
  953. fix setting of PYTHONHOME for a double-quoted string — haimes / detail
  954. generate WARNING if importing an .egads file that has an Attribute that cannot be evaluated — jfdannen / detail
  955. remove debug print statement — jfdannen / detail
  956. remove side effects from assert() statements, which work differently on Windoze — jfdannen / detail
  957. allow pyscripts to end without a newline — jfdannen / detail
  958. fix bug associated with finishing non-manifold WireBodys — jfdannen / detail
  959. allow overlay to execute a mesg even when in TIM_EXECUTING; update tutorial6 files — jfdannen / detail
  960. remove debug printing of long cast — jfdannen / detail
  961. suppress profile printing if outLevel==0; fix filename updates in ESP after saving new file and after exporting the feature tree — jfdannen / detail
  962. limit size of inflatedBody2a to reduce its CPU time — jfdannen / detail
  963. add tutorial6/model2c — jfdannen / detail
  964. numerous updates — jfdannen / detail
  965. add sub03 and f104 to studentGallery — jfdannen / detail
  966. remove try/catch from IDE demo pyscript files; use skeletonAIM instead of jfd3AIM in IDE demo; only show Display table entries (Node/Edge/Face/Csystem/Pips) if it contains any child entities; fix sensitivity bug associated with UDP/UDFs that requires finite differences coupled with an OUTPMTR that is tied to a mass property; add udpTest; initial commit of new timGloves and associated files — jfdannen / detail
  967. add ocsmPrintProfile to explicitly print the profile of CPU usage (instead of printing automatically during ocsmBuild); automagically run pyscript.py when running in continuation mode; change Cvals via script when in CAPS mode; change DESPMTRs via script when in CAPS mode; offer to steal capsLock in CAPS mode; add ogive* test cases — jfdannen / detail
  968. protect non-script caps_ calls with caps_debug; fix bug in timCapsMode that sometimes reverted to original .csm file; update demo_tim.txt; remove duplicate entries from ListHistory; fix typo in ESP-help associated with EVALUATE command — jfdannen / detail
  969. remove -caps command-line option (replaced by timCapsMode); add cleanup process in pyscript.py only between scripts (not at end); fix bug that did not profile MESSAGE statements; reset profile info at beginning of ocsmBuild; fix bug that did not print OUTPMTRs during call to ocsmPrintPmtrs — jfdannen / detail
  970. compile serveESP in Makefile and NMakefile — jfdannen / detail
  971. inform user when CAPS overrides .csm value(s); first attemp at re-running pyscript in continuation mode — jfdannen / detail
  972. add indication for Phases that are a predecessor of current Phase in ListPhases — jfdannen / detail
  973. add calls to caps_debug around List* messages in timCapsMode; update data/ide/*.py to directly rebuild the geometry; reorder Caps menu options — jfdannen / detail
  974. fix ListHistory in timCapsMode — jfdannen / detail
  975. update demo_tim.txt — jfdannen / detail
  976. modify demo_caps.txt and demo_tim.txt; make changes needed to make both demos operate properly — jfdannen / detail
  977. fix stanalyzer error — jfdannen / detail
  978. more modifications to support timCapsMode — jfdannen / detail
  979. temporary commit to be used for debugging — jfdannen / detail
  980. remove debug print statement — jfdannen / detail
  981. additional bugs fixed in timCapsMode; add unequalRules test case to show how to RULE between xsects with different nnumber of Edges — jfdannen / detail
  982. remove temporary printf statements — jfdannen / detail
  983. rename capsIde to capsMode; restrict SPHEREs to have a positive radius; allow multiple ESP-help tabs in browser; partial implementation of timCapsMode — jfdannen / detail
  984. revert previous commit — jfdannen / detail
  985. fix previous commit — jfdannen / detail
  986. remove unneeded windoze headers from tim.c — jfdannen / detail
  987. Fix continuation marker in serveESP.mak — haimes / detail
  988. Fix headers for Windows in timPyscript — haimes / detail
  989. fix windoze problem with includes in pervious commit — jfdannen / detail
  990. only allow one open ESP-help tab at a time; implement timFlowchart; modify interpolateUpper.py and conserveUpper.py to demonstrate flowcharting tool — jfdannen / detail
  991. allow for .py scripts to run both in serveESP -caps and in python; add ocsmSetAuxPtr and ocsmGetAuxPtr in OpenCSM API — jfdannen / detail
  992. fix stanalyzer problem in timCapsIde.c — jfdannen / detail
  993. update serveESP.mak in previous commit to include timCapsIde.obj — jfdannen / detail
  994. change display scaling so that if there is only one NodeBody it still gets displayed; initial implementation of timCapsIde — jfdannen / detail
  995. allow nesting of TIMs to MAX_TIM_NESTING=10 — jfdannen / detail
  996. fix bugs in File->Open and File->Edit for cases with and without UDCs — jfdannen / detail
  997. fix bug in ocsmSave that did not write DIMENSION statements correctly when writing either a .csm or .cpc file with a variable nrow and/or ncol; update calls to caps_open to handle UDCs — jfdannen / detail
  998. change -caps mode to accommodate both fore- and back-slashed in filenames; use ocsmTessellate in serveESP; update serveESP.make and serveESP.mak to define USING_CAPS (so that serveESP can be built without CAPS); remove unneeded code that generates a warning with new clang version; use updated caps_open so that cases with UDCs work properly — jfdannen / detail
  999. remove unneeded code that generates a clang warning — jfdannen / detail
  1000. add ocsmAdjustUDCs to OpenCSM API to copy all UDCs to the same directory as the .csm file; implement File->New, File->Open, and File-Edit->OK in caps mode — jfdannen / detail
  1001. more improvements for ListHistory; use caps_open in read-only mode in ListPhases and ListHistory — jfdannen / detail
  1002. do not let esp.UpdateESP rebuild (force rebuild in .py script) — jfdannen / detail
  1003. extend ListHistory to GEOMETRYIN and GEOMETRYOUT — jfdannen / detail
  1004. update Makefiles for cases without python; add many features to -caps mode; add data/ide/* to test -caps mode; fix many bugs in -caps mode; expose ocsmTessellate — jfdannen / detail
  1005. Makefile updates to supress Python builds — haimes / detail
  1006. first implementation of CAPS menu in ESP — jfdannen / detail
  1007. allow branching of Phases when running serveESP in -caps mode — jfdannen / detail
  1008. caps_PrintObjects signature changed — haimes / detail
  1009. allow wild-carding (with 0) in SELECT ADD and SELECT SUB; update connect9a and connect9b; update Makefile.DARWIN64 for 3-way testing — jfdannen / detail
  1010. in timViewer, use smoothing shading when looking at BOUNDS; allow wild-carding (with 0) in SELECT ADD and SELECT SUB; update Makefile.DARWIN64 for 3-way testing — jfdannen / detail
  1011. add viewing of BOUNDS in timViewer; allow GetToken in tim.c to work if the text string does not end in a delimiter; improve error message generated when SKVAR does not contain triplets; improve CAPS summary at end if running in -caps mode — jfdannen / detail
  1012. in timViewer, use a tessellation associated with the AIM if available, otherwise share the tessellation with OpenCSM — jfdannen / detail
  1013. fix (long) cast in previous commit — jfdannen / detail
  1014. extend STORE such that if index=-1, the first available index is used; fix bug that generated two copies of Bodys on stack when RESTOREing with index<0; if running serveESP in -caps mode, get MODL from CAPS (instead of building it in OpenCSM); extend timViewer to view Bodys associated with an AIM — jfdannen / detail
  1015. fix bug that either hangs or seg faults serveESP if user closes browser while timPyscript is executing.  this is done by not calling Py_Finalize, which will result in a memory leak; fix bug that occasionally does not show pyscript file when serveESP is starterd with a .py file — jfdannen / detail
  1016. improve error message when project.csm exists before the project directorry when running serveESP in -caps mode — jfdannen / detail
  1017. improve the creation, editting, and removal of Caps Values in -caps mode; allow multi-valued Caps Values in ESP; add udfShadow and shadow* test cases — jfdannen / detail
  1018. added numpts argument to udpKulfan, which helps avoid small dimples near the leading edge of a very thin section — jfdannen / detail
  1019. add debug GRAFICs to udpKulfan — jfdannen / detail
  1020. add SELECT LOOP to get Edges associated with a Loop in a Face; allow unary + or - in front of (multi-valued) Parameter when used alone in an expression; add sectionsWithHoles* test cases — jfdannen / detail
  1021. create hollowSheet and hollowSolid test cases to show all possibile uses of HOLLOW command; improve description of HOLLOW in OpenCSM.h; if HOLLOW fails, input Body is left on the stack; add hollowE* test cases to show some of the limitations of HOLLOW; change timPython to timPyscript to get around problems with linking with python on Windoze; have OpenCSM return SUCCESS even when all the Bodys have been recycled; put note in ESP-help and OpenCSM.h that warns users that results from HOLLOW and SWEEP may be unpredicable due to OpenCASCADE issues; add timPlotter and plotter* test cases — jfdannen / detail
  1022. fix bug in ocsmPrintEgo when called on BSPLINE Curve or Surface; require positive scale factors in udfNuscale when applied to a SolidBody; add initial version of timPlotter and test cases; change GetToken in tim.c so that tokens can have unlimited length — jfdannen / detail
  1023. fix errors that occur because Py_Finalize cannot be used more than once (because of a numpy bug); fix bug that did not show Cvals for -caps runs in serveESP and Brchs when running without -caps — jfdannen / detail
  1024. update Caps Value handling in ESP — jfdannen / detail
  1025. do not show Branches in serveESP when in -caps mode; allow serveESP to change .csm file when in -caps mode; fix OpenCSM.c to remove stanalizer error — jfdannen / detail
  1026. for a UDP/UDF, only use finite differences if one of its arguements is ATTRREAL and has non-zero dots — jfdannen / detail
  1027. add growing3.py test case — jfdannen / detail
  1028. modify timPython to get around numPy problems associated with Py_Finalize; modify tim interface to allow a tim to perform cleanup at the end of serveESP — jfdannen / detail
  1029. fix tessellation sensitivity bug associated with SheetBodys that are INTERSECTed with a SolidBody; add designP5* test cases; fix Node sensitivity for two parallel Edges; move timViewer from Makefile to serveESP.make; add tufts for Nodes when displaying tessellation sesnitivities in serveESP; ensure that tessellation sensitivities on the boundaries of Face and ends of Edges agree with Edge and Node sensitivities; update .tsen files — jfdannen / detail
  1030. remove serveESP from Makefile and NMakefile; create serveESP.make and serveESP.mak — jfdannen / detail
  1031. index.lt.0 in RESTORE is now a wildcard, meaning that Bodys in all storages that match name are put onto the stack; initial integration of CAPS into serveESP — jfdannen / detail
  1032. update ESP_QuickReference; update ESP so that double-clicking in MessageWindow takes you to filename:linenum that is clicked on, else takes you to last filename:linenum in MessageWindow; update sensCSM to use RMS errors; reduce ratio of errors for alerts from 5 to 2; update .gsen and .tsen files for 7.4.1 and 7.6.0 — jfdannen / detail
  1033. fix ocsm.def for last commit — jfdannen / detail
  1034. implement Debug in .csm editor; fix a few bugs in parent/child Body pointers — jfdannen / detail
  1035. fix bugs associated with running a .py file — jfdannen / detail
  1036. improve tessellation sensitivities for Edges and Faces that are not trimmed by a boolean operation; update .tsen files — jfdannen / detail
  1037. update to special plotting associated with Face velocities for INTERP_VEL=6 — jfdannen / detail
  1038. update CAPS/myPlane for intent 4 (avl) and 5 (bem) — jfdannen / detail
  1039. .py files are automatically edited in serveESP — jfdannen / detail
  1040. add quad3 and quad4 test cases — jfdannen / detail
  1041. fix bug if user with ball loaded a new .csm file and then editted (where user without ball saw wrong file); adjust closeBody2 test case to REORDER the Edges so that all the Faces point outward; inform users if someone has joined or left a collaboration; modify visualization of grids on Faces in serveESP * new-style quads if _makeQuads attribute on Body (.tessType==Quad or .tessType==Mixed) * old-style quads if _makeQuads attribute on Faces (npatch>0) * triangles oherwise; fix valgrind error in sensCSM — jfdannen / detail
  1042. check for proper result types from SWEEP; check mass props before topology in verification files; add verification data for OpenCASCADE 7.6.0; change copyright to 2022; give @version a value before the first Body is built; allow DIMENSIONed variable to be returned from a UDC; update expressions test case to demonstrate multi-value returns — jfdannen / detail
  1043. more improvements to udfCompare (and fix sanitizer error); update GRAFIC plots of trim curves to show the points on the Pcurves; increase size of plot points in serveESP; add fixture* test cases — jfdannen / detail
  1044. update Makefile.LINUX64; fix typo in mitten2.py — jfdannen / detail
  1045. add ability of specifying color of items in a plotfile; change udfCompare to group bad points based upon the magnitude of the error; update udfCompare to check distances from Nodes and Edges as well as distances from Faces — jfdannen / detail
  1046. update documentation for DUMP in OpenCSM.h — jfdannen / detail
  1047. create ESP-viewer.js; pass callbacks to overlay if they exist; reorganize python test cases; change verification tests to include serveESP — jfdannen / detail
  1048. update timViewer to be able to make changes to the scene graph; add ocsmLoadFromModel to pyOCSM; add shapes test case; fix initialization bug in ocsm.py — jfdannen / detail
  1049. remove timViewModl from timPython.def — jfdannen / detail
  1050. update test.py to remove call to removed esp.ViewModl() — jfdannen / detail
  1051. add ability to hold python execution while an overlay (viewer) is executing; update viewer.py — jfdannen / detail
  1052. change locking mechanism for tim_mesg to use ThreadWait instead of a mutex — jfdannen / detail
  1053. fix bug that did not release the lock if tim_mesg is in holding mode — jfdannen / detail
  1054. fix mutex problems associated with tim_mesg — jfdannen / detail
  1055. fix lint error in tim.c — jfdannen / detail
  1056. add timViewer and associated test cases; create mechanism to allow a TIM to call a TIM; fix a few typos in ESP-help — jfdannen / detail
  1057. updates to Windoze .def files — jfdannen / detail
  1058. Fix up ocsm.def to include GetToken (whose name should probably change) — haimes / detail
  1059. Windoze tim.def file fix — jfdannen / detail
  1060. Windoze tim.def file fix — jfdannen / detail
  1061. Windoze ocsm.def file fix — jfdannen / detail
  1062. fix bug in udfNuscale when zscale=0; first cut at calling a TIM from the python TIM — jfdannen / detail
  1063. do not change outLevel if ocsmSetOutLevel is called with negative argument; add printout for outLevel.ge.2 when TIM broadcasts a message to the browsers; add option to plot trim curves associated with all Faces — jfdannen / detail
  1064. fix Makefile and NMakefile associated with previous commit — jfdannen / detail
  1065. reorganize way TIMs broadcast messages out to the browsers — jfdannen / detail
  1066. use new BLEND C0 treatment, including in sensitivities; fix bug in timMitten associated with cleanup — jfdannen / detail
  1067. add .tsen data for 7.3.1 — jfdannen / detail
  1068. remove special sensitivity treatment for BLENDs with C0; update sensCSM verification data; add blend22* and rule22 test cases — jfdannen / detail
  1069. add closeBody* test cases; add collab* test cases; add documentation about what happens for a 0 in either SELECT ADD or SELECT SUB statement — jfdannen / detail
  1070. fix bug associated with MALLOCs in udpWaffle — jfdannen / detail
  1071. fix bug associated with MALLOCs in udpWaffle — jfdannen / detail
  1072. fix typo in error message associated with COMBINE command; make error messages from udpWaffle more explicit — jfdannen / detail
  1073. remove Windoze warnings from previous commit — jfdannen / detail
  1074. fix bug so that wv_broadcastText is not called by a TIM when running in batch mode — jfdannen / detail
  1075. improve sensitivities associated with tip treatments in BLEND;  update designG5 and designG6 test cases — jfdannen / detail
  1076. update timMesg so that it does not return a response; allow non-*host* to initiate file editting; fix bug that does not give appropriate error messages when having trouble opening a .py file from the command line; fix bug that does not give appropriate error messages when timPython has trouble opening a file from Tools->Python — jfdannen / detail
  1077. add IFTHEN/ENDIF to udpWaffle; add waffleA* test cases; update Makefile.LINUX64; fix bug that lost ball if user with ball sends a message — jfdannen / detail
  1078. update to latest version of Tblade3; allow default xaxis=0, yaxis=0, and zaxis=0 in ROTATEX, ROTATEY, and ROTATEZ; add rotate1 test case; add LAYOUT to udpWaffle; add waffle3* test case; fix memory leak associated with mprp arrays — jfdannen / detail
  1079. missed designU1c.tsen in previous commit — jfdannen / detail
  1080. remove tim_data from TIM interface (no longer needed); change NXSECT argument in udpGuide to ATTRREAL so that finite difference sensitivities are triggered; remove RAD argument to udpBox in designI2 and designI4 so that finite differences are not triggered; fix bug that re-computed velocities when re-computation was not necessary; fix bug associated with sensitivities of mass properties — jfdannen / detail
  1081. update timPython to post stdout to the MessageWindow while python is executing; fix postMessage so that blanks lines between messages are eliminated — jfdannen / detail
  1082. fix bug introduced in previous commit — jfdannen / detail
  1083. fix bug in previous commit; add ocsmLoadFromModel function; add withTess=0 argument to DUMP command; add dumpTest* test cases; update Makefile.DARWIN64.gcc — jfdannen / detail
  1084. updates to way PYTHONHOME is found in timPython; add designV1 test case; set sgFocus in timMitten so that it can start with an empty MODL — jfdannen / detail
  1085. fix hint for SCALE in ESP; shorten hint time-out in ESP to 15 sec; fix bug in timPython that did not register MesgCB and SizeCB after a timLoad (which caused a problem if started with a .py file); add (not-yet-implemented) Debug option in ESP editor; update ESP editor so that users without the ball can see the edits as they happen; clean up unneeded routines in TIMs; add debug and debugged testcases; add designU* test cases — jfdannen / detail
  1086. For timPython, put Python lib location in rpath — haimes / detail
  1087. Build timPython on Windows — haimes / detail
  1088. Allow for building TIMs outside of OpenCSM/src — haimes / detail
  1089. fix bug that did not remove UDP cache entries when a Body was deleted (such as during recycling); do not consider DEGENERATE Edges when SELECTing either by bounding box of nearest-to — jfdannen / detail
  1090. Dynamic Web Server library cleanup — haimes / detail
  1091. update Makefile.DARWIN64 to get rpath correct when running a script directly in python (and not serveESP); allow CONPMTR statement if at top-level scope; update scope test case; fix bug that did not compute sensitivity correctly when a DESPMTR was used in an include-type UDC — jfdannen / detail
  1092. change button to yellow and RunningPython while python is running; update Makefile.DARWIN64 to get rpath correct when running a script directly in python (and not serveESP) — jfdannen / detail
  1093. fix pyOCSM test errors caused by addition of @scope — jfdannen / detail
  1094. start getting ready for editing .py files; separate loading and running in timPython; run python in separate thread; add @scope at-parameter; add scope test case — jfdannen / detail
  1095. add esp.h — jfdannen / detail
  1096. fix stdout sequencing in timPython; get rid of global data in serveESP; update data/python/test* files — jfdannen / detail
  1097. fix bug associated with (FD) sensitivities for a MODL with a OUTPMTR being set before a FILLET or CHAMFER; remove code that protects against calls to EG_replaceFaces in SolidBodys with more than one Shell — jfdannen / detail
  1098. enable esp.SetModl() to see MODL in serveESP after python finishes — jfdannen / detail
  1099. stub routines added to account for change in tim.def — jfdannen / detail
  1100. fix bug associated with expressions that contain mass properties; add designT1 test case; fix bug that causes an error to be raised if the mass property sensitivities are computed by FDs before the last Body is built; add designT2 test case; add python mode to CodeMirror; add esp.py — jfdannen / detail
  1101. add udpTire testing to Makefile.DARWIN64; compute sensitivity correctly with udfCreateBEM, udfCreatePoly, udfEditAttr, udfPrintBbox, udfPrintBrep, and udoPrintEgo; add designS3 test case — jfdannen / detail
  1102. fix bug in udfGuide that did not work properly for an input SheetBody; add designS* test cases; fix bug that did not compute sensitivities correctly for UDFs when one (or more) of the input Bodys had non-zero velocities — jfdannen / detail
  1103. add udpBodyList to udp.def for Windoze — jfdannen / detail
  1104. initial code for proper UDF sensitivity calculations --- not enabled yet — jfdannen / detail
  1105. modify udfNacelle* test cases to use DESPMTRs; add splitWing* test cases; remove gallery/FJ2 from distribution — jfdannen / detail
  1106. allow pyOCSM to import an externally-generated MODL; enable timMitten; create timPython and data/python/test*; allow serveESP to start with a .py file — jfdannen / detail
  1107. uprev to v1.21 (ESP.html, ESP-localhost.html, ESP-help.html, OpenCSM.h, ocsm.rc); create unpublished routine convertToBSplines.  modify so that BSPLINES are not reconverted; modify udpParabaloid and udfNuscale to use convertToBSplines.  add DEBUG prints in udpNuscale; add sculpt* test cases; add attrProp test case to show how Edge Attributes get propagated to Faces by EXTRUDE and REVOLVE but not by RULE and BLEND.  attrProp also shows that Edge Attributes are not carried forward by EXTRUDE, REVOLVE, RULE, or BLEND; make INTERFACE DIM obsolete; issue WARNING to use DIMENSION statement instead; add udfNacelle and udfNacelle* test cases — jfdannen / detail
  1108. fix bug in StepThru that was introduced when computation of _tParams was delayed — jfdannen / detail
  1109. fix minor documentation typos — jfdannen / detail
  1110. fix bug in JOIN associated with Faces that share Edges but which have bounding boxes that differ; add halfSpheres test case; remove spurious printout associated with SKEND command; disable timMitten for v1.20 release — jfdannen / detail
  1111. fix bug that did not allow a user to EXTRACT multiple Faces from a SolidBody that had an internal hole; add extractShells* test cases; fix memory leak in udpParabaloid; update ESP_QuickReference for v1.20 — jfdannen / detail
  1112. add attrScribe test case; add udpParabaloid and test case — jfdannen / detail
  1113. implement outLevel in timPlugs; improve -plugs option in serveCSM so that more cases work; mark plugs4c as successful in Jenkins; modify attribute and getattr1 test cases to account for fact that _tParams only exists when Body is recycled — jfdannen / detail
  1114. fix long delay when browser without ball syncs display — jfdannen / detail
  1115. remove inside-out test for SolidBodys to improve performance; move Plugs to a TIM in serveESP; do not add _tParams attribute unless the Body will be tessellated; remove coarseBox test case — jfdannen / detail
  1116. remove print in tim.c to eliminate Windoze warning — jfdannen / detail
  1117. remove unistd.h from timMitten.c — jfdannen / detail
  1118. fix bug that sometimes uses FD sensitivities when analytic derivatives could be used instead (associated with UDPARG statements); change method for setting mass properties so that rebuild is not needed when changing spectrum limits in ESP — jfdannen / detail
  1119. another attempt to fix Makefiles — jfdannen / detail
  1120. another attempt to fix Makefiles — jfdannen / detail
  1121. another attempt to fix Makefiles — jfdannen / detail
  1122. another attempt to fix Makefiles — jfdannen / detail
  1123. another attempt to fix Makefiles — jfdannen / detail
  1124. another attempt to fix Makefiles — jfdannen / detail
  1125. another attempt to fix Makefiles — jfdannen / detail
  1126. another attempt to fix Makefiles — jfdannen / detail
  1127. fix Makefiles for latest commits — jfdannen / detail
  1128. apply attributes on LINSEG, ARC, CIRARC, BEZIER, SPLINE, and SSLOPE Branches to the Edge that they create; add attrSketch* test cases; remove Gloves and ErepEd from serveCSM; next version of serveESP that uses TIMs; move ErepEd to a TIM in serveESP; move Gloves to a TIM in serveESP; create Mitten as a TIM example — jfdannen / detail
  1129. Small fix for IGES Name reads — galbramc / detail
  1130. IGES reader now also reads all Name attributes. Fix stanalizer warning. — galbramc / detail
  1131. Reduce time extract Name attribute from STEP files. — galbramc / detail
  1132. Track STEP/IGES name attributes through all read manipulations — galbramc / detail
  1133. Lint fix — galbramc / detail
  1134. Use python or python3 executables in makeEnv — galbramc / detail
  1135. Fixes for Edge only tessellations — galbramc / detail
  1136. Undo Makefile change — galbramc / detail
  1137. One more adjustment to EG_mapBody — galbramc / detail
  1138. Only delete EG_mapBody mapped upen error if copied — galbramc / detail
  1139. Uprev to ESP 1.24. Add .C1side attribute for EG_blend. EG_blend now supports three neighboring C1 sections. — galbramc / detail
  1140. makeEnv fixes for -dev — galbramc / detail
  1141. makeEnv fix AFLR_ARCH for linux-aarch64. Add -dev option to makeEnv. — galbramc / detail
  1142. Add note about fighter4 on Intel macOS 13.3 — galbramc / detail
  1143. Fix step and iges label read — galbramc / detail
  1144. Update concepts and viewer pdf. Fix for makeEnv. — galbramc / detail
  1145. Updates for ESP 1.23 release. Add LINUX_AARCH64 and DARWIN_ARM64 ESP_ARCH. — galbramc / detail
  1146. Fix bug in setup scripts — galbramc / detail
  1147. Fix bug in setup scripts — galbramc / detail
  1148. Update README files. Add PreBuilt setup scripts. — galbramc / detail
  1149. Fix last commit — galbramc / detail
  1150. Lint fixes — galbramc / detail
  1151. Fix stanalizer warning — galbramc / detail
  1152. Fix warning — galbramc / detail
  1153. Fix EG_mapTessBody for DEGENERATE Edges. Update makeEnv to look for python3. Readme updates. — galbramc / detail
  1154. Increase thread stack size on macOS — galbramc / detail
  1155. Fix warning — galbramc / detail
  1156. Lint fix — galbramc / detail
  1157. Fix lite stanalizer warning — galbramc / detail
  1158. Fix individual bodies in EG_generalBooelean. Other small cleanup. — galbramc / detail
  1159. Fix EG_getTopology instantiation — galbramc / detail
  1160. Add Surreal EG_getTopology — galbramc / detail
  1161. Fix ShapeFix for generalBoolean — galbramc / detail
  1162. Add more documentation on EGADS parent child referencing — galbramc / detail
  1163. Export EG_rotate_dot on Windoze — galbramc / detail
  1164. Track sensitvities with EG_repalceFaces — galbramc / detail
  1165. Add Surreal EG_makeTopology — galbramc / detail
  1166. Use ffp-model=strict on M1. Relax some test tolerances for M1. — galbramc / detail
  1167. Fix clang 14.0.3 warnings — galbramc / detail
  1168. Update EGADS doc for makeTessBody with negative legnth — galbramc / detail
  1169. Try fixing bodies in generalBoolean — galbramc / detail
  1170. Fix error message. Do not change topObj for bodies. Why does this not work... — galbramc / detail
  1171. Correctly set topObj for Geometry in Bodies. Set topObj for bodies in Models. Use EG_removeCntxtRef in makeFace. Check Body references before deleting a Model. More robust cleanup in EG_close. — galbramc / detail
  1172. Fix getEdgeUV doc — galbramc / detail
  1173. Fix full attirubtion for EG_repalceFaces. Fix error message. — galbramc / detail
  1174. Remove depricated x86 -m64 compiler flag. Add compiler flags for OCC 7.7. — galbramc / detail
  1175. Fix for OCC 7.4 — galbramc / detail
  1176. Provide error message instead of segfault in EG_otherCurve — galbramc / detail
  1177. Add 1-bias to matchBody documentation — galbramc / detail
  1178. update return values from udpTire — jfdannen / detail
  1179. Suppport Edge only eto files — galbramc / detail
  1180. update DARWIN64.gcc to add comma to RPATH needed by some gcc-10 compilers — jfdannen / detail
  1181. Add back ESP_ROOT/lib to rpath on DARWIN — galbramc / detail
  1182. Use @loader_path for rpath to ESP_ROOT/lib on DARWIN — galbramc / detail
  1183. Update Copyright date — galbramc / detail
  1184. Uprev to 1.23 — galbramc / detail
  1185. README release notes updates — galbramc / detail
  1186. Rev updates to 1.22 — galbramc / detail
  1187. README updates — galbramc / detail
  1188. Update makeEnv for macOS 13 — galbramc / detail
  1189. Replace DEBUG sprintf with snprintf — galbramc / detail
  1190. Try again: reorder includes! — haimes / detail
  1191. Try again: MSVC 2022 seems to have snprintf defined! — haimes / detail
  1192. sprintf -> snprintf mods — haimes / detail
  1193. Replace sprintf with snprintf in egadsTopo — galbramc / detail
  1194. Suppress clang deprication warning of sprintf in OCC — galbramc / detail
  1195. Add simple figure for tri ordering with mixed quad faces — galbramc / detail
  1196. Allow unconverged SmoothUV status to continue during parameterization — haimes / detail
  1197. Fix the new isEquivalent for periodic curves split into 2 Edges — haimes / detail
  1198. modified Ints to Int32 and added egadslite tests — docampo / detail
  1199. recompiled pdf references were with ?? — docampo / detail
  1200. removed EL flag from some of the effectiveTopology functions — docampo / detail
  1201. fixed typos — docampo / detail
  1202. Remove bug that would error out if there were no Faces during generalBoolean operations — haimes / detail
  1203. Update isEquivalent to fix previous problem — haimes / detail
  1204. Allow for senses to be flipped when applying EG_isEquivalent — haimes / detail
  1205. added the ego. wrap to the getfield operation — docampo / detail
  1206. update udpTire for new include scheme — jfdannen / detail
  1207. Fix Edge mapping problem introduced since Rev 1.21 — haimes / detail
  1208. changed .obj -> .ego — docampo / detail
  1209. Add TOML to egadslite dep — galbramc / detail
  1210. compiling for Julia 1.6 and 1.8. test fails for 1.8 — docampo / detail
  1211. Update makeEnv to reflect newer MAC OS revs — haimes / detail
  1212. Add the Julia interface to the EGADS API documentation — haimes / detail
  1213. Try to fix stanalyzer errors again — haimes / detail
  1214. Fix jlEGADS makefiles — galbramc / detail
  1215. Try to fix stanalyzer errors — haimes / detail
  1216. Suppress gcc-12 warning — galbramc / detail
  1217. Effective Topology: apply last change only for EFaces with more than 1 Face — haimes / detail
  1218. Effective Topology: check result of getEdgeUV against invEval and pick the closer — haimes / detail
  1219. A different possible fix for the MemcheckOcsm on the rule28 cases — haimes / detail
  1220. A different possible fix for the MemcheckOcsm on the rule28 cases — haimes / detail
  1221. A possible fix for the MemcheckOcsm on the rule28 cases — haimes / detail
  1222. Effective Topology: Mark Planar/Periodic EFaces not to tessellate Edges based on Face Curvature — haimes / detail
  1223. Fix scan-build warning from last commit again — haimes / detail
  1224. Fix scan-build warning from last commit — haimes / detail
  1225. Effective Topology: Fix NM Sheetbody Node removal — haimes / detail
  1226. Fix NULL bays at end with multiNode Rule — haimes / detail
  1227. Updated ruled sensitvities for multiNode — galbramc / detail
  1228. A minor update of the documentation of EG_approximate — haimes / detail
  1229. Update the docs to specify the additions to EG_approximate and EG_ruled — haimes / detail
  1230. Fix _close! function to properly check garbage collection for both egads and egadslite — galbramc / detail
  1231. Fix jlEGADS makefiles for zsh — galbramc / detail
  1232. jlEGADS makefile adjusments. Other small cleanup. — galbramc / detail
  1233. delete manifest from lite — docampo / detail
  1234. now ?? — docampo / detail
  1235. egads also used from egadscommon.jl dependencies — docampo / detail
  1236. remove unnecesary ENVS — docampo / detail
  1237. now with actually things inside — docampo / detail
  1238. created egads common folders — docampo / detail
  1239. Rule with Loops of differing number of Edges passes simple test with null 'bay' — haimes / detail
  1240. Can rule with sections of different number of Edges -- still need to check null bays, multiplicity > 1, curved EndCaps & EG_splineGeom_dot — haimes / detail
  1241. Close memory leak in EGADSlite associated with full attributes — haimes / detail
  1242. Fix scan-build problem — haimes / detail
  1243. Fix warning from last commit — haimes / detail
  1244. Second (but incomplete) cut at Rule with differring numbers of Edges — haimes / detail
  1245. Another minor correction to last commit — haimes / detail
  1246. Minor correction to last commit — haimes / detail
  1247. First (but incomplete) cut at Rule with differring numbers of Edges — haimes / detail
  1248. Don't allow for Figure 8 Nodes in ELoops (for now) — haimes / detail
  1249. Another def file fix — haimes / detail
  1250. Add setTessParam to lite def file — haimes / detail
  1251. Updates to egadslite to support pyEGADS.egadslite — galbramc / detail
  1252. First cut at pyEGADS.egadslite — galbramc / detail
  1253. Remove manifest files for jlEGADS. Check array size for makeGeometry. Fix makeGeometry tests. Some references fixes. — galbramc / detail
  1254. Fix some pyEGADS refrencing. Check data length for pyEGADS makeGeometry. — galbramc / detail
  1255. Fix topObj during EGADSlite import — haimes / detail
  1256. Add U periodic options to EG_approximate for surfaces — haimes / detail
  1257. try — docampo / detail
  1258. Allow for full attribution in EGADSlite — haimes / detail
  1259. Add reference counting for jlEGADS finalizers. Lots of other jlEGADS cleanup. — galbramc / detail
  1260. Fix for last commit — galbramc / detail
  1261. Various Julia cleanup and fixes — galbramc / detail
  1262. Update julia Makefile — galbramc / detail
  1263. Remove jlEGADS environment variable — galbramc / detail
  1264. added package install — docampo / detail
  1265. added Makefile — docampo / detail
  1266. first jlEGADS — docampo / detail
  1267. First cut at fitting periodic curves — haimes / detail
  1268. Fix a number of bugs in the Effective Topology — haimes / detail
  1269. Uprev EGADS — haimes / detail
  1270. Forgot DARWIN64.clang and DARWIN64.gcc — galbramc / detail
  1271. Move DARWIN64 ifort link flag to support EGADS test builds — galbramc / detail
  1272. Fix for ifort on newer versions of macOS — galbramc / detail
  1273. Add _USE_MATH_DEFINES for MSVC — galbramc / detail
  1274. Add error functions erf and erfc to Surreal — galbramc / detail
  1275. README update — haimes / detail
  1276. Config update — haimes / detail
  1277. Fix bug returning wrong parameters in pyEGADS effectiveMap — galbramc / detail
  1278. More defensive Surreal defines — galbramc / detail
  1279. Some config updates — haimes / detail
  1280. Fix up EMP_ThreadDestroy for the M1 — haimes / detail
  1281. Stanalizer fixes for Lazy Surreal — galbramc / detail
  1282. Use std c++11 for Surreal tests. Fix in depricated EG_loadTess. — galbramc / detail
  1283. Use Lazy Expressions for Surreal for slightly better performance on windoze — galbramc / detail
  1284. Minor config changes — haimes / detail
  1285. Config change for Windows to always start browsers in the background — haimes / detail
  1286. Windows configuration change to promote Edge — haimes / detail
  1287. update README.txt with note about Safari block-ups — jfdannen / detail
  1288. Add makeNmWireBody to pyEGADS — galbramc / detail
  1289. Don't clobber LD_LIBRARY_PATH with ESPenv — galbramc / detail
  1290. Configuration changes and signature change for EG_makeNmWireBody — haimes / detail
  1291. Documentation updates — haimes / detail
  1292. More Doc updates — haimes / detail
  1293. Some Documentation updates — haimes / detail
  1294. Fix the fix for memory issue with getting units from imports — haimes / detail
  1295. Fix memory issue with getting units from imports — haimes / detail
  1296. Document some of the new updates to SETP/IGES handling — haimes / detail
  1297. Support units on both STEP and IGES exports — haimes / detail
  1298. Add an option to do less checking with makeTopology on a Loop — haimes / detail
  1299. Another touch of splitPeriodics — haimes / detail
  1300. Try that again -- revert and get the if statement correct! — haimes / detail
  1301. Try that again — haimes / detail
  1302. Don't update the shape in splitPeriodics if it fails curve simplification — haimes / detail
  1303. Fix scan-build warning from last commit — haimes / detail
  1304. Implement EG_makeNMWireBody — haimes / detail
  1305. Straighten out non-manifold WireBodies — haimes / detail
  1306. Supress informational message on initial triangulation problem with Planar Faces — haimes / detail
  1307. Guard against infinite loop on planar surfaces with bad initial triangulation — haimes / detail
  1308. More support for tessellations without face tessellations — galbramc / detail
  1309. Enable EG_finishTess to fill in missing face tessellation. — galbramc / detail
  1310. Remove warnings generated by a new compiler — haimes / detail
  1311. Config change — haimes / detail
  1312. Explicitly open files as bindary in EG_saveTess/EG_loadTess. — galbramc / detail
  1313. Effective Topology: fix memory problem with interior Edge (in Loop twice) — haimes / detail
  1314. Remove Degenerate EEdges once Faces are merged in an EFace — haimes / detail
  1315. Documentation updates — haimes / detail
  1316. Only consider Python 3.8 or newer in makeEnv/winEnv — galbramc / detail
  1317. Some config updates — haimes / detail
  1318. Export Body CSystems that ar free-standing (aLen = 9) — haimes / detail
  1319. Update egads_dot.h. Explicit makefile in scan-build/scan-view. — galbramc / detail
  1320. change startup messages in wvServer from stderr to stdout — jfdannen / detail
  1321. Add missing DEGENERATE Edge check to EG_exportModel — galbramc / detail
  1322. Properly reflect the move of OCC copies in this repository — haimes / detail
  1323. Fix array out-of-bounds in EG_extrude_dot — galbramc / detail
  1324. When splitting periodic Faces convert the order 1 BSpline to a Line; allow for calling wv_cleanupServers when there are active server threads — haimes / detail
  1325. Don't fix Faces for EG_makeTopology(SOLIDBODY) — galbramc / detail
  1326. Fix warning — galbramc / detail
  1327. Makefile fixes — galbramc / detail
  1328. Add EG_rotate_dot and fix EG_extrude_dot to work with OCC. Fix for topological changes in EG_rotate (not enabled yet). — galbramc / detail
  1329. Do not use Edge tangents for vertex insertion when the magnitude is deminishing (near C0s) — haimes / detail
  1330. Though premature, update the copyright year — haimes / detail
  1331. Attempt to mitigate the fillTris error when presented with bad PCurves — haimes / detail
  1332. Use the define OCC_VERSION_DEVELOPMENT to tell us we built the OpenCASCADE — haimes / detail
  1333. Some trianglulation changes needed to deal with the GMGW3 'foreign' STEP files — haimes / detail
  1334. Another config update and another update for Windows threading — haimes / detail
  1335. Start FireFox in the background & try to fix stanalizer again — haimes / detail
  1336. Try to fix a scan-build error that spuriously popped up! — haimes / detail
  1337. Protect EMP against NULL Locks and revert Safari's startup in makeEnv — haimes / detail
  1338. Windows config update and fix for EMP_LockTest for Windows — haimes / detail
  1339. Fix arcLength (EGADSlite) for BSplines and update some configure scripts — haimes / detail
  1340. Fix bugs in EG_arcLenSeg — galbramc / detail
  1341. Add MCG_ARCLEN for suggested arclen approach. Add some more quadrature options for arclen. — galbramc / detail
  1342. Temp brute-force fix for BSpline arcLength in EGADSlite; fix tessellation progress warning; config updates -- list XQuartz min rev — haimes / detail
  1343. Fix recent update to EGADSlite arcLength code — haimes / detail
  1344. Fix the flattening of periodic BSplines when exporting to EGADSlite; Fix the BSPline range in EGADSlite when flattened — haimes / detail
  1345. Fix STEP writing with Name attributes — haimes / detail
  1346. Mark invalid Bodies during STEP/IGES reads & limit number of inserted verts when tessellating — haimes / detail
  1347. Add MSVC 2022 config file — galbramc / detail
  1348. C0 Blend fix so that the surface derivatives (normals) do not vanish at the C0 — haimes / detail
  1349. Scan-build fix from last commit — haimes / detail
  1350. Functions that insert verts based on surface arc-length use underlying Face when all positions are on that Face (Effective Topology). Used in Quadding & HO tessellations. — haimes / detail
  1351. Improved error message. Use brep V2 for OCC 7.6. Minor cleanup. — galbramc / detail
  1352. Minor cleanup — galbramc / detail
  1353. Fix blend tip sensitvities — galbramc / detail
  1354. clang analyzer fixes — galbramc / detail
  1355. Fix so DEBUG code compiles — galbramc / detail
  1356. Allow degenerate Edge in blend/ruled sections — galbramc / detail
  1357. Fix Blend with non-planar sections and Degerenate Edges in the Sections — haimes / detail
  1358. Target arm64 darwin, not specifically macOS 11 — galbramc / detail
  1359. Reduce testing output — galbramc / detail
  1360. Cleanup old config files — haimes / detail
  1361. No longer support OCC less than Rev 7.0 — haimes / detail
  1362. Changes to support OCC 7.6 — haimes / detail
  1363. Update Makefiles for OCC 7.6. Improved error message. — galbramc / detail
  1364. Other Python config updates — haimes / detail
  1365. Dynamic Web Server library cleanup — haimes / detail
  1366. Fix the new wvServer dynamic library def file — haimes / detail
  1367. NMakefile fix — haimes / detail
  1368. Make the WV server library dynamic — haimes / detail
  1369. Allow for passing a user pointer into browserMessage -- breaks compatibility! — haimes / detail
  1370. minor updates — haimes / detail
  1371. update udpTire.c — jfdannen / detail
  1372. Allow for Solids with multiple Shells to work in replaceFaces — haimes / detail
  1373. update udpTire.c — jfdannen / detail
  1374. update udpTire.c for change in cacheUdp — jfdannen / detail
  1375. Retain all Topology labeled as internal but reject external -- keep Nodes that have a non-zero valence — haimes / detail
  1376. Revert Internal Node change -- needs more work! — haimes / detail
  1377. An update to the last commit -- remove only Nodes that do not touch active Edges — haimes / detail
  1378. Retain Internal Nodes during parsing -- THIS HAS THE POTENTAL OF BREAKING EGADS FILE READS FOR THE VERY FEW CASES THIS COMES UP (the result is that attributes are not reassigned) — haimes / detail
  1379. scan-build suppression — galbramc / detail
  1380. Use jenkins setup for scan-build instead — galbramc / detail
  1381. Removed one too many — galbramc / detail
  1382. Another M1 fix — galbramc / detail
  1383. Fix last commit — galbramc / detail
  1384. Remove depreacted OCC defines. Fix for M1 scan-build. — galbramc / detail
  1385. Enable scan-build on M1 — galbramc / detail
  1386. Fix analyzer error — haimes / detail
  1387. UpRev to 1.21 and deal with Names on STEP IO — haimes / detail
  1388. README updates — haimes / detail
  1389. Remark on a fix to pyEGADS — galbramc / detail
  1390. Fix memory problem in patch tester — haimes / detail
  1391. Fix last warnings — haimes / detail
  1392. First cut at the Tessellation support for the new AVL; some configuration updates — haimes / detail
  1393. update config/README.txt for v1.20 — jfdannen / detail
  1394. Append ESPFLIBS on M1 — galbramc / detail
  1395. Remove OCC 6.8 from config files. Explicitly build arm64 with DARWINM1 — galbramc / detail
  1396. Remove MSVC 2015 as approved compiler — haimes / detail
  1397. Check environment variables — galbramc / detail
  1398. AFLR M1 config changes — haimes / detail
  1399. Configure updates in support of Rev 1.20 — haimes / detail
  1400. Allow for server to post messages to browserMessage — haimes / detail
  1401. Add missing files to clean target — galbramc / detail
  1402. Create possibly missing tess2d structure in EG_setTessFace — galbramc / detail
  1403. Document secure transport for wvServer — haimes / detail
  1404. Update vsp3 memcheck suppression — galbramc / detail
  1405. Add refine executable PATH — galbramc / detail
  1406. Suppress vspscript leaks — galbramc / detail
  1407. Add data/vsp3/X57_Maxwell_CRM_v4.4.1.csm to csmIgnore for valgrind. — galbramc / detail
  1408. Downgrade to OpenVSP 3.34.0 — galbramc / detail
  1409. Add vsp3 jenkins files — galbramc / detail
  1410. Add VSP3_ROOT for vsp3 testing — galbramc / detail
  1411. Add fighter4 as known error on macys — galbramc / detail
  1412. Upgrade to AFLR 11.5.9 — galbramc / detail
  1413. Update to AFLR 11.5.8 — galbramc / detail
  1414. Update xfoil executables with up to 2048 panels — galbramc / detail
  1415. Python suppressoin — galbramc / detail
  1416. Update parser — galbramc / detail
  1417. Another prebuilt fix — galbramc / detail
  1418. Fix PreBuilt script — galbramc / detail
  1419. Update PreBuilt testing — galbramc / detail
  1420. Update ESPbfr.tgz — galbramc / detail
  1421. Add OCC7.7 valgrind suppressions — galbramc / detail
  1422. Fix for jenkins script — galbramc / detail
  1423. Upgrade to SU2 7.5.1 — galbramc / detail
  1424. Uprade to AFRL 11.4.5 — galbramc / detail
  1425. Update clang sanitizer path — galbramc / detail
  1426. update so that more flend8* test cases are expected to pass — jfdannen / detail
  1427. update so that more flend8* test cases are expected to pass — jfdannen / detail
  1428. update expected flend8* failures — jfdannen / detail
  1429. Put file names first — galbramc / detail
  1430. Add OCC 7.7 Jenkins data — galbramc / detail
  1431. add expected errors selected in flend8* test cases — jfdannen / detail
  1432. Cart3D env fix — galbramc / detail
  1433. Upgrade Cart3D version — galbramc / detail
  1434. Update for OCC 7.7.0 — galbramc / detail
  1435. Upgrade to AFLR 11.3.17 — galbramc / detail
  1436. numpy memory leak suppression — galbramc / detail
  1437. Upgrade to AFLR 11.3.15 — galbramc / detail
  1438. Add NETCDFINC for DARWIN64.gcc testing. — galbramc / detail
  1439. Don't build AFLR with Beta testing — galbramc / detail
  1440. Another exodus suppression — galbramc / detail
  1441. Suppresse NETCDF/HDF5 memory leaks — galbramc / detail
  1442. Upgrade to SU2 7.4.0 — galbramc / detail
  1443. More general ubuntu suppression — galbramc / detail
  1444. Ubuntu valgrid supression — galbramc / detail
  1445. scipy 1.9.2. and 1.9.3 have valgrind issues — galbramc / detail
  1446. Add seacas to macys — galbramc / detail
  1447. Add SEACAS environment variable for exodus — galbramc / detail
  1448. Upgrade cvxopt build for gcc 12 on viggen — galbramc / detail
  1449. Suppress scipy memory leak — galbramc / detail
  1450. Another python valgrind suppression — galbramc / detail
  1451. Add Ubuntu 22.04 valgrind suppressions — galbramc / detail
  1452. Use system valgrind — galbramc / detail
  1453. Small cleanup of email template — galbramc / detail
  1454. Remove torch for now — galbramc / detail
  1455. Log parser fixes — galbramc / detail
  1456. Suppress torch memory leaks — galbramc / detail
  1457. Upgrade sanitizer path to 14.0.0 — galbramc / detail
  1458. Try dissabling CUDA for pytorch — galbramc / detail
  1459. Look for fatal msvc errors — galbramc / detail
  1460. Look for fatal gnu/clang errors — galbramc / detail
  1461. Revert to serveCSM for plugs — galbramc / detail
  1462. Update lingering serveCSM to serveESP — galbramc / detail
  1463. Very strange... — galbramc / detail
  1464. Allow multiple csm patterns — galbramc / detail
  1465. Only check error handling when running all csm files — galbramc / detail
  1466. Support changing outLevel and running select files — galbramc / detail
  1467. Don't do jlEGADS testing just yet — galbramc / detail
  1468. Revert ESP_venv for ESP_Beta — galbramc / detail
  1469. Move virtualenv into ESP directory — galbramc / detail
  1470. Only run minimal CAPS examples in beta — galbramc / detail
  1471. Install torch for beta — galbramc / detail
  1472. pip install torch for corsair — galbramc / detail
  1473. Smartsr error log parse — galbramc / detail
  1474. numpy suppression — galbramc / detail
  1475. Always build egadslite — galbramc / detail
  1476. Update julia path on linux — galbramc / detail
  1477. Remove jlEGADS from Sanitizer and Valgrind — galbramc / detail
  1478. mark helix3 and frustrum3 as expected successes — jfdannen / detail
  1479. Add jlEGADS test to Sanitizer and valgrind — galbramc / detail
  1480. Correct path — galbramc / detail
  1481. Add julia testing — galbramc / detail
  1482. Small fix in xfoil executables — galbramc / detail
  1483. Higher output precision xfoil executables — galbramc / detail
  1484. Upgrade to AFLR 10.22.23 — galbramc / detail
  1485. Another regsx fix — galbramc / detail
  1486. Fix email template — galbramc / detail
  1487. Ignore ifort warnings — galbramc / detail
  1488. Use updated wget for ESP_PreBuilt.bat — galbramc / detail
  1489. Beta script updates — galbramc / detail
  1490. Trying to limit pip install conflits. Cleaner batch pip install function. — galbramc / detail
  1491. Skip some long running tests with Sanitizer and Valgrind — galbramc / detail
  1492. Missed one more — galbramc / detail
  1493. More python suppressions — galbramc / detail
  1494. Suppress AFLR uninitialized data — galbramc / detail
  1495. Yet more numpy suppressions — galbramc / detail
  1496. Another numpy suppression — galbramc / detail
  1497. Upgrade to AFLR 10.22.22 on Windoze. Suppress numpy leak. — galbramc / detail
  1498. Upgrade to AFLR 10.22.22 on Unix systems — galbramc / detail
  1499. Upgrade jenkins to SU2 7.3.1 — galbramc / detail
  1500. Look for more tessellation errors in the log file — galbramc / detail
  1501. Upgrade to AFLR 10.22.21 — galbramc / detail
  1502. Add random sleep for Windoze pip install to avoid install conflicts — galbramc / detail
  1503. Install corsairlite dependencies for ESP_Beta testing — galbramc / detail
  1504. Python suppression — galbramc / detail
  1505. More error checking in ESPbfr.bat — galbramc / detail
  1506. Attempt Python 3.9.13 again — galbramc / detail
  1507. macM1 uses 3.8.11 — galbramc / detail
  1508. Revert back to ESP_Python 3.8.9 for now — galbramc / detail
  1509. install matplotlib and scipy for corsairlite — galbramc / detail
  1510. install packaging for corsairlite — galbramc / detail
  1511. Upgade to ESP_Python-3.9.13 — galbramc / detail
  1512. Install dill and cvxopt — galbramc / detail
  1513. Fix funny permissions on DARWIN64 mastros — galbramc / detail
  1514. Update macOS intel/M1 mastros with old macOS target — galbramc / detail
  1515. astros has array out-of-bound problems — galbramc / detail
  1516. Don't define ASTROS_ROOT on machines without astros — galbramc / detail
  1517. Restore mastros on macOS, macM1, and restore astros on Linux — galbramc / detail
  1518. Uses msys64 wget on Windoze — galbramc / detail
  1519. fix formatting error associated with expected errors for frustrum3 and helix3 — jfdannen / detail
  1520. fix formatting error associated with expected errors for frustrum3 and helix3 — jfdannen / detail
  1521. add frustrum3 and helix3 to expected failures — jfdannen / detail
  1522. Windoze requires exe extension — galbramc / detail
  1523. Add mses to ESPbfr.tgz with tighter convergence tolerance — galbramc / detail
  1524. Another python suppression — galbramc / detail
  1525. change testing from serveCSM to serveESP — jfdannen / detail
  1526. Third time is the charm — galbramc / detail
  1527. Try updating Windoze avl again... — galbramc / detail
  1528. Update avl exec on Linux and Windoze — galbramc / detail
  1529. Try that again — galbramc / detail
  1530. Update macOS avl executables without X11 dylib dependency — galbramc / detail
  1531. Remove redundant testing — galbramc / detail
  1532. Remove mastros.exe on macys and viggen because it does not work — galbramc / detail
  1533. Don't look for python deprecation warnings — galbramc / detail
  1534. Look for python deprecation warnings — galbramc / detail
  1535. Limit threading with OMP_NUM_THREADS — galbramc / detail
  1536. Don't pipe sanitize pyOCSM testing — galbramc / detail
  1537. add numpy valgrind suppression — galbramc / detail
  1538. Look for python unit test timing in log parse — galbramc / detail
  1539. Reduce CAPS ESP_Commit testing — galbramc / detail
  1540. scipy is now available on Monterey — galbramc / detail
  1541. Look for planar meshing errors — galbramc / detail
  1542. Update avl and DAWIN64/mastros.exe executables — galbramc / detail
  1543. astros.exe does not work on Monterey — galbramc / detail
  1544. Upgrade macOS santizer library path — galbramc / detail
  1545. Remove libquadmath dependency on DARWIN64 — galbramc / detail
  1546. Correct avl version number to 3.40 — galbramc / detail
  1547. Reduce avl NVMAX for DARWINM1 — galbramc / detail
  1548. Upgrade to avl 3.41 — galbramc / detail
  1549. Upgrade to MYSTRAN 13.3A on Windoze — galbramc / detail
  1550. Upgrade to Mystran 13.3a — galbramc / detail
  1551. Another python suppression — galbramc / detail
  1552. Update jenkins to run skeletonAIM example — galbramc / detail
  1553. Upgrade to SU2-v7.3.0 for Jenkins — galbramc / detail
  1554. Update error messages — galbramc / detail
  1555. Upgrade to PointwiseV18.5R1 on macOS — galbramc / detail
  1556. Another python suppression — galbramc / detail
  1557. Don't build CAPS for OpenCSM with lint — galbramc / detail
  1558. Upgrade to Pointwise V18.5R1 on reynolds. Compile serveESP for stanalizer — galbramc / detail
  1559. Build serveESP — galbramc / detail
  1560. Add csmOCCFailure_7.6.txt file — galbramc / detail
  1561. Remove csmOCCFailure_7.6.txt directory — galbramc / detail
  1562. Should have kept last numpy suppression — galbramc / detail
  1563. Another try at suppressing numpy leaks — galbramc / detail
  1564. Suppress numpy leak — galbramc / detail
  1565. mark closeBody2 as expected success — jfdannen / detail
  1566. Update sens parsers — galbramc / detail
  1567. Jenkins updates for 7.6.0 — galbramc / detail
  1568. update verification data for 7.6.0 — jfdannen / detail
  1569. Add Warning: LockRelease to jenkins parser — galbramc / detail
  1570. Don't set UDUNITS for beta testing — galbramc / detail
  1571. Remove last alias — galbramc / detail
  1572. Alias python3 on centOS8 — galbramc / detail
  1573. Update mses path — galbramc / detail
  1574. Add PATHs to MSES executables — galbramc / detail
  1575. Upgrade Jenkins env for MSVC 2022 — galbramc / detail
  1576. Update CASROOT — galbramc / detail
  1577. Add 7.6 files (needs updates) — galbramc / detail
  1578. Enable awave again for viggen — galbramc / detail
  1579. mark closeBody2 as failure on 7.3.1 — jfdannen / detail
  1580. changes to accomodate better sensitivities associated with tip treatment in BLENDs — jfdannen / detail
  1581. Dissable astros and awave on viggen — galbramc / detail
  1582. Use bash on Windoze as well — galbramc / detail
  1583. Suppress output from test_pyOCSM to reduce email generation time. — galbramc / detail
  1584. Update python suppression — galbramc / detail
  1585. add debug.csm as known failure — jfdannen / detail
  1586. Update how ESP_Python is found — galbramc / detail
  1587. source .bashrc as part of env — galbramc / detail
  1588. Fix scipy install on viggen — galbramc / detail
  1589. Another Cart3D suppression — galbramc / detail
  1590. Typo — galbramc / detail
  1591. Use anaconda scipy on M1 for now — galbramc / detail
  1592. Don't use system site packages for virtualenv — galbramc / detail
  1593. Don't use system site packages for virtualenv — galbramc / detail
  1594. Suppress perl memory leaks — galbramc / detail
  1595. Remove cart perl command — galbramc / detail
  1596. Missed CART3D_ARCH — galbramc / detail
  1597. Update env for Cart3D design — galbramc / detail
  1598. Change back the getdelim suppression — galbramc / detail
  1599. Fix bug in Valgrind script not running CAPS unit test — galbramc / detail
  1600. Try again to suppress libc problem — galbramc / detail
  1601. Adjust sanitizer suppression — galbramc / detail
  1602. Upgrade macOS clang 13.0.0 — galbramc / detail
  1603. remove testing of plugs7a and plugs8a — jfdannen / detail
  1604. Another Windoze fix — galbramc / detail
  1605. Turn on echo again for Windoze — galbramc / detail
  1606. Fix typo — galbramc / detail
  1607. Add M1 to PreBuilt testing — galbramc / detail
  1608. Upgrade to SU2 7.2.0 — galbramc / detail
  1609. Fix for memcheck python script on darwin — galbramc / detail
  1610. scipy and curses suppressions — galbramc / detail
  1611. Use system site-packages — galbramc / detail
  1612. Add openmdao to pip installs — galbramc / detail
  1613. Globaly have minimal CAPS output for Jenkins — galbramc / detail
  1614. Upgrade pointwise on macys — galbramc / detail
  1615. Generalize valgrind suppression — galbramc / detail
  1616. Another python suppression — galbramc / detail
  1617. remove plugs6a from testing — jfdannen / detail
  1618. Add keep-debuginfo=yes to valgrind flags — galbramc / detail
  1619. Another attempt at suppression Pointwise memory problems — galbramc / detail
  1620. Always suppress alloc dealloc missmatch — galbramc / detail
  1621. Undo mystran exclusion from valgrind — galbramc / detail
  1622. Suppress Pointwise alloc dealloc missmatch — galbramc / detail
  1623. Exclude mystran from valgrind due to false positives — galbramc / detail
  1624. Upgrade Pointwise on Reynolds — galbramc / detail
  1625. Undo last change — galbramc / detail
  1626. Fix virtualenv on macOS — galbramc / detail
  1627. Don't install matplotlib for testing — galbramc / detail
  1628. Upgrade valgrind version — galbramc / detail
  1629. Dissable undefined sanitizer vptr option — galbramc / detail
  1630. mark plugs4c as successful — jfdannen / detail
  1631. Update mastros rpath on viggen — galbramc / detail
  1632. Update ESPFLIBS for ubsan — galbramc / detail
  1633. Another viggen update — galbramc / detail
  1634. Enable viggen Memcheck and Undefined — galbramc / detail
  1635. Switch back to bash on viggen — galbramc / detail
  1636. Update ESPbft.tgz — galbramc / detail
  1637. Remove anaconda from Windoze Env — galbramc / detail
  1638. Correct python version on viggen — galbramc / detail
  1639. Fix for viggen — galbramc / detail
  1640. Upgrade to AFLR 10.17.5. Add DARWINM1 testing. — galbramc / detail
  1641. One more try at Windoze — galbramc / detail
  1642. Fix virtualenv on Windoze — galbramc / detail
  1643. Also upgrade pip — galbramc / detail
  1644. Try pip install multiple times — galbramc / detail
  1645. Upgrade gcc version for sansLIP — galbramc / detail
  1646. Suppress bash memory leak — galbramc / detail
  1647. Suppress leak in sed — galbramc / detail
  1648. Upgrade to libasan.so.6 — galbramc / detail
  1649. Use gcc-11 for sanitizer — galbramc / detail
  1650. fwrite valgrind suppression — galbramc / detail
  1651. Fix typo — galbramc / detail
  1652. Add valgrind to slugs testing — galbramc / detail
  1653. One more memcheck fix — galbramc / detail
  1654. Fix for MemcheckCaps — galbramc / detail
  1655. Slugs fixes for sanitizer and valgrind — galbramc / detail

#31 (Aug 9, 2021, 3:53:53 PM)

  1. Slashes... — galbramc / detail

#30 (Aug 9, 2021, 3:17:33 PM)

  1. One more Windoze try — galbramc / detail

#29 (Aug 9, 2021, 2:41:41 PM)

  1. Another Windoze Slugs script fix — galbramc / detail

#28 (Aug 9, 2021, 2:24:38 PM)

  1. Windoze Slugs fix — galbramc / detail

#27 (Aug 9, 2021, 2:03:24 PM)

  1. Update FORTRAN Makefiles to link statically on M1s — haimes / detail
  2. small updates to be consistent with recent EGADS changes — jfdannen / detail
  3. Fix last commit — galbramc / detail
  4. More numpu support in pyCAPS — galbramc / detail
  5. Reduce verbosity of cCAPS examples — galbramc / detail
  6. Add miscTypes.h to includes for Windoze — galbramc / detail
  7. fix bug in Slugs associated with recent EGADS topology changes — jfdannen / detail
  8. Fixes for Python 2 — galbramc / detail
  9. Yet again changes to the volume mesh writer interface — haimes / detail
  10. Add some pyCAPS tests and format fixes. — galbramc / detail
  11. Add the AIM utility function aim_symLink — haimes / detail
  12. Set up data structures to handle CFD volume meshes — haimes / detail
  13. meshTypes.h now needs miscTypes.h — galbramc / detail
  14. Add groupMap to meshStruct. Fix Pointwise analyzer warning. — galbramc / detail
  15. Internalize the dynamic loader for mesh writing — haimes / detail
  16. More auto execution fixes — galbramc / detail
  17. Put back circular auto-exec test — haimes / detail
  18. Training fixes and auto execution script adjustments — galbramc / detail
  19. Implement 3D mesh writer interface — haimes / detail
  20. Missed test_astros — galbramc / detail
  21. Auto execution for astros, mystran, and tsfoil — galbramc / detail
  22. lint fix — galbramc / detail
  23. Fix last commit. Add delaundo auto execution. Updated documentation for auto execution. — galbramc / detail
  24. NMakefile fix — galbramc / detail
  25. Enable auto execution for awave and friction. Fix def files. — galbramc / detail
  26. Enable auto execution for avlAIM. Add def files to NMakefile dependencies. — galbramc / detail
  27. Fix xfoil def file. ifdef out proactive code in postAnalysis. — galbramc / detail
  28. Auto execute xfoil — galbramc / detail
  29. I guess variParam does not work... — galbramc / detail
  30. Fully enable AIM auto execution. Updated all new pyCAPS scripts with auto execution. Add OmlWake view. — galbramc / detail
  31. Allow Problem owned Value objects to be ignored when collecting AIMs to auto-execute — haimes / detail
  32. Allow skipping first analysis with autoexec — galbramc / detail
  33. Don't include ourselves in the list of analysis objects to auto-exec in preAnalysis — haimes / detail
  34. Add the auto-execution ability in caps_preAnalysis — haimes / detail
  35. Update caps_transferValues to do auto-execution — haimes / detail
  36. Add transferValues tests including incorrect transfers — galbramc / detail
  37. Remove redundant code from caps_transferValueX — galbramc / detail
  38. Working towards auto execution — galbramc / detail
  39. ifdef strict analysis checking for pre/post — haimes / detail
  40. Auto-exec functioning WRT getting AnalysisOut (simple testing) — haimes / detail
  41. Add geometric design variable to fun3d sensitivity testing — galbramc / detail
  42. Undebugged additions to allow for auto-execution — haimes / detail
  43. Fix training solution example — galbramc / detail
  44. Some more pyCAPS unit tests — galbramc / detail
  45. Updates training in response to questions. Remove old 2018 training files. — galbramc / detail
  46. Add autoexec flag to analysis struct & API — haimes / detail
  47. Fix for multiple : in CSM variable. More testing of changing DIMENSION sized variable. — galbramc / detail
  48. Provide initial exec value in caps_makeAnalysis — galbramc / detail
  49. Fix last commit and update CAPSapi for allowing not to auto-exec — haimes / detail
  50. Fix error handling during caps_execute — haimes / detail
  51. Add tetgen.h Makefile dependency — galbramc / detail
  52. Lint fix — galbramc / detail
  53. Fix for using partial array in caps_setValue. Exlicilty list Legacy tests. — galbramc / detail
  54. Move towards the new AIM execution model — haimes / detail
  55. Documentation changes to support new AIM execution model — haimes / detail
  56. Fix ctypes type declarations — galbramc / detail
  57. Fix su2 surface monitoring error message — galbramc / detail
  58. Reduce mesh size — galbramc / detail
  59. Minimal pyCAPS numpy support. Other small fixes. — galbramc / detail
  60. Fix for mingw64 — galbramc / detail
  61. One more lint fix — galbramc / detail
  62. Stanalizer fix — galbramc / detail
  63. Stanalizer fix. Don't try to build STATIC geometry. Update session05 training solutions to new pyCAPS. Tuple values are always json strings. Reduce run-time for some examples. — galbramc / detail
  64. Fix last commit — galbramc / detail
  65. Fix removal of BRNACH value objects. Various error handling improvements. — galbramc / detail
  66. Remove Branches as Problem Value Objects — haimes / detail
  67. Copy meshTypes.h on Windoze — galbramc / detail
  68. Add SU2 download instructions to session01 — galbramc / detail
  69. Updated Pointwise instructions for Windows — galbramc / detail
  70. Minor edits on first session of training — haimes / detail
  71. Add missing training image — galbramc / detail
  72. Add despmtr.keys examples to training — galbramc / detail
  73. Edited script to demo [Input_String] usage — nitin / detail
  74. Muted non-essential variables for SU2-Blackbird, added Math_Problem variable — nitin / detail
  75. Fix training file — galbramc / detail
  76. Add bodies and writeParameters examples to training. Minor SU2 cleanup. Fix another g++ varaidic macro warning. — galbramc / detail
  77. CAPS training update (mostly complete). Pointwise glyph fixes. Additional su2AIM inputs. More error handling. Varaidic macro fix for g++. — galbramc / detail
  78. Training updates — galbramc / detail
  79. Training updates. Added CAPSflyer — galbramc / detail
  80. Training updates. pointwiseAIM unit bug fix. More error handling. — galbramc / detail
  81. Uprev to 1.20 — haimes / detail
  82. Fix pointwiseTest — galbramc / detail
  83. Training updates. Small dox fixes. AFLR4 error message fix. — galbramc / detail
  84. Fix Makefile — galbramc / detail
  85. Some more dox fixes. Remove incomplete su2Test.c — galbramc / detail
  86. add RPATH to Makefile — jfdannen / detail
  87. More dox fixes — galbramc / detail
  88. Missed one more doxygen configuration change — galbramc / detail
  89. Minor dox fix — galbramc / detail
  90. dox fixes — galbramc / detail
  91. Fix aflr4 NMakefile — galbramc / detail
  92. Missed some legacy SU2 updates to Falcon — galbramc / detail
  93. Update to AFLR 10.15.6 — galbramc / detail
  94. Update cCAPS example with Blackbird — galbramc / detail
  95. Fix SU2 Blackbird data transfer — galbramc / detail
  96. Fix memory leak. Upgrade to SU2 Blackbird — galbramc / detail
  97. mystran fix — galbramc / detail
  98. Fix for delaundo — galbramc / detail
  99. Fix last commit — galbramc / detail
  100. Fix legacy test — galbramc / detail
  101. Revert AFLR version number — galbramc / detail
  102. Update all examples with new pyCAPS. Fix latex dox. Various other small fixes. — galbramc / detail
  103. Minor edits to AFLR4 AIM NMakefile — haimes / detail
  104. Fix aflr4AIM NMakefile for AFLR 10.15.3 — galbramc / detail
  105. Updated default variables (temperature and viscosity were missing when not set as input)
    nitin / detail
  106. Allow .s in AIM (and other) names — haimes / detail
  107. Updated config file generator for SU2-7.1.1
    nitin / detail
  108. Update the docs to be consistent with the last commit — haimes / detail
  109. Rename getDot, hasDot, DoubleDot to getDeriv, hasDeriv and DoubleDeriv. Update AFLR examples for new pyCAPS. — galbramc / detail
  110. Doc update — haimes / detail
  111. Remove non-ASCII charachter — galbramc / detail
  112. Initialize GeomOut Value Objects with the type DoubleDot — haimes / detail
  113. Update aflr4 NMakefile — galbramc / detail
  114. Missed on computeDot. Improved error message. — galbramc / detail
  115. Upgrade to AFLR 10.15.1 — galbramc / detail
  116. Remove and rename some of the sensitivity functions in CAPS and the AIMs — haimes / detail
  117. Remove caps_sensitivity from pyCAPS — galbramc / detail
  118. Remove caps_sensitivity from pyCAPS — galbramc / detail
  119. Doc updates and change of API signature — haimes / detail
  120. Update training examples — galbramc / detail
  121. Fix static analyzer report — haimes / detail
  122. Call createTree with python3 as well — galbramc / detail
  123. Fix warnings — galbramc / detail
  124. Remove capsOwn argument from caps_postAnalysis — galbramc / detail
  125. Update pyCAPS with last commit. Change lists of tuples to dictionaries. Add units to aim_getDataSet. Various other updates. — galbramc / detail
  126. CAPS API is now fully consistent with the documentation (history functions were the last) — haimes / detail
  127. Fix IsNull in aimCalcOutput for fun3dAIM — galbramc / detail
  128. Add caps_runAnalysis to caps.h. Update caps_getBodies in pyCAPS — galbramc / detail
  129. Allow for Geometric and Tessellation sensitivity DataSets; update caps_getBodies signature; implement caps_resetAnalysis, caps_runAnalysis & caps_checkAnalysis — haimes / detail
  130. Add writeParameters and readParameters to problem.geometry — galbramc / detail
  131. Update training testing script — galbramc / detail
  132. Cleanup some of the C testers to be consistent with the new CAPS — haimes / detail
  133. Training update — galbramc / detail
  134. Move errors reported to standard out to the error structure — haimes / detail
  135. Prepare the C testers to deal with the error return structures — haimes / detail
  136. Update legacy test due to new use of units — galbramc / detail
  137. Clean up some error returns — haimes / detail
  138. Oops -- try again — haimes / detail
  139. Do not allow for spaces in the Problem path — haimes / detail
  140. Fix test — galbramc / detail
  141. Update session02 training — galbramc / detail
  142. Update pyCAPS with API changes — galbramc / detail
  143. Missed C code in the training — haimes / detail
  144. CAPS API signature changes -- this will break pyCAPS — haimes / detail
  145. Update openmdao with executing linked analysis — galbramc / detail
  146. Update trainig solutions — galbramc / detail
  147. I guess a sphere just isn't always a sphere — galbramc / detail
  148. Remove one assert — galbramc / detail
  149. Relax tolerance — galbramc / detail
  150. One more training file update — galbramc / detail
  151. Add an @paramter sensitvity test — galbramc / detail
  152. Update some training exampels with units. Update aim unit tests. Add masstran MassProp output. — galbramc / detail
  153. Add support (back) for OpenCSM Constant Parameters — haimes / detail
  154. Dissable d3 as it has invalid charachters. Update fun3dNamelist with latest cython. Update some aim unitTest. Fix training session01 units. — galbramc / detail
  155. caps_dirtyAnalysis now follows links and orders the returned list — haimes / detail
  156. Maybe fix Windoze problem — galbramc / detail
  157. avlTest fix. Stanalizer fix. Add back CAPS_BATCH to dissable viewing geometry with testing. — galbramc / detail
  158. Mostly add back openmdao. Update avlAIM with unitSys. Add aim_newAnalysisIn. — galbramc / detail
  159. Add environment check for continuation on caps_open — haimes / detail
  160. Stanalizer fix — galbramc / detail
  161. openmdao examples — ryan / detail
  162. Fix for Windoze — galbramc / detail
  163. Add signal handling to pyCAPS. Allow all BC type sepcificsions in AFLR3. More error handling in AIMs. — galbramc / detail
  164. Run journal at restart only to the last successful API call — haimes / detail
  165. First successful journal restart — haimes / detail
  166. Add new functions and correct misc problems — haimes / detail
  167. Can now start a new phase from one that is closed — haimes / detail
  168. Closer to full Phase restart — haimes / detail
  169. Can restore state from files; having problems filling aimDiscr — haimes / detail
  170. Make writing restart txt files immune to cntrl-c — haimes / detail
  171. Fix last commit — haimes / detail
  172. Add EGADS model output to journalling for functions that return Bodies — haimes / detail
  173. First implementation of reading back saved state — haimes / detail
  174. Fix for lists of tuples — galbramc / detail
  175. Update/modernize the AIM tester — haimes / detail
  176. Fix testing aim — galbramc / detail
  177. Fix caps_refillBound memory leak. Use analysis tessellations to trigger caps_refillBound. — galbramc / detail
  178. Remove capsDataSet dflag. Rename internal caps_fillVertexSets to caps_buildBound. Cleanup caps_postAnalysis. — galbramc / detail
  179. Set Tuple length before writing value output in the journal — haimes / detail
  180. Fix analysis clean check with data transfer — galbramc / detail
  181. Fix memory leak — galbramc / detail
  182. Warning fixes — galbramc / detail
  183. Lint fix — galbramc / detail
  184. Remove caps_fillVertexSets — galbramc / detail
  185. Plug memory leak — galbramc / detail
  186. Lint fix — galbramc / detail
  187. Forgot def file. Fix warning. — galbramc / detail
  188. Refactor data transfer to use caps_linkDataSet. Rename caps_makeLinkage to caps_linkValue, and caps_completeBund to caps_closeBound. — galbramc / detail
  189. add unit dox to su2AIM — ryan / detail
  190. New caps_makeDataSet and caps_linkDataSet doc. — galbramc / detail
  191. Update caps.def with caps_linkValue. Change arguments to caps_close. — galbramc / detail
  192. scan-build fixes — galbramc / detail
  193. Change caps_makeLinkage to caps_linkValue. Add irow and icol arguments it caps_linkValue (not implemented). — galbramc / detail
  194. Lint fixes — galbramc / detail
  195. Update capsValue.dim in caps_sizeCB. Add unitSys to SU2. Allow caps.open ptr be str, bytes, or unicode. Update su2_and_AFLR4_AFLR3_PyTest.py with new pyCAPS. — galbramc / detail
  196. Invoke calcOutput during last Post for an Analysis Object during restart — haimes / detail
  197. Fix attrBy functions for journalling — haimes / detail
  198. Almost done with implementation of journalling — haimes / detail
  199. Fix stanalizer warning — galbramc / detail
  200. Fix warning — galbramc / detail
  201. Forgot def file — galbramc / detail
  202. Remove debug code — galbramc / detail
  203. Lint fixes — galbramc / detail
  204. Add more unit functions and refactor Unit and Qunatity classes in caps.py — galbramc / detail
  205. More restart edits — haimes / detail
  206. More restart changes — haimes / detail
  207. Add missing free — galbramc / detail
  208. Scan build fix — galbramc / detail
  209. Tripped up by my own checks — galbramc / detail
  210. Relax tolerance — galbramc / detail
  211. Warning fix — galbramc / detail
  212. Lint fixes — galbramc / detail
  213. Fix link error — galbramc / detail
  214. Add aimInfo to aimInitialize. Add example of specifying unitSystem for masstranAIM. Add some units to fea_getMaterial and fea_getProperty. — galbramc / detail
  215. Hold on to pointers during a restart — haimes / detail
  216. Add missing legacy viewGeometry. Add pyCAPS.setLegacy to dissable deprecation warnings. — galbramc / detail
  217. Python 2 fix. Consistent dict keys for attrMap and bodies — galbramc / detail
  218. Make sure caps_close is called for legacy test — galbramc / detail
  219. Add legacy testing directory. Update pyCAPS based in feedback. — galbramc / detail
  220. Some more journal additions — haimes / detail
  221. Fix fun3d test — galbramc / detail
  222. Minor corrections to pass scn-build — haimes / detail
  223. Dissable fun3dNML error test for now — galbramc / detail
  224. Don't cleanup fun3d for now — galbramc / detail
  225. Fix allocation error — galbramc / detail
  226. Initialize utsystem in caps_unitParse — galbramc / detail
  227. Close problem before removing directoies with aim unitTests — galbramc / detail
  228. Python 2 fixes — galbramc / detail
  229. Switch to new pyCAPS interface as default — galbramc / detail
  230. Fix up error condition on close with the Journal file — haimes / detail
  231. Begin Journalling additions — haimes / detail
  232. Remove Bound name from restart file hierarchy and complete first pass at saving away the CAPS objects to disk — haimes / detail
  233. Fix all aim lint 'nullderef' warnings — galbramc / detail
  234. Fix static analyzer warning — haimes / detail
  235. More new restart changes — haimes / detail
  236. Allow for relative paths; more work on restarts — haimes / detail
  237. Fix hsm — galbramc / detail
  238. One mure nullVal fix — galbramc / detail
  239. Fix array size — galbramc / detail
  240. Fix mystranAIM Mesh input — galbramc / detail
  241. Stanalier fix — galbramc / detail
  242. More checks of Value Objects. More checks in get/set Value. Remove setting capsValue.length in AIMs. — galbramc / detail
  243. Fix file close under error — haimes / detail
  244. Remove invalid charachters in legacy analysis directories — galbramc / detail
  245. Remove Value Object names from restart file structure — haimes / detail
  246. Update unit test — galbramc / detail
  247. Fix typo — galbramc / detail
  248. Also guard against csm variables with '@' — galbramc / detail
  249. Try again to handle : in OpenCSM DESPMTRs — haimes / detail
  250. Try to handle : in OpenCSM DESPMTRs — haimes / detail
  251. Writing out NULL dots -- bypass for now — haimes / detail
  252. Begin to populte the new restart disk mirroring — haimes / detail
  253. Add new experimental pyCAPS interface — galbramc / detail
  254. Do not open the cpc file — haimes / detail
  255. Fix tester — haimes / detail
  256. Remove caps_save and prepare for the new restart — haimes / detail
  257. Remove caps_save from pyCAPS — galbramc / detail
  258. Try to fix last commits warnings — haimes / detail
  259. Implement the scratch phase for non-production — haimes / detail
  260. Index fix — galbramc / detail
  261. Workaround to allow legacy workDir specifications — galbramc / detail
  262. Trap interrupts and implement lock file — haimes / detail
  263. Fix aim_system — galbramc / detail
  264. Tested Bob's changes to directory management — galbramc / detail
  265. lint fixes — galbramc / detail
  266. cart3d and fun3d fixes — galbramc / detail
  267. Remove all chdir amd add more aim I/O functions — galbramc / detail
  268. Fix warning from last commit — haimes / detail
  269. Remove Value of Value Objects — haimes / detail
  270. Lint fixes on the last commit — haimes / detail
  271. Added functions for file open and system executions — haimes / detail
  272. More warning fixes — galbramc / detail
  273. Warning and nmake fix — galbramc / detail
  274. Warning fixes — galbramc / detail
  275. Fixes for testing AIM — galbramc / detail
  276. Refactor CAPS directory structure. Add caps_getRootPath. — galbramc / detail
  277. Fix lint abort — haimes / detail
  278. Add file functions to the base and setup for locking — haimes / detail
  279. lint fix — galbramc / detail
  280. Refactor caps_open. Fixes to caps_dupAnalysis. — galbramc / detail
  281. Add fflush to stdout after calls to OpenCSM — haimes / detail
  282. Fix warning — galbramc / detail
  283. One more compile fix — galbramc / detail
  284. Lint and compile fix — galbramc / detail
  285. Remove analysis parents. analysisDir must now be unique. — galbramc / detail
  286. Documents updated — haimes / detail
  287. lint fix — galbramc / detail
  288. Use EGADS+TetGen instead of AFLR4+AFLR3 — galbramc / detail
  289. Maybe AFLR is segfaulting... — galbramc / detail
  290. Plug more memory leaks — galbramc / detail
  291. Fix string memory leak — galbramc / detail
  292. Path fixes — galbramc / detail
  293. Fix aim test and lint — galbramc / detail
  294. Remove aimUsesDataSet. Refactor aimInitialize. pyCAPS updates/refactoring. — galbramc / detail
  295. fix Slugs Makefiles for c++ — jfdannen / detail
  296. Link wvServer code with C++ — haimes / detail
  297. lint fix — galbramc / detail
  298. Minor corrections to API doc — haimes / detail
  299. Remove 'CAPS Info: No symbol' message. Suppress scan-build warning. — galbramc / detail
  300. Remove aimData. Better Python 2 string compatability. — galbramc / detail
  301. Fix def file — galbramc / detail
  302. Fix aflr3 bug — galbramc / detail
  303. lint fixes — galbramc / detail
  304. Refactor parent/child to use links instead — galbramc / detail
  305. Additional Value Pointer corrections — haimes / detail
  306. Fix tess delete. Fix value init. Suppress clang++ warning. Remove redundant build. — galbramc / detail
  307. Additional Value Object Pointer changes — haimes / detail
  308. Additional Value Object pointer fixes — haimes / detail
  309. Get linkages functioning with Pointer-type Value Objects — haimes / detail
  310. Remove static size in array, should be dynamically allocated — galbramc / detail
  311. Lint fix — galbramc / detail
  312. Fix memory leaks — galbramc / detail
  313. Don't allow integer or boolean with units. Return and accepr Units in caps.py. — galbramc / detail
  314. Missed a typo — galbramc / detail
  315. Undo accidental commit — galbramc / detail
  316. Fixes for cCAPS examples — galbramc / detail
  317. Lint fixes — galbramc / detail
  318. Forgot def file — galbramc / detail
  319. Update legacy training — galbramc / detail
  320. Refactor set/get Value — galbramc / detail
  321. Fix last commit — galbramc / detail
  322. Update get/set Limits — galbramc / detail
  323. Fix deprecation warnings — galbramc / detail
  324. One more memory leak — galbramc / detail
  325. Fix memory leak — galbramc / detail
  326. Fix bug in last commit — galbramc / detail
  327. Update training execution script — galbramc / detail
  328. Lint and memcheck fixes — galbramc / detail
  329. Fix Windoze warning — galbramc / detail
  330. Python 2.6 fix and Windoze fix — galbramc / detail
  331. Python 2 fixes — galbramc / detail
  332. Don't compile pyCAPS on windoze — galbramc / detail
  333. Forgot Windoze — galbramc / detail
  334. New ctypes implementation of pyCAPS — galbramc / detail
  335. New ifort updates — haimes / detail
  336. CAPS API document startup options — haimes / detail
  337. API doc update; Allow only certain Value Objects to set attributes — haimes / detail
  338. 1-to-1 CAPS Python API. More unit tests. — galbramc / detail
  339. caps_completeBound bug fix. More ctype pyCAPS testing. — galbramc / detail
  340. Minor updates to last commit — haimes / detail
  341. Fix warning and Windoze def file — galbramc / detail
  342. Lint fixes — galbramc / detail
  343. Initial attempt at new ctypes CAPS API. Added caps_build for more just int time builds. Updated doc. — galbramc / detail
  344. changes to get around false-positives produced by stanalizer — jfdannen / detail
  345. Fix data transfer bug — galbramc / detail
  346. Yet again another try at a scan-build fix — haimes / detail
  347. Another try at a scan-build fix — haimes / detail
  348. Another scan-build fix — haimes / detail
  349. Minor doc updates — haimes / detail
  350. Possible new aim function — galbramc / detail
  351. Lint fixes — galbramc / detail
  352. Refactor CPAS management of tessellations. — galbramc / detail
  353. Update AIM docs to reflect new Tessellation Object handling — haimes / detail
  354. A few more Stanalizer fixes — galbramc / detail
  355. More stanalizer fixes — galbramc / detail
  356. scan-build fixes — galbramc / detail
  357. lint fixes — galbramc / detail
  358. Fix memory leak in aimTransferUtilTest — galbramc / detail
  359. Splint config update — haimes / detail
  360. Forgot Windoze def files — haimes / detail
  361. Internalize capsDiscr cleanup — haimes / detail
  362. Documentation update — galbramc / detail
  363. Allow for multiple bodies in data transfer — galbramc / detail
  364. Minor AIM doc updates — haimes / detail
  365. Fix bugs in skeletonAIM. Updated doc. — galbramc / detail
  366. Lint fixes — galbramc / detail
  367. Another AIM refactoring pass — haimes / detail
  368. Add includes target — galbramc / detail
  369. Update CAPS API Makefile — haimes / detail
  370. And one more warning fix — galbramc / detail
  371. Makefile fix — galbramc / detail
  372. One more warning fix — galbramc / detail
  373. Fix memory leak — galbramc / detail
  374. Missed some warnings — galbramc / detail
  375. Fix warnings and Windoze link error — galbramc / detail
  376. Refactor capsDiscr data structure. Add lint target to makefiles. — galbramc / detail
  377. Update AIM docs — haimes / detail
  378. Add clang static analysis — galbramc / detail
  379. Fix enum/variable clashing in aflr4_Interface — haimes / detail
  380. Refactoring of the AIMs — haimes / detail
  381. more fixes to accomodate changes in EGADS — jfdannen / detail
  382. small updates to be consistent with recent EGADS changes — jfdannen / detail
  383. initial version of serveESP; reorganize udp.c to serve as a pattern for serveESP — jfdannen / detail
  384. improve accuracy of udpFreeform; update associated verification data — jfdannen / detail
  385. add PLUGS_CREATE_EGADS_FILES to serveCSM; add more info to plugs.hist fille; add data/plugs/showHistory.csm to help debug operation of Plugs; change number of reclassified points in Plugs to be the larger of 5 and a fraction of area associated with a Face — jfdannen / detail
  386. more protections in plugs for cases with unclassified points — jfdannen / detail
  387. fix plugs bug for unclassified points during reinitializati9on; make plugs1c as expected failure (for now) — jfdannen / detail
  388. fix bug in Slugs associated with recent EGADS topology changes — jfdannen / detail
  389. fix possible NULL-dereference flagged by stanalyzer — jfdannen / detail
  390. fix non-initialized warning message — jfdannen / detail
  391. fix CONNECT errors associated with non-contiguous Faces; add connect7f test case; preserve orientation of Faces during EXTRACT; add extract4 test case; add sketch11* test cases; do not include SSLOPE statments when determining if Sketch points are co-planar; update OpenCSM to account for EGADS changes associated with making Faces and degenerate Edges — jfdannen / detail
  392. significantly speed up recycling — jfdannen / detail
  393. Allow static builds — haimes / detail
  394. fix typo in previous commit — jfdannen / detail
  395. update droopInlet* test cases to use slpfact=-1; compute mass properties only when needed; add warnings when recycling stops — jfdannen / detail
  396. match slopes and curvatures at seams in UDP supell when slpfact<0; broadcast view matrix to partners when cursor leaves canvas before mouse up event; reorganize mass property calculations — jfdannen / detail
  397. fix bug that did not readjust the level when returning from a UDC; fix bug when the last line of a UDC (without an END statement) calls a UDC (with an END statement); add supell7* test cases — jfdannen / detail
  398. fix First and last Node warnings associated with COMBINE and with esa_logo — jfdannen / detail
  399. fix bug associated with -dxdd option (incorrectly wrote .tess file instead of .sens file); add mechanism2 test case; add esa_logo test case; add normals to output from EVALUATE FACE command; when SUBTRACTing co-planar SheetBodys, make sure result has same normal as the outer SheetBody; add subtract6j-k test cases; allow -dxdd option to be applied to subscripted DEPMTRs; fix memory leak associated when COMBINE closes a WireBody in order to make a SheetBody; add plotting of normals to DisplayType — jfdannen / detail
  400. add ability to print call history during sensitivity calculations; add stickFuselage test case; extend COMBINE command to close WireBody if needed; add combine8* test cases; add splitFlap2* and splitFlap3* test cases; extend CONNECT to work with WireBodys — jfdannen / detail
  401. fix bug when starting serveCSM on Windoze from an .egads, .igs, or .stp  file for filename with backslashes; add autoStart test case — jfdannen / detail
  402. fixed adjoint calculations in massProps; add adjoint* test cases; add testAdjoint target to Makefile.DARWIN64; fix token parsing associated with DOS CR (carriage return) in udpWaffle and udfEditAttr; update tessellation sensitivity verification data; fix bug in mass property derivatives; update sew1, sew2, and import5 to account for improvements in IGES writer; add Curve, Pcurve, and Surface printouts to ocsmPrintEgo; add toler=0 argument to CONNECT command; break Makefile.DARWIN64 up so that test suite can be run in parallel — jfdannen / detail
  403. Fix typo in clean target — galbramc / detail
  404. fix bug in latest commit associated with calling a non-existant UDP/UDF; first version of massProps and adjointCSM — jfdannen / detail
  405. fix bug in latest commit associated with calling a non-existant UDP/UDF — jfdannen / detail
  406. add angle argument to applyTparams.udc; add .tParams attribute to Body too in applyTparams.udc; in udfSlices, if there is a .tParams attribute on the input Body, put it on the slices too; change message in udc loader for cases where file is not found (to avoid Jenkins false positive) — jfdannen / detail
  407. fix eqn2body.udc so that it warns (as oposed to errors) if a local variable is being overwritten; fix bug that prematurely exits if UDP does not exist and we are recycling — jfdannen / detail
  408. check if a user gave an illegal order to SUBTRACT; add eqn2body.udc and helix* and frustrum* test cases; fix bugs associated with SSLOPE statement (especially when a sketch is flipped); add sketch10* test cases; fix tolerance checking in sketch solvers; add theta[] argument to udpEllipse; add ellipse2 test case — jfdannen / detail
  409. upgrade to latest version ot Tblade3; fix a few typos in the documentation; update some training_2021 files; fix comments in contains.udc and overlaps.udc; add assembly3 and assembly4 test cases; allow CATBEG to catch overconstrained and underconstrained errors; generate underconstrained, overconstrained, or not_converged signals from CATEND; add sketch9* test cases; improve convergence tolerance in sketcher; fix sign of dip to minimize residual for S and R constraints in sketcher; ensure that sweep() function always gives sign that is the same as dab — jfdannen / detail
  410. add Makefile.DARWIN64.gcc for testing with gcc-10; modify testing procedure to also test against gcc-10; fix memory error associated with reordering senses in loops (inletWithWalls1); fix seg fault if order in INTERSECT is given with leading dollar-sign; check that only valid order are given; fix test cases that used invalid order — jfdannen / detail
  411. improve speed of udfEditAttr and udpWaffle (on LINUX) when script is very long — jfdannen / detail
  412. uprev to v1.20 (ESP.html, ESP-localhost.html, ESP-help.html, OpenCSM.h, ocsm.rc); fix ESP Hint associated with CONNECT command; extend CONNECT so that it can CONNECT Faces in a single Body if there is a Mark before the last SolidBody; improve detection of matching Edges in CONNECT; add inletWithWalls* test cases — jfdannen / detail
  413. fix core dump if opening file in ESP without a filename; fix bug in ESP that made commands not available if File->Open had more Branches than previous model; add description of MessageWindow background colors in Tutorial 1 — jfdannen / detail
  414. fix error when drawing outline in StepThru mode — jfdannen / detail
  415. change DisplayFilter so that it posts help via an alert instead of the MessageWindow; update all tutorials in ESP-help.html — jfdannen / detail
  416. do not allow editing of .udc in ESP unless there is a matching .csm or .cpc; if ocsmSave is called to write a .udc file but there is no matching UDPRIM statement, write a include-type UDC — jfdannen / detail
  417. allow selection of geometric and tessellation sensitivities for multi-valued DESPMTRs in ESP; update to tutorial files for cases when spindle is not created; fix coloring of children Branches when a DesignParameter is editted in ESP; first attempt at new tutorial descriptions — jfdannen / detail
  418. remove unneeded part of tutorial3 — jfdannen / detail
  419. RESTORE . (dot) now duplicates Body on top of stack; add restore2 test case; return an error from ESP if despmtr change is illegal (such as out of range); modify contains.udc and overlaps.udc so that they leave the stack unchanged; update ESP-help (except tutorials); update ESP_QuickReference — jfdannen / detail
  420. add ExpandAll/CollapseAll button in ESP to expand listing of Branches; fix coloring of some Branches in ESP TreeWindow — jfdannen / detail
  421. add imprint5 test case (which is expected to fail); move data/tutorial* to data/legacy/tutorial* — jfdannen / detail
  422. change the name of configuration sensitivities to geometric sensitivities — jfdannen / detail
  423. do not remove previous velocities if call to ocsmSetVel or ocsmSetVelD does not result in a change; fix bug in STORE when overwriting a storage location with a GROUP that contains a different number of Bodys; add group6 test case; fix bug that returned an error when IMPORTing an .egads file that contains a tessellation; add import8* test cases; fix bug in ocsmSave when writing .csm file that has UDPARG statements associated with a UDC; add save1 test case; add save2 test case to ensure that inline inputs to a UDP get saved correctly in ocsmSave; fix out-of-bounds bug when processing inline files associated with a UDP/UDF; change ocsmGetEgo so that it always returns the ego rather than a copy of the ego; add ocsmSetEgo to OpenCSM API, pyOCSM, and test_pyOCSM — jfdannen / detail
  424. update verification data for parsec2* on 7.3.1; update udpWaffle to get its file from a stream; add waffle9b test case; update udpBezier to get its file from a stream; update udpFitcurve to get its file from a stream; modify fitCurve6* test cases; update udpFreeform to get its file from a stream; update udpNurbbody to get its file from a stream; add more nurbbody* test cases — jfdannen / detail
  425. minor changes to Makefile.DARWIN64 and Makefile.LINUX64 — jfdannen / detail
  426. Update updParsec include dependencies — galbramc / detail
  427. update udpParsec; update parsec test cases; add designR* test cases; in removeVels, remove sensitivity cache for any Body created by a UDPRIM (since we do not know what was done inside the UDP) — jfdannen / detail
  428. add lock in serveCSM so that browser messages do not interfere with each other when there are multiple browsers; update pyOCSM for latest Windoze/Python 3.9 change; fix SOLBEG iteration message; fix bug in ocsmGetTessVels that did not rebuild perturbation for cases where a UDPARG contained an argument that could not be computed analytically; add more droopInlet* test cases (rounded inlets); add appliedLate test case to show how to apply chamfers and fillets at the end of the build process; fold case in argument names to UDPARG and UDPRIM — jfdannen / detail
  429. add lock in serveCSM so that browser messages do not interfere with each other when there are multiple browsers; update pyOCSM for latest Windoze/Python 3.9 change; fix SOLBEG iteration message; fix bug in ocsmGetTessVels that did not rebuild perturbation for cases where a UDPARG contained an argument that could not be computed analytically; add more droopInlet* test cases (rounded inlets); add appliedLate test case to show how to apply chamfers and fillets at the end of the build process; fold case in argument names to UDPARG and UDPRIM — jfdannen / detail
  430. extend ocsmGetEgo to allow EBody or tessellation on EBody to be returned; add options to udpSupell to get better end-slopes, which is sometimes needed for very large n abd high apsect ratios; add droopInlet* test cases; fix memory leak in sensCSM -tessel — jfdannen / detail
  431. fix memory leaks in udfFlend — jfdannen / detail
  432. more improvements to ESP collaboration — jfdannen / detail
  433. update IMPORT to use tessellation if .egads file contains one or more tessellations; update UDPRIM to use tessellation if returned model contains one or more tessellations; fix bug in ocsmPrintEgo for cases where MODL contained a TESSELLATION or EBODY; fix memory leaks in udfFlend; improvements to multi-user collaboration — jfdannen / detail
  434. change all wv_sendText to wv_broadcastText in serveCSM — jfdannen / detail
  435. signal an error when attempting to EXTRACT a degenerate Edge; fix bug in JOIN if toMark is set but there is only one Body after the mark; fix Tblade3 cases that use flends; fix bug in flend that caused out-of-bounds error; first cut at multi-user collaboration in ESP — jfdannen / detail
  436. update wingStruct test cases to use JOIN instead of UNION; add many more flend* test cases; add ability to apply flend to a single Body; update flend to work even in cases where tangent vectors are (anti-)parallel — jfdannen / detail
  437. fix bug in ocsmCopy to not malloc when minline=0 — jfdannen / detail
  438. fix bug in ocsmCopy to not malloc when minline=0 — jfdannen / detail
  439. fix warning message in udfSlices — jfdannen / detail
  440. add udfSlices; add slices* test cases — jfdannen / detail
  441. fix recently-added bug that did not put attributes on a Body that was recycled via -loadEgads; fix bug in computing tessellation sensitivity at endpoints of Edges; fix allocation bug in sensCSM -tessel; update some .tsen files; fix bug in udfNuscale that caused an abort if input was a FaceBody; add nuscale4 test case; compute tessellation sensitivities for EBodys — jfdannen / detail
  442. revise Makefile.DARWIN64 so that target testESP tests -dumpEgads and -loadEgads — jfdannen / detail
  443. add more DEBUG information in udfEditAttr; add testBasic2 target in Makefile.DARWIN64; fix bug that wrote Body_xxxxxx.egads file twice if from a UDF; fix bug associated with Edge attributes when Body was recycled via -loadEgads; update to udfEditAttr to account for the fact that windoze does not properly handle ftell() and fseek() if file is opened for read in text mode — jfdannen / detail
  444. add more info in key window printout when in ESP-sketch; update Makefile.LINUX64 for use on new ubuntu 20.04 system — jfdannen / detail
  445. simplify udfEditAttr code to accomodate stanalyzer — jfdannen / detail
  446. more useless guards to pass stanalyzer — jfdannen / detail
  447. remove dead code detected by stanalyzer — jfdannen / detail
  448. initialize fp to avoid warnings — jfdannen / detail
  449. allow color names to be specified in either lowercase or UPPERCASE; fix bug that improperly colored Edges after call to udfEditAttr; fix tessellation sensitivity bug along Edges; add creation of a logdist.plot file that contains triangles with the log(distance) at every Face tessellation point (blue=1e-12, red=1e-03) if sensCSM is called with the -tessel and -despmtr flags; add __hasC0blend__ Attribute so that finite differences are used for sensitivities if a C0 blend has been recycled; update .tsen files; allow UDP/UDF to get its << arguments from a stream instead of a tmp_OpenCSM_xx/yy file; add udpInline* test cases; allow udfEditAttr to get its file from a stream; fix bug that did not properly write inline files associated with a UDPARG statement — jfdannen / detail
  450. refactor (simplify) tessellation sensitivities code; update .tsen files; add designQ* test cases — jfdannen / detail
  451. add waffle9a test case — jfdannen / detail
  452. fix some minor bugs when compiling with GRAFIC; update ESP for recent change to WebViewer; update Makefiles for requirement to compile with c++; minor update to parka to eliminate warning with old gcc — jfdannen / detail
  453. Link serveCSM with C++ — haimes / detail
  454. fix important bug in tessellation sensitivities for Faces; allow configuration sensitivities on EEdges and EFaces; add more features to Erep Editor; add ereped5 test case; allow user to show either configuration or tessellation sensitivities in ESP (and make the -tessel flag obsolete in serveCSM); update .tsen files to be consistent with fixed bug in tessellation sensitivities — jfdannen / detail
  455. extend ocsmPrintEgo to work for EBodys, ...; add ocsmMakeEBody to OpenCSM API; next version of Erep Editor; add erapAtEnd flag so that ocsmBuild builds EBodys at end based upon _erepAttr and _erepAngle attributes; add new DisplayType in ESP to visualize EBodys if they exist — jfdannen / detail
  456. fix problems that were caused by incorrect fix of memory leaks in udfNuscale — jfdannen / detail
  457. fix memory leaks in udfNuscale — jfdannen / detail
  458. add udfPrintEgo to Makefile and NMakefile — jfdannen / detail
  459. first implementation of ErepEd; add ereped* test cases; add udfNuscale to non-uniformly scale a Body (after converting it to all BSPLINES); add nuscale* test cases; fix typo in GetUV in pyOCSM; add nasa_worm test case — jfdannen / detail
  460. issue error message if problem generating SPLINE with specified SSLOPE; fix bug associated with flipped Sketch containing an SSLOPE statement; add sslope5* test cases — jfdannen / detail
  461. New ifort updates — haimes / detail
  462. significant speedup in creating sceneGraphMetaData, especially for cases with many Faces and Edges — jfdannen / detail
  463. adjust tolerance for detecting colinear points in CIRARC in sketcher — jfdannen / detail
  464. (for now) disable _hist and __trace__ in Bodys that are returned from udpCsm (which means that we cannot get sensitivities on the Body returned from udpCsm); add etopo* test cases — jfdannen / detail
  465. add A12 to studentGallery — jfdannen / detail
  466. fix bug introduced in last attempt to get around false-positives in stanizer — jfdannen / detail
  467. another attempt to eliminate lint errors — jfdannen / detail
  468. update Makefile for lint options — jfdannen / detail
  469. another attempt to pass all Stanalizer tests — jfdannen / detail
  470. fix bug associated with CSYSTEMs that was introduced recently; a few more fixups to try to pass ESP_Stanalizer — jfdannen / detail
  471. fix bug introduced when making sure code was lint-free — jfdannen / detail
  472. fix SHOW_SPLINES so that grafic.h is not needed — jfdannen / detail
  473. many changes in order to pass lint and scan-build tests — jfdannen / detail
  474. Makefile lint updaate — haimes / detail
  475. add perturbations in Plugs when LM fails to help avoid local minima — jfdannen / detail
  476. Add includes target — galbramc / detail
  477. remove unused variables in udpProp in previous release — jfdannen / detail
  478. add udpProp and its test cases — jfdannen / detail
  479. fix bug in velocityOfNode for a RULE/BLEND with a rotated Xsect; fix typo in Edge tessellation sensitivities; fix affected .tsen files; fix bug that drew too many things when showing tufts for tessellation sensitivities — jfdannen / detail
  480. Put lint in Makefile for Linux — haimes / detail
  481. improve Plugs messages for outLevel 0 — jfdannen / detail
  482. enable more spline functions in RULE/BLEND sensitivities — jfdannen / detail
  483. Add clang static analysis — galbramc / detail
  484. add designP*d test cases; use new Node-only versions of EG_ruled and EG_blend; fix bug in Face orientation when SUBTRACTing two in-plane SheetBodys — jfdannen / detail
  485. fix warning messages generated by udpFitCurve, udpRadwaf, udpKulfan, and udfCatmull; remove __trace__ warning for Nodes in a REVOLVE since they might not exist in the SolidBody if they were on the centerline; do not run plugs if there is a pendingError; allow user to skip phase1 in Plugs; write plugs.despmtrs file at end of Plugs; remove perturbation process in Plugs since it did not work, especially for cases without LBOUNDs and UBOUNDs; fix bug when SWEEPing a WireBody; update sweep0a verification data; fix Edge blue/green coloring in ESP; update verification data for plugs1c, plugs4b, plugs7a, and plugs8a, since the results were close to the correct DESPMTRs — jfdannen / detail
  486. update Plugs verification data for 7.3.1; fix Slugs so that it no longer issues Face is Fixed messages — jfdannen / detail
  487. Specify static link of FORTRAN/gcc libraries — haimes / detail
  488. Fix EG_makeTopology(FACE) for Planar Surface with relaxed tolerances and fix for peridoic Edges — galbramc / detail
  489. Shield debug print statment with outLevel > 1 — galbramc / detail
  490. Fix scan-build warning — galbramc / detail
  491. Add EG_stack functions to def file — galbramc / detail
  492. Add testing EG_getTopology -> EG_makeTopology with _dot tests. Test context is empty when closed with _dot tests. Test bottom-up periodic Face construction with pyEGADS. Consistent tolerance check between BrepCheck_Edge and EG_makePCurve. EG_getTopology always returns NULL geom for DEGENERATE Edge. Fix EG_isSame for DEGENERATE Edges. Fix EG_copyGeometry_dot for DEGNERATE Edge. Remove DEGNERATE Curves in EG_traverseBody. Fix EG_makePCurves for periodic Edge. Remove modifying DEGENERATE input Edge in EG_makeTopolgy. Remove arbitrary tolerance increase in EG_getArea, EG_makeTopology(FACE), and EG_getUVInfo. EG_orientWire returns Face for efficiency. Fix geom reference for EG_makeFace(LOOP). Fix duplicate Makefile target. — galbramc / detail
  493. Fix for loop with single Edge — galbramc / detail
  494. Remove EG_flipObject(EDGE) from EG_ruled — galbramc / detail
  495. Makefile update for M1 — haimes / detail
  496. Config updates and removal of Edges from EG_filpObject — haimes / detail
  497. Fix max — galbramc / detail
  498. Fix tire.py — galbramc / detail
  499. Update pyEGADS for new EG_makeTopology(LOOP). Remove surface sensitvity for FACE in EG_setGeometry_dot(NULL). Use InifinitePoint check for wire orientation. Fix EG_makeFace_dot. — galbramc / detail
  500. cannot make TWONODE Edge if Nodes are the same; properly account for Loops senses when making Faces; fix EG_removeFaces to return error if remaining Faces are not contiguous — jfdannen / detail
  501. Fix Topology references when copying an EBody with different Body — haimes / detail
  502. Fix up copyObject with Tessellation Objects and EBodies also check that EBodies are closed — haimes / detail
  503. Update Windoze zlib to 1.2.11 — haimes / detail
  504. Add gprof config — haimes / detail
  505. Improve IGES reader to handle units; support changes EBody references during copyObject; Update docs — haimes / detail
  506. Fix redefined warning — galbramc / detail
  507. Fix flipObject for a Loop with SREVERSE edges created with makeTopology — galbramc / detail
  508. Added SINNER/SOUTER defines for FACE/SHELL senses. Updated docs for fixes to getArea/makeFace/makeTopology. Minor fix in blend/rule. — galbramc / detail
  509. Slightly better error message — galbramc / detail
  510. EGADSlite can now tessellate an EBody — haimes / detail
  511. Expanded Model now supported by EGADSlite — haimes / detail
  512. Flip not properly marking Loops as closed — haimes / detail
  513. Improve IGES export — haimes / detail
  514. Add EG_getTessFrame to expose the information for interior Face mappings — haimes / detail
  515. Fix of AFLR4 internal Edge use of setTessFace — haimes / detail
  516. Allow for output of setTess functions — haimes / detail
  517. Allow for multiple (more than 2) Loops touching a Node in setTessFace — haimes / detail
  518. NonManifold Nodes now functional in setTessFace — haimes / detail
  519. Fix Stanalizer warning — haimes / detail
  520. Almost have NonManifold Nodes working in setTessFace — haimes / detail
  521. Fix exportLite.mak — haimes / detail
  522. move towards full Model support in EGADSlite — haimes / detail
  523. rewrite of setTessFace to support internal Edges — haimes / detail
  524. Clarify .mixed for a single face with both triangles and quads. Uprev EGADS doc. — galbramc / detail
  525. Prepare EGADSlite for Effective Topology — haimes / detail
  526. Prepare EGADSlite for Effective Topology — haimes / detail
  527. Fix Stanitizer error — haimes / detail
  528. Improve Edge tessellation w/ arc length splitting — haimes / detail
  529. Uprev to 1.20 — haimes / detail
  530. update config and add attribute dup on EG_copyObject for tessellations — haimes / detail
  531. update README.txt — jfdannen / detail
  532. README updates — haimes / detail
  533. Update README — galbramc / detail
  534. Some Doc updates — haimes / detail
  535. Update PreBuilt READMEs — haimes / detail
  536. Update configure scripts and Fix seeding for inverse evaluations on toroidal surfaces — haimes / detail
  537. Try again to fix deleteObject on Model with Tess or EBody references — haimes / detail
  538. Revert last commit — haimes / detail
  539. Fix EG_deleteObject reference count for TESSELLATION & EBODY Objects in a Model — haimes / detail
  540. Update the error message in EG_imprint when EGADS fails and uses the OpenCASCADE method; also add a note in the documentation on this — haimes / detail
  541. Update the README for the next release — haimes / detail
  542. Generalize the last commit — haimes / detail
  543. Allow for getEdgeUV on single Face EFaces with Degenerate Edges, but not for multi-Face EFaces — haimes / detail
  544. Fix inverse evaluate on periodics where the Face limits are not in the periodic range — haimes / detail
  545. Fix py_to_c(takeOwnership=True) — galbramc / detail
  546. Update egads doc with py_to_c(takeOwnership=False) — galbramc / detail
  547. Add takeOwnership=False to py_to_c — galbramc / detail
  548. Add missing WIN32 dllexport — galbramc / detail
  549. UVMAP tester fix — haimes / detail
  550. Forget to change the UVMAP test code — haimes / detail
  551. Update UVMAP to the latest release — haimes / detail
  552. Remove old docs — haimes / detail
  553. Fix pyEGADS CDLL on Windows for Python >= 3.8 — galbramc / detail
  554. Fix warning generated when upgrading UVmap — haimes / detail
  555. Update UVmap for Effective Topology — haimes / detail
  556. Make tessellation handling more immune to bad topology — haimes / detail
  557. Properly delete scenegraph with multiple browsers — haimes / detail
  558. Fix segFault in EG_splitBody when given broken topology — haimes / detail
  559. Make sure the OCC Shape type does not change when fixing imported Bodies — haimes / detail
  560. Update EGADS API doc — haimes / detail
  561. Add undocumented EG_getTessEFace — haimes / detail
  562. Fix free on trmap in EG_destroyEBody — haimes / detail
  563. Add more tests — haimes / detail
  564. Allow EG_spline2dRaw to have fixed knot spacing — haimes / detail
  565. Only error out if the Loop's length differs — haimes / detail
  566. Fix scribe segFault; correct t value in multi segment EEdge — haimes / detail
  567. Configuration fix — haimes / detail
  568. Fix for Python 2.7 support — galbramc / detail
  569. Make getEdgeUV more consistent for EFaces with a single patch — haimes / detail
  570. rename callback in wv that can get called when scene is updated — jfdannen / detail
  571. Improve Effective Topology performance by walking the triangulation to find position — haimes / detail
  572. Fix Stanalyzer error — haimes / detail
  573. Update Effective Topology to all tolerances; fix sceneGraph call-back in wvServer; add map lookup in wvServer — haimes / detail
  574. add wvSceneUpdated() callback after scene graph has been updated — jfdannen / detail
  575. Reinstate EGADS_EXTRAPOL for EFace evaluations outside of the triangulation — haimes / detail
  576. Fix incorrect reference in a DEBUG block (stanalyzer has DEBUG on) — haimes / detail
  577. Refactor how Edges are internally handled in Effective Topology — haimes / detail
  578. Forget def file in last commit — haimes / detail
  579. Provide access to an EFace's triangles -- for sensitivities — haimes / detail
  580. Allow for return from makeAttrEFaces to be NULL — haimes / detail
  581. Better Python 2 string compatability — galbramc / detail
  582. Inform when an EEdge is rejected due to dihedral — haimes / detail
  583. Minor debug correction — haimes / detail
  584. Fix region checker for EEdges w/ multiple Edges in the (-) sense — haimes / detail
  585. Fix indexing problem in collecting Faces for makeAttrEFaaces — haimes / detail
  586. Fix indexing problem in collecting Faces for makeAttrEFaaces — haimes / detail
  587. Fix makeEFace with more than 2 ELoops — haimes / detail
  588. Prep for ESP beta — haimes / detail
  589. Config PYTHONPATH udpates. pyEGADS updates. doc updates for pyEGADS. — galbramc / detail
  590. Fix cases where DEGENERATE Edges end up without a tessellation; copyObject can now change the Body associted with a Tessellation; vAttr will use a stored Tessellation in the model — haimes / detail
  591. Adjust the ifort library dependencies — haimes / detail
  592. Finish the implementation of all Tessellation functions that support Effective Topology — haimes / detail
  593. Minor corrections — haimes / detail
  594. Fix last commit — haimes / detail
  595. Effective Topology tesselltion corrections — haimes / detail
  596. Cleanup up some closure issues in Effective Topology — haimes / detail
  597. Additional DEGENERATE EEdge updates — haimes / detail
  598. Fix t storage for DEGENERATE EEdges — haimes / detail
  599. Fix scan-build warning from last commit — haimes / detail
  600. Allow for retaining common attributes in Effective Topology merges — haimes / detail
  601. Fix ET BoundBox calculation; Update Edge Tesselltion for EBody; Document EG_getWindingAngle — haimes / detail
  602. Effective Topology: don't use Node positions when computing Edge winding angle — haimes / detail
  603. Full Attribution & Effective Topology — haimes / detail
  604. Fix ONENODE EEdge ELLOOP construction — haimes / detail
  605. Allow for wrap-around mappings assuming a single seam — haimes / detail
  606. Minor ET cleanup — haimes / detail
  607. Can now merge EEdges to make ONENODE — haimes / detail
  608. scan-build fixes — galbramc / detail
  609. stanalyzer corrections — haimes / detail
  610. Fix up wv_setKey from memory issues — haimes / detail
  611. Fix non-manifold initialization of UVs and reinstate the compute of 2nd derivatives for composites — haimes / detail
  612. Makefile lint updaate — haimes / detail
  613. Add includes target — galbramc / detail
  614. Add back rewind capabilities when removing Nodes in makeEFace — haimes / detail
  615. Make sure we have a valid EBody after an error in makeEFace — haimes / detail
  616. Put lint in Makefiles for Linux — haimes / detail
  617. Increase MSVC CPP optimization — galbramc / detail
  618. Fix copyEBody — haimes / detail
  619. Add clang static analysis — galbramc / detail
  620. mapBody correction for reversed Edges; fix up copyEBody; protect against multiple vertex mappings — haimes / detail
  621. Updaate the Docs — haimes / detail
  622. Slugs script updates — galbramc / detail
  623. Add Slugs testing scripts — galbramc / detail
  624. Only run plugs*.csm files for plugs — galbramc / detail
  625. Only run plugs*.csm files for plugs testing. — galbramc / detail
  626. plugs1c is not longer expected failure — jfdannen / detail
  627. Remove verbosity — galbramc / detail
  628. Finally fixed — galbramc / detail
  629. Getting closer — galbramc / detail
  630. what is going on... — galbramc / detail
  631. One more Plugs fix — galbramc / detail
  632. Update expectPLUGS script — galbramc / detail
  633. Windoze slashes — galbramc / detail
  634. Test plugs0 which is actually expected to pass — galbramc / detail
  635. Add numpy to venv for SU2 — galbramc / detail
  636. Plugs, not plugs — galbramc / detail
  637. Fix beta scripts — galbramc / detail
  638. mark plugs1c as expected failure (for now) — jfdannen / detail
  639. Catch tire errors on Windoze — galbramc / detail
  640. Update asan lib path — galbramc / detail
  641. Ignore pip timeout warning — galbramc / detail
  642. Of coarse, three slashes... — galbramc / detail
  643. Escape slashes on Windoze — galbramc / detail
  644. One more try at autoStart on windoze — galbramc / detail
  645. Update autoStart testing for Sanitizer and Valgrind — galbramc / detail
  646. Fix path for Windoze autoStart — galbramc / detail
  647. Fix autoStart testing — galbramc / detail
  648. Another valgrind supprsssion. Windoze fix — galbramc / detail
  649. Add autoStart testing for Sanitizer and Valgrind — galbramc / detail
  650. Add autoStart testing. Another OCC valgrind fix. — galbramc / detail
  651. Fix last commit — galbramc / detail
  652. Valgrind suppression fixes — galbramc / detail
  653. matplotlib valgrind suppressions — galbramc / detail
  654. Sanitizer suppressions — galbramc / detail
  655. Don't update Jenkins files in bfr — galbramc / detail
  656. Add Jenkins ESP_parse and ESP_email.template config files. Remove OCC 6.8 files. — galbramc / detail
  657. note that rocketnozzle1 and rocketnozzle2 are expected to fail — jfdannen / detail
  658. Update ESP_Beta testing. Add ESP_PreBuilt testing. — galbramc / detail
  659. Update to AFLR 10.15.6 — galbramc / detail
  660. SU2 path fix on macOS — galbramc / detail
  661. Correct SU2 path — galbramc / detail
  662. Upgrade to SU2 Blackbird — galbramc / detail
  663. Update to AFLR 10.15.3 — galbramc / detail
  664. Remove centOS68 if statements — galbramc / detail
  665. Remove 6.8 files, add legacy directory — galbramc / detail
  666. add imprint5 to list of expected failures — jfdannen / detail
  667. Upgrade to AFLR 10.15.1 — galbramc / detail
  668. change the name of configuration sensitivities to geometric sensitivities — jfdannen / detail
  669. Add pyOCSM to PYTHONPATH — galbramc / detail
  670. Update path to test_pyOCSM.py — galbramc / detail
  671. One more valgrind suppression — galbramc / detail
  672. Put back one suppression — galbramc / detail
  673. Suppress numpy memory leaks — galbramc / detail
  674. Fix setting memcheck and valgrind python — galbramc / detail
  675. Suppress python memory leak — galbramc / detail
  676. Suppress numpy memory leaks — galbramc / detail
  677. Add scan-build links — galbramc / detail
  678. Single PYTHON_VERSION for all Jenkins scipts — galbramc / detail
  679. Use python 3.8.9 — galbramc / detail
  680. Add --embed to python-config when appropriate — galbramc / detail
  681. Upgrade Python to 3.9.4 — galbramc / detail
  682. Python 2.6.6 is really dead — galbramc / detail
  683. Don't try to use Python 2.6 — galbramc / detail
  684. Fix script — galbramc / detail
  685. Run legacy pyCAPS tests — galbramc / detail
  686. Remove 2018 template_avl — galbramc / detail
  687. Enable python fault handler — galbramc / detail
  688. Don't try to compile IRIT when it does not exist — galbramc / detail
  689. Don't use Python 2.6 on CentOS 6.8 — galbramc / detail
  690. Don't run pointwise on commit — galbramc / detail
  691. Don't run on Python 2.6 — galbramc / detail
  692. Script fixes for rnning CAPS unit tests — galbramc / detail
  693. Minor beta fix — galbramc / detail
  694. One more path fix — galbramc / detail
  695. Path fix for Beta — galbramc / detail
  696. Update jenkins scripts for new pyCAPS — galbramc / detail
  697. Run pyCAPS unit tests with Sanitizer — galbramc / detail
  698. Fix PYTHONPATH — galbramc / detail
  699. Use new ctypes pyCAPS — galbramc / detail
  700. Upgrade ifort on Windoze — galbramc / detail
  701. Another Intel fix — galbramc / detail
  702. Missed sone intel updates — galbramc / detail
  703. Update intel compiler — galbramc / detail
  704. Remove scan-build directories if clean — galbramc / detail
  705. Remove CPATH for stanalizer — galbramc / detail
  706. Stanalier script fixes — galbramc / detail
  707. Stanalier script fixes — galbramc / detail
  708. Stanalier script fixes — galbramc / detail
  709. Add stanalizer script — galbramc / detail
  710. update Plugs expected failures and ignore list — jfdannen / detail
  711. update Plugs expected failures and ignore list — jfdannen / detail
  712. Fix known sense errors for Windoze — galbramc / detail
  713. Add known sensitivity failures — galbramc / detail

#26 (Jan 19, 2021, 11:47:20 PM)

  1. Add tests for makeTopology Face works with flipped Loop — galbramc / detail
  2. Do not use sense for makeTopology for FACE — galbramc / detail

#25 (Jan 19, 2021, 3:05:54 PM)

  1. fix Slugs problems that were introduced by recent changes in EGADS — jfdannen / detail
  2. return EXIT_FAILURE if there is a problem with the .csen or .tsen file in sensCSM; fix Slugs problems that were introduced by recent changes in EGADS; add holes test case for Slugs; add sense printout for Face children in ocsmPrintEgo — jfdannen / detail
  3. remove _hist and __trace__ attributes from Bodys when importing; update .csen and .tsen files for 7.4.1 for designP* test cases — jfdannen / detail
  4. Fix bug in call to velocityOfRange — galbramc / detail
  5. Warn and ignore incorrect single Loop sense in makeTopology. Check all Loop senses in makeTopology. — galbramc / detail
  6. Actually fix warning — galbramc / detail
  7. Update docs on saveModel — haimes / detail
  8. Fix warning — galbramc / detail
  9. ruled/blend with all NODE sections. Add Attr structures to pyEGADS. — galbramc / detail

#24 (Jan 18, 2021, 9:29:08 AM)

  1. change copyright notice to 2021 — jfdannen / detail
  2. Update copyright year — haimes / detail
  3. Minor AIM interface update — haimes / detail
  4. Update fun3D NML — galbramc / detail
  5. Remove AIM static storage — haimes / detail
  6. Fix up other aim def files — haimes / detail
  7. Fix up fun3dAAIM.def — haimes / detail
  8. New AIM API changes — haimes / detail
  9. Update CAPS docs to reflect the chnging code base — haimes / detail
  10. Update AIM doc's so AIM signatures do not explicitly return the Error Structure — haimes / detail
  11. Update AAPI docs — haimes / detail
  12. Fix divide by zero in conjGrad — haimes / detail
  13. Doc updates — haimes / detail
  14. Fix array out of bounds — galbramc / detail
  15. Fix memory leak — galbramc / detail
  16. Fix for convert_integerToString — galbramc / detail
  17. Add global memory storage for element gIndicies, dIndicies, and poly — galbramc / detail
  18. More Doc updates — haimes / detail
  19. Update caps_open docs — haimes / detail
  20. Fix for new consistnt JOIN operator with SHEETBODYs — galbramc / detail
  21. More memory leak fixes. Fix aim_FreeDiscr name conflict. — galbramc / detail
  22. Fix memory leaks and improve deprecation message — galbramc / detail
  23. Update training material — galbramc / detail
  24. Update regression tests — galbramc / detail
  25. Fix warning — galbramc / detail
  26. fix uninit. variable — ryan / detail
  27. fix of windows
    ryan / detail
  28. fix python import
    ryan / detail
  29. make  analysis default function reentry — ryan / detail
  30. fix structural modeling — ryan / detail
  31. update of sensitivity testing
    ryan / detail
  32. fixes — ryan / detail
  33. fixes — ryan / detail
  34. Fix Windoze compile errors — galbramc / detail
  35. fixes for mesh examples — ryan / detail
  36. add NULL check so util works with hsm and masstran — ryan / detail
  37. remove tempUtil.h reference — ryan / detail
  38. remove tempUtil.h reference — ryan / detail
  39. remove tempUtil.h reference — ryan / detail
  40. util functions — ryan / detail
  41. cfd aims — ryan / detail
  42. structural aims — ryan / detail
  43. *header.tex files — ryan / detail
  44. meshing aim updates — ryan / detail
  45. Minor format fixes — haimes / detail
  46. Another round of error handling — galbramc / detail
  47. More error handling updates — galbramc / detail
  48. Fix warning — galbramc / detail
  49. Updated new AIM error handling. Updted skeletonAIM with new error handling. — galbramc / detail
  50. fix unittests — ryan / detail
  51. pyCAPS bomb — ryan / detail
  52. Free partial before refilling the geometry output — haimes / detail
  53. Initialize analysis object in capsProblem correctly — haimes / detail
  54. Regenerate pyCAPS.c — galbramc / detail
  55. initialize members in makeSimpleErr — haimes / detail
  56. Some minor fixes — galbramc / detail
  57. First cut at storing the Errors in the aimInfo struct — haimes / detail
  58. Fix missing line continuation. — galbramc / detail
  59. Traning material updates. Minor formatting and typo fixes. Initial framework for new AIM error handling. — galbramc / detail
  60. Clang static analyzer corrections — haimes / detail
  61. update MALLOC and FREE to use EG_alloc and EG_free — jfdannen / detail
  62. Updated AIM to work with latest version of SU2 (7.0.7) — nitin / detail
  63. Testing & Fixup of GeometryOut dot handling — haimes / detail
  64. Fill Geometry Out sensivities — haimes / detail
  65. Update the docs so that they express our goal; implement most of caps_sensitivity — haimes / detail
  66. Setup for caps_sensitivity — haimes / detail
  67. Fix issue with size CallBack — haimes / detail
  68. Tester for variable length parameters — haimes / detail
  69. fix (recently-added) bug associated with skipping rebuild if there is an EVALUATE statement; improve cloud point reclassification process in Plugs; extend designP* test cases; fix propagation of .hasdots for cases with multiple RESTOREs; handle sensitivity case when WireBody is INTERSECTed or SUBTRACTed with a SolidBody; require finite-difference sensitivities for cases with EVALUATE statements; use internal _dots for Edges if it exists; compute sensitivities for BLEND of all NodeBodys; update .tsen and .csem files for all 7.3.1 and some 7.4.1 test cases — jfdannen / detail
  70. add designP* test cases; fix EXTRUDE/SCALE sensitivity bug; compute Edge and Node sensitivity directly for EXTRUDE; change sensCSM command line option from -addData to -addVerify; change sensCSM to only look at Edge and Face sensitivities at interior points; change serveCSM command line option from -sensTess to -tessel; get Edge and Node sensitivities directly from the source rather than from the Faces; simplify algorithm for find tessellation sensitivities on Edges; remove testing of Face normals and Segment direction in -tessel checks in sensCSM; fix numerous sensitivity bugs — jfdannen / detail
  71. add range to ocsmPrintBrep; refactor sensitivity code and remove redundant functions; update makeFace for upcoming EGADS update — jfdannen / detail
  72. Missed 2020 — haimes / detail
  73. change copyright notice to 2021 — jfdannen / detail
  74. add ocsmSetBnds to ocsm.def; update memory management in pyOCSM — jfdannen / detail
  75. fix memory leaks associated with deleting an Attribute or Csystem; move PrintEgo to top level in pyOCSM — jfdannen / detail
  76. do not check Body index in ocsmGetEgo is asking for context; fix memory management in pyOCSM — jfdannen / detail
  77. update 7.4.1 .csen files for design1b and design4 — jfdannen / detail
  78. rename designL3* and designL4* test cases until recursive RULEs/BLENDs can be properly handled — jfdannen / detail
  79. fix bug associated in sensitivities for SOLBEG/SOLEND — jfdannen / detail
  80. mark function argument as unused to avoid lint warning — jfdannen / detail
  81. update .csen data for 7.3.1 — jfdannen / detail
  82. minor comment updates — jfdannen / detail
  83. fix memory leak in ocsmLoadDict; add copyright statement to pyOCSM; fix a few problems in pyOCSM; remove all references to SUPIN from Makefiles — jfdannen / detail
  84. add studentGallery/espRacer; during sensitivities, get Edge history from adjoining Faces; fix bug that sometimes incorrectly set the .ibody or .iford for Edges; get velocity on Edges from PRIMITIVE or GROWN directly (ie, not via the adjoinig Faces); fix _edgeID for cases with a BOOLEAN after multiple RESTOREs; fix sensitivities for some cases with LINES; fix bug that occurred during a rebuild for a Parameter that was DIMENSIONed but not set; increase MAX_NAME_LEN from 32 to 64; automatically add missing semi-colon to end of argument in SOLBEG statement; add designM* test cases; compute sensitivities associated with SOLBEG/SOLEND; add designN* test cases; add -skipHelp command line argument to test_pyOCSM — jfdannen / detail
  85. remove another unused variable — jfdannen / detail
  86. remove unused variable to prevent warnings — jfdannen / detail
  87. extend EXTRUDE to create a WireBody if its input is a NodeBody; add extrudeB test case; simplify sensitivity calculations for primitives; improve messages if error is encountered in sensCSM; add designL* test cases; change offset in Edge.iford from 100 to 10000; modify select1a, select1b, and select2 test cases; add blend_nacelle test case; add -allVels command line option to serveCSM to compute velocities for Edges and Nodes as well as Faces; add _hist attribute to WireBodys; add udfPrintEgo; fix bug that did not reset hasC0blend flag in ocsmBuild; update udpBiconvex so that there is not restriction on camber; improve sensitivity calculations; return useful error message when SUBTRACTion of a SheetBody from a SolidBody fails during the imprint operation; update some sensitivity verification data; rename pyOcsm to pyOCSM; update pyOCSM to use EGOs directly (instead of void pointers) — jfdannen / detail
  88. extend RULE and BLEND to create WireBodys if all inputs are NodeBodys; check for repeated Xsects at beginning and end of RULE and BLEND; add rule27* and blend27* test cases — jfdannen / detail
  89. fix memory leak in joinSheetBodys — jfdannen / detail
  90. fix bug in createTessVels that did not compute Node sensitivities correctly for WireBodys; add more sensitivity checks to testPyOcsm — jfdannen / detail
  91. fix output during execution of SELECT statement; fix sensitivity bug when computed by sensitivities and the velocity of a mass property is needed; add GetTessVel checks to pyOcsm; update ocsmGetValu to get the correct dot for an OUTPMTR — jfdannen / detail
  92. reformulate windtunnel7 test case to eliminate EGADS warnings; use EG_fuseSheets when UNIONing SheetBodys; update verification tests to account for fewer Nodes; modify JOIN so that it only works if there are common Edges in SheetBodys or Faces in SolidBodys; add joinUnion* test cases; update some verification data to be consistent with JOINs new rules — jfdannen / detail
  93. fix bug in recycle checker when different Branch types are detected — jfdannen / detail
  94. dummy print of unused variables to avoid gcc compiler warnings — jfdannen / detail
  95. fix bug in ocsmLoad if unrecognized filename is given; disable recycling if a file edited in ESP editor changes the type, name, any arguments, or any attributes on a Branch; add colors.dict, which defines the standard RGB color table, to the data directory — jfdannen / detail
  96. fix bugs in prior build associated with ocsmNewBrch; cosmetic changes in pyOcsm; number tests in testPyOcsm — jfdannen / detail
  97. fix recently-introduced bug in last commit — jfdannen / detail
  98. report an error if the child script in udpCsm.c does not leave a Body on the stack; extend CONPMTRs so that they can be arrays of numbers; modify ocsmLoadDict so that CONPMTRs can be defined with multiple values — jfdannen / detail
  99. modify sketch8* test cases; extend ocsmNewBrch to add all the appropriate Branches if a UDC is added; modify testPyOcsm to test adding a UDC via NewBrch — jfdannen / detail
  100. fix for mkdir differences between LINUX and WIN64 — jfdannen / detail
  101. modify pyOcsm to make it more pythonic; add ocsmGetEgo to OpenCSM API and pyOcsm; add sketch8 test case (for testing sensitivities); fix ESP bug that accidentally disabled buttons in Sketcher and Gloves; rename ocsmGetEnt to ocsmFindEnt to make its name more representative of what it does; change way tmp_OpenCSM_ files are handled so that only those associated with a specific MODL are removed when ocsmFree is called; add pyOcsm/inline.csm and modify testPyOcsm.py to test — jfdannen / detail
  102. add ocsmGetTessNpnt and ocsmGetEnt to OpenCSM API; change function signatures of ocsmPrintAttrs, ocsmPrintBodys, ocsmPrintBrchs, ocsmPrintBrep and ocsmPrintPmtrs to use a filename instead of a file pointer; rewrite pyOcsm to use python.ctypes (rather than the C code that only worked in Python 2.x); add testPyOcsm.py to test pyOcsm.py — jfdannen / detail
  103. allow the BOX command to create a NodeBody; get velocities correct for the BOX command when generating a WireBody or NodeBody; allow one to retrieve the velocities of the @parameters associated with the mass properties; change MALLOC and FREE macros in common.h to use EG_alloc and EG_free; add massprop* test cases; update ocsmFindPmtr so that if type=0, it will not create a new Parameter and will return ipmtr=0 if Parameter is not found at the global scope — jfdannen / detail
  104. fix bug in previous commit — jfdannen / detail
  105. fix bug in previous commit — jfdannen / detail
  106. when changing DisplayType to 0 in ESP, do not ask for upper and lower limits; improve ESP MessageWindow messages when there is a problem in a UDP/UDF — jfdannen / detail
  107. fix message returned to ESP when an error is detected while processing the arguments to a UDPRIM; make messages returned to ESP by udpBox, udpImport, udpNaca, udpSample, udpSupell, udpWaffle, amd udfEditAttr more explanatory — jfdannen / detail
  108. fix error handling when EG_hollowBody fails; add message to serveCSM summary to tell if verification was requested but a .vfy file could not be found — jfdannen / detail
  109. write CFGPMTRs in ocsmSaveDespmtrs — jfdannen / detail
  110. Undo some previous changes — galbramc / detail
  111. Another small fix — galbramc / detail
  112. Minor script cleanup — galbramc / detail
  113. Ignore plugs5a — galbramc / detail
  114. Fix macys environment — galbramc / detail
  115. Fix not equal for Windoze — galbramc / detail
  116. Fix Windoze jenkins script bug for pyOCSM. — galbramc / detail
  117. Finally working. Remove debug output — galbramc / detail
  118. Try adding DYLD_LIBRARY_PATH — galbramc / detail
  119. Infinite loops are bad — galbramc / detail
  120. Maybe finally right — galbramc / detail
  121. Found typo — galbramc / detail
  122. More debugging — galbramc / detail
  123. One more try at memcheck on macOS — galbramc / detail
  124. Debug information — galbramc / detail
  125. Non framework python — galbramc / detail
  126. Enable memcheck for python on macOS — galbramc / detail
  127. Avoid false positives — galbramc / detail
  128. Fix sanitize script type. unbuffer python stdout. — galbramc / detail
  129. Add OpenCSM/pyOCSM to Ocsm test matrix — galbramc / detail
  130. Move pyOCSM memcheck and valgrind testing to OpenCSM/data/basic — galbramc / detail
  131. Add pyOCSM testing — galbramc / detail
  132. Fix make memory leak suppression — galbramc / detail
  133. Suppress memory leaks in Make — galbramc / detail
  134. Fix path — galbramc / detail
  135. pyEGADS does not work with Python2 — galbramc / detail
  136. Windoze build fixes — galbramc / detail
  137. Build fixes — galbramc / detail
  138. EGADS udp build depends on OpenCSM build — galbramc / detail
  139. Update testing for EGADS — galbramc / detail
  140. Ignore plugs3d.csm for now — galbramc / detail
  141. Upgrade Cart3D — galbramc / detail
  142. Globbig is different in a script... — galbramc / detail
  143. Bettery way to find gcc — galbramc / detail
  144. Upgrade to gcc-10 on macOS — galbramc / detail
  145. Update AFLR version — galbramc / detail
  146. Upgrade to valgrind 3.16.1 — galbramc / detail
  147. Suppress tetgen sanitizer pointer alignment — galbramc / detail