diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9056389c..b6bb9a86 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ The Common Model Library accepts new models and updates to existing models from NASA simulation-developing groups and any other groups to whom CML provides value. Before -submitting changes, please look at our [coding standards](docs/CML_Coding_Standards.pdf) +submitting changes, please look at our [coding standards](docs/CML_Coding_Standards.rst) in the `docs` folder. If you're using an older version of CML, please also double check that the changes you're proposing have not already been integrated into CML in a more recent release. @@ -58,7 +58,7 @@ When submitting a new model to CML, you must provide: Models must meet NPR 7150.2 Class A, B, C, or D to be accepted into CML. Additionally, all new models must have unit tests which cover at least 90% of source code lines and -must be submitted alongside documentation which adequately describes the model. See the [coding standards](docs/CML_Coding_Standards.pdf) for more information. +must be submitted alongside documentation which adequately describes the model. See the [coding standards](docs/CML_Coding_Standards.rst) for more information. Models must also provide sufficient value to CML to be accepted. Trivial models which contain only a handful of lines of code can add a large maintenance burden to the CML team @@ -111,4 +111,4 @@ You may use AI tools when contributing to CML, subject to the following guidelin Before marking a pull request as ready for review, please ensure that any AI-generated code, documentation, and tests adhere to our contribution guidelines and coding -standards. \ No newline at end of file +standards. diff --git a/docs/CML_Coding_Standards.docx b/docs/CML_Coding_Standards.docx deleted file mode 100644 index 3d5be12f..00000000 --- a/docs/CML_Coding_Standards.docx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9a258b78eab5dcb4d0bd93713e1c6595cc3736efcb8accff135c3b71510e7a34 -size 96548 diff --git a/docs/CML_Coding_Standards.pdf b/docs/CML_Coding_Standards.pdf deleted file mode 100644 index 3f16d5f7..00000000 Binary files a/docs/CML_Coding_Standards.pdf and /dev/null differ diff --git a/docs/CML_Coding_Standards.rst b/docs/CML_Coding_Standards.rst new file mode 100644 index 00000000..d4eb3535 --- /dev/null +++ b/docs/CML_Coding_Standards.rst @@ -0,0 +1,545 @@ +============================================= + Common Model Library (CML) Coding Standards +============================================= + +.. list-table:: Revision History + :widths: 30 30 70 + + * - Identifier + - Release date + - Description + * - v0.1 (Baseline) + - 03/31/2026 + - Initial CML coding standards + * - v0.2 + - 07/21/2026 + - Changed GitLab references to GitHub and converted to reStructuredText + +.. table:: + :align: center + :width: 100% + + +----------------+---------------+ + | Prepared by | Approved by | + +================+===============+ + | Nino Tarantino | Daniel Jordan | + | | | + | CML Maintainer | CML Lead | + | | | + | 03/31/2026 | 03/31/2026 | + +----------------+---------------+ + +.. contents:: Table of Contents + +Introduction +============ + +This document provides the formal code standards that are used within the Common Model Library (CML) team. The coding +standards in this document are designed to protect the reliability, maintainability, and usability of the library while +avoiding overly restrictive standards that may prevent some simulation teams from easily contributing their models to +CML. These standards are written based on generally accepted best practices in industry as well as lessons learned from +experienced developers in the Trick-based simulation field at NASA JSC. These standards are expected to mature and +develop over time. + +Purpose +------- + +Coding standards are used in large software development projects because they provide multiple benefits to the +organization developing the software application. These benefits are seen as critical for the CML team developing and +maintaining complex and high-fidelity time-domain simulation models used for spacecraft analysis. + +Scope +----- + +The coding standards listed in this document apply only to the developed code associated with models under the control +of the CML team. These coding standards do not apply to external packages such as Trick, JEOD, or any other third-party +dependency. + +Change Authority/Responsibility +------------------------------- + +Proposed changes to this document shall be submitted as a GitHub issue or via email to the CML team for consideration +and disposition with the team lead. + +Applicable Documents +-------------------- + +The following documents include specifications, models, standards, guidelines, handbooks, and other special +publications. The documents listed in this product are applicable to the extent specified herein. + +.. list-table:: + :widths: 30 30 70 + :header-rows: 1 + + * - Document Number + - Document Revision + - Document Title + * - NASA-STD-7009 + - A.1 + - Standard for Models and Simulations + * - NPR 7150.2 + - C + - NASA Software Engineering Requirements + +Reference Documents +------------------- + +The following documents contain supplemental information to guide the user in the application of this document. + +.. list-table:: + :widths: 50 50 50 + + * - Document Number + - Document Revision + - Document Title + * - + - + - + +Coding Standards +================ + +This section describes the coding standards and how they apply to the software development workflow. The purpose of +having coding standards is to ensure that a project's code base not only functions correctly but is also readable +modifiable, and maintainable. The code that comes into the library must be easily reviewable and not threaten the +stability of the library itself. With these goals in mind, the CML Coding Standards fall in two categories: + +- `Model coding standards `_ – These coding standards should be met upon a developer’s Pull + Request Review. These standards are intended to ensure the quality, stability, and cohesiveness of CML. + Non-compliances will be identified in the review and evaluated for risk to integration into the library. +- `Best practice coding standards `_ – These coding standards should be met as early as + possible but are not required to be met upon a developer’s Pull Request Review. These standards are intended to + ensure that the codebase follows modern best practices. Non-compliances will be evaluated for risk to the library and + documented in a follow-on GitHub issue for future resolution if necessary. + +Application and Enforcement +--------------------------- + +New models submitted to CML must first pass through a Pull Request Review. During the review, the submitting group +provides CML with the NASA NPR 7150.2 classification of the model and evidence of NASA-STD-7009 compliance. The CML team +will review the documentation provided and will check the models submitted for adherence to the coding standards. Many +of the model coding standards are checked with assistance from automated tooling, which reduces the amount of manual +review necessary. + +Updates to existing CML code will also be checked for adherence to the coding standards during a Pull Request Review. +Unlike a new model submission, NPR 7150.2 and NASA-STD-7009 documentation is not required unless the model’s +classification has changed. + +Model Coding Standards +---------------------- + +These standards cover the attributes of the source code required for CML models and must be met before acceptance of the +source code into the main branch of the CML codebase. + +Model Coding Standards are broken into categories depending on the language used. CML-MCS-GENERAL standards apply to all +code, regardless of language. CML-MCS-CPP standards apply to C++ code. CML-MCS-PYTHON standards apply to Python code. + +**CML-MCS-GENERAL-1**: All Trick-based simulation model code shall be written in the C++ programming language ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Trick simulation models should be written in C++. Other programming languages, such as C, are not allowed +to be used for model implementation. Autocoded models from MATLAB or Simulink source are not considered to have been +written in C++. + +**Enforcement**: Static analysis and Pull Request Review. + +**CML-MCS-GENERAL-2**: All scripts required to maintain model code must be committed at the time of Pull Request Review ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Some models may contain data or other content that was automatically generated by means of a script. +These scripts must also be committed and live alongside the model so that the model may be properly maintained. + +**Enforcement**: Pull Request Review. + +**CML-MCS-GENERAL-3**: Source code shall not contain ITAR, EAR, or CUI data ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: CML is an open-source project and must not contain sensitive data. + +**Enforcement**: Pull Request Review. + +**CML-MCS-GENERAL-4**: Source code shall be formatted in accordance with a common stylesheet +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Consistent codebases are easier to use and maintain. Automated code formatting ensures that the git +history contains only impactful changes to the code rather than formatting tweaks. The specific formatting +enforcement tool and stylesheet may differ between languages. + +**Enforcement**: Static analysis operating off of a common stylesheet available to developers and users. + +**CML-MCS-GENERAL-5**: Commented-out code shall only be allowed when accompanied by an associated project issue, point of contact email address, and current date ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Commented-out code should be rare. When it is included in the codebase, there should be an expectation +that the code will be un-commented or removed by a certain date. + +**Enforcement**: Pull Request Review. + +**Example** + +.. code-block:: cpp + + // TODO jane.doe@nasa.gov 01/01/2000: uncomment when addressing issue #1. + //my_type.nonexistent_field = 1; + +**CML-MCS-CPP-1**: Source code shall live within the “cml” C++ namespace +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Namespaces prevent name collisions between CML-defined types and the types defined by consumers of the +CML library. + +**Enforcement**: Pull Request Review. + +**Example** + +.. code-block:: cpp + + namespace cml { + + struct MyType { + }; + + void my_function(int my_param); + + } + +**CML-MCS-CPP-2**: Header files shall direct Trick to place generated interface code in the “cml” Python module via the Trick header “PYTHON MODULE” directive +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Trick provides the option to generate Python interface code into a specific Python module rather than in +the global “trick” scope. This prevents name collisions between CML-defined types and the types defined by Trick or +consumers of the CML library. + +**Enforcement**: Static analysis. + +**Example** + +.. code-block:: cpp + + /* PURPOSE: (My purpose) + * + * PYTHON_MODULE: (cml) + */ + +**CML-MCS-CPP-3**: Source code shall use the .hh file extension for headers and the .cc file extension for source files ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Consistent codebases are easier to use and maintain. + +**Enforcement**: Static analysis. + +**CML-MCS-CPP-4**: Functions and types limited in scope to the implementation details of a module shall be placed in an unnamed namespace within the corresponding module source file ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Exposing internal implementation details in public headers slows down Trick interface code generation and +may confuse users. Unnamed namespaces are the modern equivalent to static functions and types declared at the file-level. + +**Enforcement**: Pull Request Review. + +**Example** + +.. code-block:: cpp + + // Within myfile.cc + namespace { + + void some_local_function() { + } + + } + +**CML-MCS-CPP-5**: Structs shall be used only for passive objects with all public fields that have no invariants +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Structs are widely understood by the C++ community to carry data with no invariants. Although structs may +have protected or private fields, if such encapsulation is necessary, then classes should be used. + +**Enforcement**: Pull Request Review. + +**Examples** + +.. code-block:: cpp + + struct JustSomeData { + int int_data {}; + double double_data {1.0}; + std::string string_data {"Some Data"}; + }; + + class EncapsulationNecessary { + public: + void set_coefficient_of_friction(double coefficient_of_friction_in) { + if (coefficient_of_friction_in >= 0.0) { + coefficient_of_friction = coefficient_of_friction_in; + } else { + throw_some_error(); + } + } + + private: + double coefficient_of_friction {}; + }; + +**CML-MCS-CPP-6**: Source code shall compile with no warnings ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Compiler warnings signify that something may be wrong with the code and should rarely be ignored. + +**Enforcement**: Automated builds in GitHub Actions treat warnings as errors. + +**CML-MCS-CPP-7**: Source code shall pass review by linters without generating any warnings ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Linters such as ``cppcheck`` and ``clang-tidy`` are widely used in industry and provide meaningful +feedback on potential code quality issues. These warnings should rarely be ignored. + +**Enforcement**: Linters are run in a GitHub Action and produce a failing result upon detecting an error. + +**CML-MCS-CPP-8**: Source code shall have associated unit tests which cover at least 90% of lines with meaningful tests ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Inadequately tested code is prone to introducing regressions and is not fit for use within high-fidelity +spacecraft simulations. + +**Enforcement**: Manual review of code coverage artifacts generated in a GitHub Action during Pull Request Review. + +**CML-MCS-CPP-9**: Source code shall compile using the ISO/IEC 14882 C++17 standard ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: A reasonably recent version of the C++ language should be used by all models to leverage new language +features and maintain interoperability with other open-source libraries. + +**Enforcement**: All toolchains use the minimum supported C++ standard. + +**CML-MCS-CPP-10**: Source code shall have associated documentation which includes, at minimum, the model’s public API, a users’ guide, assumptions and limitations, and details about prior verification and validation activities ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Code without documentation cannot be effectively maintained or used. + +**Enforcement**: Pull Request Review. + +**CML-MCS-PYTHON-1**: Source code shall not call exec(), eval(), or otherwise evaluate an arbitrary string as Python code ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Exceptions thrown within code evaluated by ``exec()`` or other related functions do not provide meaningful +debugging information. These functions also introduce security concerns into the codebase. Use modules and functions +instead of ``exec(open())``. + +**Enforcement**: Pull Request Review. + +**Example, wrong** + +.. code-block:: python + + exec(open("Modified_data/utils.py").read()) + some_function_from_utils() + +**Example, correct** + +.. code-block:: python + + from Modified_data.utils import some_function_from_utils + some_function_from_utils() + +**CML-MCS-PYTHON-2**: Methods which accept keyword arguments shall document all allowable keyword arguments ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Users should not have to read implementation details to determine which keyword arguments are accepted by +a function. + +**Enforcement**: Pull Request Review. + +**Example** + +.. code-block:: python + + def myfunc(*args, **kwargs) -> None: + """Does a few things. + + Keyword arguments: + ------------------ + foo : An instance of Foo + bar : A numeric type such as an int or float + baz : A string-like type + """ + implementation(*args, **kwargs) + +Best Practice Coding Standards +------------------------------ + +These standards cover best practice for the code within CML. These standards are not required to be met at the time of +integration into the main CML branch but should be met as soon as possible afterwards. Like the +`Model Coding Standards `_, CML Best Practice Coding Standards are grouped by programming +language. + +**CML-BP-CPP-1**: Do not define macros +++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Macros cannot be put into a namespace and can be difficult to debug. Use function templates and inline +variables instead. + +**Example, wrong** + +.. code-block:: cpp + + #define ADD_ONE(input) (input + 1) + + #define SPEED_OF_LIGHT 299792458.0 + +**Example, correct** + +.. code-block:: cpp + + template + constexpr Type add_one(const Type& input) { + return input + 1; + } + + inline constexpr double SPEED_OF_LIGHT = 299792458.0; + +**CML-BP-CPP-2**: Do not invoke undefined behavior +++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: The outputs of a program which invokes undefined behavior are suspect. + +**Note**: Most undefined behavior will be caught by static analysis tools and will be required to be addressed during +Pull Request Review. + +**CML-BP-CPP-3**: Do not use global variables ++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Global variables often lead to “spaghetti code” which is difficult to maintain and understand. + +**CML-BP-CPP-4**: Do not use the “new” or “delete” keywords ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: The Trick Memory Manager should be used to allocate memory which must be logged or otherwise available +for Trick-specific purposes. Otherwise, smart pointers provided by the C++ standard library should be used for +dynamic memory management. Both of these options provide automated cleanup of the allocated memory. + +**Example, wrong** + +.. code-block:: cpp + + double* my_vector = new double[num_elements]; + +**Example, correct** using the Trick memory manager + +.. code-block:: cpp + + auto* my_vector = static_cast(trick_TMM->declare_var("double", num_elements)); + +**Example, correct** using smart pointers + +.. code-block:: cpp + + auto my_vector = std:make_unique(num_elements); + +**CML-BP-CPP-5**: Do not allocate significant memory in scheduled simulation jobs ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Trick scheduled jobs are often intended to be run at high frequencies for high-fidelity spacecraft +analysis. Frequently reallocating memory during such jobs introduces performance bottlenecks and is a symptom of bad +design. Some reallocation may be expected during certain simulation events, but most memory allocation should occur +during simulation initialization. + +**CML-BP-CPP-6**: Favor composition over inheritance +++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Frequent use of inheritance can make a codebase difficult to understand. Often, composition allows for +easier code maintenance and testability. + +**CML-BP-PYTHON-1**: Use docstrings ++++++++++++++++++++++++++++++++++++ + +**Rationale**: Python docstrings help users use Python code correctly and are recommended by PEP 257. + +**Example** + +.. code-block:: python + + def foo(bar) -> None: + """Foos a bar.""" + +**CML-BP-PYTHON-2**: Use type annotations ++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Type annotations help address one of the biggest shortcomings of dynamically typed languages, where the +types allowed as inputs or expected as outputs from functions are not always easy to deduce. + +**Example** + +.. code-block:: python + + def connect(port: int, hostname: str) -> StatusCode: + """Attempt to connect to a port on a host.""" + return implementation(port, hostname) + +**CML-BP-PYTHON-3**: Functions should always return the same number of items, preferably only one item +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Functions which return a variable number of arguments depending on the logic path taken are brittle and +require users to understand the inner workings of the function which they are accessing. + +**CML-BP-PYTHON-4**: Do not use classes in code intended for use in Trick input files ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +**Rationale**: Classes are designed to hold state and provide access control to data, while Trick input files are +designed to be a purely procedural interface to a simulation. Frequent overuse of classes in Trick input files has +proven repeatedly to negatively impact code usability and maintainability. Use free functions instead. + +Coding Standards Waiver +----------------------- + +Waivers to any coding standard may be granted on a case-by-case basis when it can be demonstrated that the following +criteria are both met: +1. Safeguards are in place to ensure that the exception does not create a risk to the overall project. +2. The effort required to bring the code to a satisfactory standard would be excessive. + +The request for a waiver is made during Pull Request Review. The request may be in the form of a PowerPoint +presentation, a memo, or any other format capable of conveying the following information: +- Violation (with code) +- Options for mitigation/resolution +- Rationale why the violation is acceptable +- Evaluation of risk to accepting the waiver + +If the waiver is granted, the request must be updated to reflect the approver, date of approval, and this information +must be recorded with the model documentation. The complete list of waivers will be maintained separately for CML +maintenance and metrics purposes. If the waiver is denied, the developer is directed to resolve the violation. + +Appendix A: Acronyms and Abbreviations +====================================== + +.. list-table:: + :widths: 30 70 + + * - Acronym + - Abbreviation + * - CML + - Common Model Library + * - CUI + - Controlled Unclassified Information + * - EAR + - Export Administration Regulations + * - ITAR + - International Traffic in Arms Regulations + * - JEOD + - Johnson Space Center Engineering Orbital Dynamics + * - JSC + - Johnson Space Center + +Appendix B: Glossary of Terms +============================= + +.. list-table:: + :widths: 30 70 + + * - Term + - Description + * - Trick + - An open-source C++/Python driven simulation development framework. See https://github.com/nasa/trick for more + information. + * - Pull Request Review + - When code is ready to be reviewed and accepted into the main production branch of CML, a pull request is opened. + The Pull Request Review is the process by which the code is assessed for compliance with CML's code standards and + other NASA standards by the CML team. \ No newline at end of file diff --git a/models/dynamics/actions/mass_body_detach_impulsive/docs/mass_body_detach_impulsive.pdf b/models/dynamics/actions/mass_body_detach_impulsive/docs/mass_body_detach_impulsive.pdf deleted file mode 100644 index 71afd9f4..00000000 Binary files a/models/dynamics/actions/mass_body_detach_impulsive/docs/mass_body_detach_impulsive.pdf and /dev/null differ diff --git a/models/dynamics/integration/accumulated_absolute_deltas/docs/accumulated_absolute_deltas.pdf b/models/dynamics/integration/accumulated_absolute_deltas/docs/accumulated_absolute_deltas.pdf deleted file mode 100644 index ff5503ea..00000000 Binary files a/models/dynamics/integration/accumulated_absolute_deltas/docs/accumulated_absolute_deltas.pdf and /dev/null differ diff --git a/models/dynamics/integration/scalar_integrable_object/docs/scalar_integrable_object.pdf b/models/dynamics/integration/scalar_integrable_object/docs/scalar_integrable_object.pdf deleted file mode 100644 index 4714ad80..00000000 Binary files a/models/dynamics/integration/scalar_integrable_object/docs/scalar_integrable_object.pdf and /dev/null differ diff --git a/models/dynamics/integration/vector3_integrable_object/docs/integrable_object.pdf b/models/dynamics/integration/vector3_integrable_object/docs/integrable_object.pdf deleted file mode 100644 index 3b6f4a2d..00000000 Binary files a/models/dynamics/integration/vector3_integrable_object/docs/integrable_object.pdf and /dev/null differ diff --git a/models/dynamics/mass/dynamic_mass/docs/dynamic_mass.pdf b/models/dynamics/mass/dynamic_mass/docs/dynamic_mass.pdf deleted file mode 100644 index 630f2fca..00000000 Binary files a/models/dynamics/mass/dynamic_mass/docs/dynamic_mass.pdf and /dev/null differ diff --git a/models/dynamics/mass/mass_body_dispersed_init/docs/mass_body_dispersed_init.pdf b/models/dynamics/mass/mass_body_dispersed_init/docs/mass_body_dispersed_init.pdf deleted file mode 100644 index b454be9e..00000000 Binary files a/models/dynamics/mass/mass_body_dispersed_init/docs/mass_body_dispersed_init.pdf and /dev/null differ diff --git a/models/dynamics/mass/mass_body_distribute_comp_to_core/docs/mass_body_distribute_comp_to_core.pdf b/models/dynamics/mass/mass_body_distribute_comp_to_core/docs/mass_body_distribute_comp_to_core.pdf deleted file mode 100644 index d822edf7..00000000 Binary files a/models/dynamics/mass/mass_body_distribute_comp_to_core/docs/mass_body_distribute_comp_to_core.pdf and /dev/null differ diff --git a/models/dynamics/mass_derivative_dynamics/docs/mass_derivative_dynamics.pdf b/models/dynamics/mass_derivative_dynamics/docs/mass_derivative_dynamics.pdf deleted file mode 100644 index c79709a5..00000000 Binary files a/models/dynamics/mass_derivative_dynamics/docs/mass_derivative_dynamics.pdf and /dev/null differ diff --git a/models/dynamics/state_descriptors/atmos_rel_state/docs/atmos_rel_state.pdf b/models/dynamics/state_descriptors/atmos_rel_state/docs/atmos_rel_state.pdf deleted file mode 100644 index f4821cdd..00000000 Binary files a/models/dynamics/state_descriptors/atmos_rel_state/docs/atmos_rel_state.pdf and /dev/null differ diff --git a/models/dynamics/state_descriptors/earth_moon_rotating_frame/docs/earth_moon_rotating_frame.pdf b/models/dynamics/state_descriptors/earth_moon_rotating_frame/docs/earth_moon_rotating_frame.pdf deleted file mode 100644 index 25d720be..00000000 Binary files a/models/dynamics/state_descriptors/earth_moon_rotating_frame/docs/earth_moon_rotating_frame.pdf and /dev/null differ diff --git a/models/dynamics/state_descriptors/earth_moon_rotating_frame/docs/earth_moon_rotating_frame_presentation.pdf b/models/dynamics/state_descriptors/earth_moon_rotating_frame/docs/earth_moon_rotating_frame_presentation.pdf deleted file mode 100644 index c7b0d526..00000000 Binary files a/models/dynamics/state_descriptors/earth_moon_rotating_frame/docs/earth_moon_rotating_frame_presentation.pdf and /dev/null differ diff --git a/models/dynamics/state_descriptors/extended_planetary_derived_state/docs/extended_planetary_derived_state.pdf b/models/dynamics/state_descriptors/extended_planetary_derived_state/docs/extended_planetary_derived_state.pdf deleted file mode 100644 index 63314e72..00000000 Binary files a/models/dynamics/state_descriptors/extended_planetary_derived_state/docs/extended_planetary_derived_state.pdf and /dev/null differ diff --git a/models/dynamics/state_descriptors/extended_planetary_derived_state/docs/extended_planetary_derived_state_presentation_VV.pdf b/models/dynamics/state_descriptors/extended_planetary_derived_state/docs/extended_planetary_derived_state_presentation_VV.pdf deleted file mode 100644 index d636478d..00000000 Binary files a/models/dynamics/state_descriptors/extended_planetary_derived_state/docs/extended_planetary_derived_state_presentation_VV.pdf and /dev/null differ diff --git a/models/dynamics/state_descriptors/orb_elem_subset/docs/orb_elem_subset.pdf b/models/dynamics/state_descriptors/orb_elem_subset/docs/orb_elem_subset.pdf deleted file mode 100644 index a904dbab..00000000 Binary files a/models/dynamics/state_descriptors/orb_elem_subset/docs/orb_elem_subset.pdf and /dev/null differ diff --git a/models/dynamics/state_descriptors/pointing_ref_frame/docs/pointing_ref_frame.pdf b/models/dynamics/state_descriptors/pointing_ref_frame/docs/pointing_ref_frame.pdf deleted file mode 100644 index b4f7f96b..00000000 Binary files a/models/dynamics/state_descriptors/pointing_ref_frame/docs/pointing_ref_frame.pdf and /dev/null differ diff --git a/models/dynamics/state_descriptors/pointing_ref_frame/docs/pointing_ref_frame_presentation.pdf b/models/dynamics/state_descriptors/pointing_ref_frame/docs/pointing_ref_frame_presentation.pdf deleted file mode 100644 index cb49c833..00000000 Binary files a/models/dynamics/state_descriptors/pointing_ref_frame/docs/pointing_ref_frame_presentation.pdf and /dev/null differ diff --git a/models/dynamics/state_descriptors/range/docs/range.pdf b/models/dynamics/state_descriptors/range/docs/range.pdf deleted file mode 100644 index 366c2c2a..00000000 Binary files a/models/dynamics/state_descriptors/range/docs/range.pdf and /dev/null differ diff --git a/models/dynamics/state_descriptors/separation_state/docs/separation_state.pdf b/models/dynamics/state_descriptors/separation_state/docs/separation_state.pdf deleted file mode 100644 index 6b5aa339..00000000 Binary files a/models/dynamics/state_descriptors/separation_state/docs/separation_state.pdf and /dev/null differ diff --git a/models/dynamics/state_descriptors/simple_planet_rel_state/docs/simple_planet_rel_state.pdf b/models/dynamics/state_descriptors/simple_planet_rel_state/docs/simple_planet_rel_state.pdf deleted file mode 100644 index e9bab2e3..00000000 Binary files a/models/dynamics/state_descriptors/simple_planet_rel_state/docs/simple_planet_rel_state.pdf and /dev/null differ diff --git a/models/dynamics/state_initialize/correlated_state_dispersion/docs/correlated_state_dispersion.pdf b/models/dynamics/state_initialize/correlated_state_dispersion/docs/correlated_state_dispersion.pdf deleted file mode 100644 index d6818a94..00000000 Binary files a/models/dynamics/state_initialize/correlated_state_dispersion/docs/correlated_state_dispersion.pdf and /dev/null differ diff --git a/models/dynamics/state_initialize/state_initialize/docs/state_initialize.pdf b/models/dynamics/state_initialize/state_initialize/docs/state_initialize.pdf deleted file mode 100644 index 932258dd..00000000 Binary files a/models/dynamics/state_initialize/state_initialize/docs/state_initialize.pdf and /dev/null differ diff --git a/models/dynamics/state_initialize/target_relative_parameters/docs/target_relative_parameters.pdf b/models/dynamics/state_initialize/target_relative_parameters/docs/target_relative_parameters.pdf deleted file mode 100644 index 2026f104..00000000 Binary files a/models/dynamics/state_initialize/target_relative_parameters/docs/target_relative_parameters.pdf and /dev/null differ diff --git a/models/dynamics/state_overrides/contact/docs/contact_state_override.pdf b/models/dynamics/state_overrides/contact/docs/contact_state_override.pdf deleted file mode 100644 index 0297e848..00000000 Binary files a/models/dynamics/state_overrides/contact/docs/contact_state_override.pdf and /dev/null differ diff --git a/models/dynamics/state_overrides/contact/docs/contact_state_override_VV.pdf b/models/dynamics/state_overrides/contact/docs/contact_state_override_VV.pdf deleted file mode 100644 index fc7f760d..00000000 Binary files a/models/dynamics/state_overrides/contact/docs/contact_state_override_VV.pdf and /dev/null differ diff --git a/models/dynamics/state_overrides/twist_sway/docs/Twist_sway.pdf b/models/dynamics/state_overrides/twist_sway/docs/Twist_sway.pdf deleted file mode 100644 index 74ddf77c..00000000 Binary files a/models/dynamics/state_overrides/twist_sway/docs/Twist_sway.pdf and /dev/null differ diff --git a/models/dynamics/state_predictors/apsides_predictor/docs/apsides_predictor.pdf b/models/dynamics/state_predictors/apsides_predictor/docs/apsides_predictor.pdf deleted file mode 100644 index 2a70b062..00000000 Binary files a/models/dynamics/state_predictors/apsides_predictor/docs/apsides_predictor.pdf and /dev/null differ diff --git a/models/dynamics/state_predictors/impact_point/docs/impact_point.pdf b/models/dynamics/state_predictors/impact_point/docs/impact_point.pdf deleted file mode 100644 index 452c4eab..00000000 Binary files a/models/dynamics/state_predictors/impact_point/docs/impact_point.pdf and /dev/null differ diff --git a/models/environment/atmos/atmos_exec/docs/atmos_exec.pdf b/models/environment/atmos/atmos_exec/docs/atmos_exec.pdf deleted file mode 100644 index f92d0730..00000000 Binary files a/models/environment/atmos/atmos_exec/docs/atmos_exec.pdf and /dev/null differ diff --git a/models/environment/atmos/atmos_exec/docs/atmos_exec_V&V.pdf b/models/environment/atmos/atmos_exec/docs/atmos_exec_V&V.pdf deleted file mode 100644 index d194e738..00000000 Binary files a/models/environment/atmos/atmos_exec/docs/atmos_exec_V&V.pdf and /dev/null differ diff --git a/models/environment/atmos/atmos_exec/docs/atmos_exec_delta_VV.pdf b/models/environment/atmos/atmos_exec/docs/atmos_exec_delta_VV.pdf deleted file mode 100644 index 07f87564..00000000 Binary files a/models/environment/atmos/atmos_exec/docs/atmos_exec_delta_VV.pdf and /dev/null differ diff --git a/models/environment/atmos/atmosphere_models/DRWP_atmos/docs/DRWP_VV.pdf b/models/environment/atmos/atmosphere_models/DRWP_atmos/docs/DRWP_VV.pdf deleted file mode 100644 index 10279937..00000000 Binary files a/models/environment/atmos/atmosphere_models/DRWP_atmos/docs/DRWP_VV.pdf and /dev/null differ diff --git a/models/environment/atmos/first_order_hold/docs/first_order_hold.pdf b/models/environment/atmos/first_order_hold/docs/first_order_hold.pdf deleted file mode 100644 index 7d92aa58..00000000 Binary files a/models/environment/atmos/first_order_hold/docs/first_order_hold.pdf and /dev/null differ diff --git a/models/environment/atmos/gust/docs/gust.pdf b/models/environment/atmos/gust/docs/gust.pdf deleted file mode 100644 index 600a0734..00000000 Binary files a/models/environment/atmos/gust/docs/gust.pdf and /dev/null differ diff --git a/models/environment/atmos/gust/docs/gust_VV.pdf b/models/environment/atmos/gust/docs/gust_VV.pdf deleted file mode 100644 index e511e6c4..00000000 Binary files a/models/environment/atmos/gust/docs/gust_VV.pdf and /dev/null differ diff --git a/models/environment/atmos/lagged_atmosphere/docs/lagged_atmosphere.pdf b/models/environment/atmos/lagged_atmosphere/docs/lagged_atmosphere.pdf deleted file mode 100644 index f12651e3..00000000 Binary files a/models/environment/atmos/lagged_atmosphere/docs/lagged_atmosphere.pdf and /dev/null differ diff --git a/models/environment/atmos/lagged_atmosphere/docs/lagged_atmosphere_VV.pdf b/models/environment/atmos/lagged_atmosphere/docs/lagged_atmosphere_VV.pdf deleted file mode 100644 index 7c10bbbf..00000000 Binary files a/models/environment/atmos/lagged_atmosphere/docs/lagged_atmosphere_VV.pdf and /dev/null differ diff --git a/models/environment/eclipse_calculator/docs/eclipse_calculator.pdf b/models/environment/eclipse_calculator/docs/eclipse_calculator.pdf deleted file mode 100644 index 647f5c62..00000000 Binary files a/models/environment/eclipse_calculator/docs/eclipse_calculator.pdf and /dev/null differ diff --git a/models/environment/ephemerides/planet_planet_state/docs/planet_planet_state.pdf b/models/environment/ephemerides/planet_planet_state/docs/planet_planet_state.pdf deleted file mode 100644 index bfcb3ffd..00000000 Binary files a/models/environment/ephemerides/planet_planet_state/docs/planet_planet_state.pdf and /dev/null differ diff --git a/models/environment/gravity/fast_gravity/docs/fast_gravity.pdf b/models/environment/gravity/fast_gravity/docs/fast_gravity.pdf deleted file mode 100644 index d55e02d3..00000000 Binary files a/models/environment/gravity/fast_gravity/docs/fast_gravity.pdf and /dev/null differ diff --git a/models/environment/gravity/gravity_fidelity_manager/docs/gravity_fidelity_manager.pdf b/models/environment/gravity/gravity_fidelity_manager/docs/gravity_fidelity_manager.pdf deleted file mode 100644 index f8086dda..00000000 Binary files a/models/environment/gravity/gravity_fidelity_manager/docs/gravity_fidelity_manager.pdf and /dev/null differ diff --git a/models/fhw/effectors/piston_thruster/docs/piston_thruster.pdf b/models/fhw/effectors/piston_thruster/docs/piston_thruster.pdf deleted file mode 100644 index 976842eb..00000000 Binary files a/models/fhw/effectors/piston_thruster/docs/piston_thruster.pdf and /dev/null differ diff --git a/models/fhw/effectors/springs/docs/mass_body_detach_with_springs.pdf b/models/fhw/effectors/springs/docs/mass_body_detach_with_springs.pdf deleted file mode 100644 index f3c06fc0..00000000 Binary files a/models/fhw/effectors/springs/docs/mass_body_detach_with_springs.pdf and /dev/null differ diff --git a/models/fhw/effectors/springs/docs/springs.pdf b/models/fhw/effectors/springs/docs/springs.pdf deleted file mode 100644 index ceeaf2a7..00000000 Binary files a/models/fhw/effectors/springs/docs/springs.pdf and /dev/null differ diff --git a/models/fhw/effectors/vent/docs/vent.pdf b/models/fhw/effectors/vent/docs/vent.pdf deleted file mode 100644 index 242f9e0a..00000000 Binary files a/models/fhw/effectors/vent/docs/vent.pdf and /dev/null differ diff --git a/models/fhw/effectors/vent/docs/vent_presentation.pdf b/models/fhw/effectors/vent/docs/vent_presentation.pdf deleted file mode 100644 index ec1f1d62..00000000 Binary files a/models/fhw/effectors/vent/docs/vent_presentation.pdf and /dev/null differ diff --git a/models/interactions/aero/docs/aero.pdf b/models/interactions/aero/docs/aero.pdf deleted file mode 100644 index 785326b3..00000000 Binary files a/models/interactions/aero/docs/aero.pdf and /dev/null differ diff --git a/models/interactions/subsonic_wake/docs/subsonic_wake.pdf b/models/interactions/subsonic_wake/docs/subsonic_wake.pdf deleted file mode 100644 index 86cdfd89..00000000 Binary files a/models/interactions/subsonic_wake/docs/subsonic_wake.pdf and /dev/null differ diff --git a/models/tools/unit_test/models/docs/unit_test.pdf b/models/tools/unit_test/models/docs/unit_test.pdf deleted file mode 100644 index 0cb404f8..00000000 Binary files a/models/tools/unit_test/models/docs/unit_test.pdf and /dev/null differ diff --git a/models/utilities/bin_counter/docs/bin_counter.pdf b/models/utilities/bin_counter/docs/bin_counter.pdf deleted file mode 100644 index e0dd91a3..00000000 Binary files a/models/utilities/bin_counter/docs/bin_counter.pdf and /dev/null differ diff --git a/models/utilities/bin_counter/docs/bin_counter_presentation.pdf b/models/utilities/bin_counter/docs/bin_counter_presentation.pdf deleted file mode 100644 index 17b94616..00000000 Binary files a/models/utilities/bin_counter/docs/bin_counter_presentation.pdf and /dev/null differ diff --git a/models/utilities/buffers/docs/buffers.pdf b/models/utilities/buffers/docs/buffers.pdf deleted file mode 100644 index 47b6ce1d..00000000 Binary files a/models/utilities/buffers/docs/buffers.pdf and /dev/null differ diff --git a/models/utilities/cml_message/docs/cml_message_VV.pdf b/models/utilities/cml_message/docs/cml_message_VV.pdf deleted file mode 100644 index 02d4fc7c..00000000 Binary files a/models/utilities/cml_message/docs/cml_message_VV.pdf and /dev/null differ diff --git a/models/utilities/color_string/docs/color_string.pdf b/models/utilities/color_string/docs/color_string.pdf deleted file mode 100644 index 3593417e..00000000 Binary files a/models/utilities/color_string/docs/color_string.pdf and /dev/null differ diff --git a/models/utilities/color_string/docs/color_string_presentation.pdf b/models/utilities/color_string/docs/color_string_presentation.pdf deleted file mode 100644 index 45c3ef88..00000000 Binary files a/models/utilities/color_string/docs/color_string_presentation.pdf and /dev/null differ diff --git a/models/utilities/constraint_check/docs/constraint_check.pdf b/models/utilities/constraint_check/docs/constraint_check.pdf deleted file mode 100644 index 665ff907..00000000 Binary files a/models/utilities/constraint_check/docs/constraint_check.pdf and /dev/null differ diff --git a/models/utilities/double_to_words/docs/double_to_words.pdf b/models/utilities/double_to_words/docs/double_to_words.pdf deleted file mode 100644 index 6a50a6e6..00000000 Binary files a/models/utilities/double_to_words/docs/double_to_words.pdf and /dev/null differ diff --git a/models/utilities/double_to_words/docs/double_to_words_C.pdf b/models/utilities/double_to_words/docs/double_to_words_C.pdf deleted file mode 100644 index 405be0d9..00000000 Binary files a/models/utilities/double_to_words/docs/double_to_words_C.pdf and /dev/null differ diff --git a/models/utilities/enhanced_logging/docs/enhanced_logging.pdf b/models/utilities/enhanced_logging/docs/enhanced_logging.pdf deleted file mode 100644 index 3cf2b054..00000000 Binary files a/models/utilities/enhanced_logging/docs/enhanced_logging.pdf and /dev/null differ diff --git a/models/utilities/math_utils/docs/math_utils_presentation.pdf b/models/utilities/math_utils/docs/math_utils_presentation.pdf deleted file mode 100644 index 4bafa87a..00000000 Binary files a/models/utilities/math_utils/docs/math_utils_presentation.pdf and /dev/null differ diff --git a/models/utilities/subscriptions/docs/subscriptions.pdf b/models/utilities/subscriptions/docs/subscriptions.pdf deleted file mode 100644 index 8d9a0cf9..00000000 Binary files a/models/utilities/subscriptions/docs/subscriptions.pdf and /dev/null differ diff --git a/models/utilities/subscriptions/docs/subscriptions_presentation.pdf b/models/utilities/subscriptions/docs/subscriptions_presentation.pdf deleted file mode 100644 index aa9ced31..00000000 Binary files a/models/utilities/subscriptions/docs/subscriptions_presentation.pdf and /dev/null differ diff --git a/models/utilities/trick_logging/docs/trick_logging.pdf b/models/utilities/trick_logging/docs/trick_logging.pdf deleted file mode 100644 index 15c24cf0..00000000 Binary files a/models/utilities/trick_logging/docs/trick_logging.pdf and /dev/null differ diff --git a/models/vehicle_management/commandable_action/docs/commandable_action.pdf b/models/vehicle_management/commandable_action/docs/commandable_action.pdf deleted file mode 100644 index fe22dfa6..00000000 Binary files a/models/vehicle_management/commandable_action/docs/commandable_action.pdf and /dev/null differ diff --git a/models/vehicle_management/compound_events/docs/compound_events.pdf b/models/vehicle_management/compound_events/docs/compound_events.pdf deleted file mode 100644 index 117e85a1..00000000 Binary files a/models/vehicle_management/compound_events/docs/compound_events.pdf and /dev/null differ diff --git a/models/vehicle_management/dummy_vehicle_launcher/docs/dummy_vehicle_launcher.pdf b/models/vehicle_management/dummy_vehicle_launcher/docs/dummy_vehicle_launcher.pdf deleted file mode 100644 index 737300f4..00000000 Binary files a/models/vehicle_management/dummy_vehicle_launcher/docs/dummy_vehicle_launcher.pdf and /dev/null differ diff --git a/models/vehicle_management/events_manager/docs/events_manager.pdf b/models/vehicle_management/events_manager/docs/events_manager.pdf deleted file mode 100644 index fbf5ce4a..00000000 Binary files a/models/vehicle_management/events_manager/docs/events_manager.pdf and /dev/null differ