{"id":26270731,"url":"https://github.com/emapco/ca-project","last_synced_at":"2025-03-14T06:17:02.350Z","repository":{"id":64287635,"uuid":"572779643","full_name":"emapco/CA-project","owner":"emapco","description":"CHEM274B Group Project: Chongye Feng, Emmanuel Cortes, Trevor Oldham","archived":false,"fork":false,"pushed_at":"2022-12-19T23:50:55.000Z","size":463,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2023-12-02T05:30:56.125Z","etag":null,"topics":["cellular-automata","cpp","doxygen","group-project"],"latest_commit_sha":null,"homepage":"https://emapco.github.io/CA-project/html/index.html","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emapco.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-12-01T02:25:44.000Z","updated_at":"2022-12-06T11:20:48.000Z","dependencies_parsed_at":"2023-01-15T08:15:17.601Z","dependency_job_id":null,"html_url":"https://github.com/emapco/CA-project","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emapco%2FCA-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emapco%2FCA-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emapco%2FCA-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emapco%2FCA-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emapco","download_url":"https://codeload.github.com/emapco/CA-project/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243532547,"owners_count":20306157,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cellular-automata","cpp","doxygen","group-project"],"created_at":"2025-03-14T06:17:00.779Z","updated_at":"2025-03-14T06:17:01.955Z","avatar_url":"https://github.com/emapco.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chem 274B - Cellular Automata Final Project\n\nThe repository contains a general-purpose library for create cellular automata models. The cellular automata cell states can be `ints` or `class`/`struct` types. See CAdatatypes.h for information on the `class`/`struct` requirements. The general-purpose library also supports parallelization with the aid of OpenMP. A log file with the cellular states for each step is located in `Data/data.csv`. The log file can be utilized by a plotting Python module for visualizing the cellular automata.\n\nProvided in this repository is an example model that simulates the formation of galaxies using GalaxyCell `class` instances as the cell type. Once the model is compiled (see below for information), you will find an executable called `galaxy_app` (sequential) or optionally `galaxy_app_omp` (parallel). To run the model from root project directory run: `Bindir/galaxy_model`.\n\n\nRequirements for compilation:\n- `g++`\n- `make`\n- `OpenMP` (parallelized code)\n\nRequirements for plotting:\n- `matplotlib`\n- `mpl_toolkits`\n- `numpy`\n\nTo compile the sequential implementation, run:\n- `make sequential`.\n\nTo compile the parallel implementation, run:\n- `make parallel`.\n\nTo compile both, run:\n- `make all`.\n\nTo clean all object files and executables, run:\n- `make cleanall`.\n\n\n## Directories:\n- Applications: contains galaxy model program source code.\n- Bindir: contains executable binary files\n- docs: contains doxygen generated html site\n- Include: contains Header files\n- Libdir: contains compiled object code\n- Source: contains implementation source code\n- Tests: contains unit tests and test programs\n- Utils: contains utility source code for `*util.h` files in the `Include` directory\n\n## Files:\n- Makefile: contains targets for compile the project source code\n- Doxyfile: doxygen documentation generation settings \n\n\n## Updates:\n- 12/3/2022:  Trevor: added basic directory structure, added CAdatatypes.h, added cellularautomata.cpp class functionality, added test_CA.cpp in Tests, added makefiles in /Tests and /Source/Datatypes\n\n- 12/4/2022:  Emmanuel: Added root directory Makefile to call all makefiles in the project. Added README.md files to /Bindir, /Include, and /Libdir subdirectories.\n\n- 12/5/2022:  Emmanuel: Added Doxyfile for generating documentation.\n\n- 12/5/2022:  Trevor: Updated mydatatypes.h to CAdatatypes.h. Added doxygen comment briefs to cellularautomata.cpp methods. \nUpdated test_CA.cpp to test 3d case. And Updated CellularAutomata API.\n\n- 12/5/2022:  Emmanuel: Updated Doxyfile and renamed Docs/ to docs/ for GitHub Pages support. \nResolved bug encountered in test_CA.cpp when initializing a vector or tensor. \nMiscellaneous changes to existing docstrings.\n\n- 12/8/2022:  Emmanuel: Added step function and related functions for computing the next cellular automata state. \nThe step function supports the ability to pass a custom rule function to allow the user to implement their own rules.\nAdded guard clauses to various methods so that the class properly handles failure modes. \nAlso defined a method for printing an error message depending on the error code given.\n\n- 12/10/2022: Emmanuel: Added parallelization with the aid of OpenMP directives. \nUpdated makefiles to create new parallelized targets. The makefiles support Linux and Mac OSX OpenMP systems.\nClass implementation and utility object files are now combined into a single library object file.\n\n- 12/11/2022: Emmanuel: Added templates to CellularAutomata class. Also created a specialized template class for `int` data type.\nAdded utility functions to CAutils.h that are general and will useful for our galaxy model. Add unit tests for CA_utils.cpp.\n\n- 12/14/2022: Emmanuel: Added `galaxydatatypes.h`, `galaxy.cpp`, and an application that runs our model `galaxy_app.cpp` using user input. \nModified makefiles based on Trevor's input so targets compile for MasOS systems and can handle other edge cases. Updated doc.\n\n- 12/16/2022: Chongye: Added `create_log`, `append_log` to CellularAutomata class. Added `Utils/plotting.py` for plotting CellularAutomata data. Added `get_density` function to `CAutils.h` and its implementation to `CA_utils.cpp`.\n\n- 12/16/2022: Emmanuel: Added several remaining methods used by `galaxy_formation_rule` for computing the gravitational force and updating the cellular position using the equations of motion.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femapco%2Fca-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femapco%2Fca-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femapco%2Fca-project/lists"}