Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
name: Build Project

on:
workflow_call:
pull_request:
branches:
- main
jobs:
build:
name: Build Release

strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
include:
- os: ubuntu-latest
release_suffix: out
- os: windows-latest
release_suffix: exe
- os: macos-latest
release_suffix: out
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v2

- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.0'

- name: Install Ceedling
run: gem install ceedling

- name: Build Release
run: ceedling release


- name: Rename build binary
shell: pwsh
run: Move-Item -Path build/release/flowVC.out -Destination build/release/flowVC.${{ matrix.release_suffix}}

- name: Upload Build Artifact
uses: actions/upload-artifact@v4
with:
name: flowVC_${{ runner.os }}
path: build/release/flowVC.${{ matrix.release_suffix}}
overwrite: true
18 changes: 5 additions & 13 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
push:
branches:
- main
- alpha


jobs:
semantic-release:
Expand All @@ -27,19 +27,11 @@ jobs:
with:
node-version: "lts/*"

- name: Generate Release using Docker
run: |
docker run \
--interactive \
--rm \
-u $(id -u):$(id -g) \
--volume .:/home/dev/project \
throwtheswitch/madsciencelab-plugins:1.0.0 \
ceedling release
- name: Build Release
uses: ./.github/workflows/build.yml

- name: Prepare prerelease semantic
if: github.ref != 'refs/heads/main'
run: mv .releaserc.prerelease.json .releaserc.json
- name: Download Artifacts
uses: actions/download-artifact@v4

- name: Semantic Release
uses: cycjimmy/semantic-release-action@v4
Expand Down
2 changes: 1 addition & 1 deletion .releaserc.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
[
"@semantic-release/github",
{
"assets": ["build/release/flowVC.out"]
"assets": ["flowVC_Linux", "flowVC_Windows", "flowVC_macOS"]
}
],
"@semantic-release/git"
Expand Down
61 changes: 7 additions & 54 deletions makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,15 @@ else
endif

.PHONY: clean
.PHONY: test
.PHONY: all

PATHU = unity/src/
PATHS = src/
PATHT = test/
PATHB = build/
PATHD = build/depends/
PATHO = build/objs/
PATHR = build/results/
PATHB = build/release/
PATHD = build/release/dependencies/
PATHO = build/release/out/

BUILD_PATHS = $(PATHB) $(PATHD) $(PATHO) $(PATHR)
BUILD_PATHS = $(PATHB) $(PATHD) $(PATHO)

SRCT = $(wildcard $(PATHT)*.c)

Expand All @@ -36,10 +33,10 @@ LFLAG= -lm

# Set build mode
ifeq ($(mode),debug)
CFLAGS = -g -Wall -O0 -I. -I$(PATHU) -I$(PATHS) -DTEST -DUNITY_INCLUDE_CONFIG_H -DDEBUG_LEVEL=1
CFLAGS = -g -Wall -O0 -I. -I$(PATHS) -DDEBUG_LEVEL=1
else
mode = release
CFLAGS = -Wall -O3 -I. -I$(PATHU) -I$(PATHS) -DTEST -DUNITY_INCLUDE_CONFIG_H
CFLAGS = -Wall -O3 -I. -I$(PATHS)
endif


Expand Down Expand Up @@ -74,44 +71,6 @@ $(PATHO)%.o: $(PATHS)%.c
$(COMPILE) $(CFLAGS) $< -o $@




############################ Testing #######################################
############################################################################

RESULTS = $(patsubst $(PATHT)Test%.c,$(PATHR)Test%.txt,$(SRCT) )

PASSED = `grep -s PASS $(PATHR)*.txt`
FAIL = `grep -s FAIL $(PATHR)*.txt`
IGNORE = `grep -s IGNORE $(PATHR)*.txt`

test: $(BUILD_PATHS) $(RESULTS)
@echo "-----------------------\nIGNORES:\n-----------------------"
@echo "$(IGNORE)"
@echo "-----------------------\nFAILURES:\n-----------------------"
@echo "$(FAIL)"
@echo "-----------------------\nPASSED:\n-----------------------"
@echo "$(PASSED)"
@echo "\nDONE"

$(PATHR)%.txt: $(PATHB)%.$(TARGET_EXTENSION)
-./$< > $@ 2>&1

$(PATHB)Test%.$(TARGET_EXTENSION): $(PATHO)Test%.o $(PATHO)%.o $(PATHO)unity.o build/objs/io.o
$(LINK) -o $@ $^ $(LFLAG)

$(PATHO)%.o:: $(PATHT)%.c
$(COMPILE) $(CFLAGS) $< -o $@

$(PATHO)%.o:: $(PATHS)%.c
$(COMPILE) $(CFLAGS) $< -o $@

$(PATHO)%.o:: $(PATHU)%.c $(PATHU)%.h
$(COMPILE) $(CFLAGS) $< -o $@

$(PATHD)%.d:: $(PATHT)%.c
$(DEPEND) $@ $<

$(PATHB):
$(MKDIR) $(PATHB)

Expand All @@ -121,19 +80,13 @@ $(PATHD):
$(PATHO):
$(MKDIR) $(PATHO)

$(PATHR):
$(MKDIR) $(PATHR)


clean:
$(CLEANUP) $(PATHO)*.o
$(CLEANUP) $(PATHB)*.$(TARGET_EXTENSION)
$(CLEANUP) $(PATHR)*.txt

.PRECIOUS: $(PATHB)Test%.$(TARGET_EXTENSION)
.PRECIOUS: $(PATHD)%.d
.PRECIOUS: $(PATHO)%.o
.PRECIOUS: $(PATHR)%.txt




Expand Down
16 changes: 8 additions & 8 deletions src/integration.c
Original file line number Diff line number Diff line change
Expand Up @@ -517,21 +517,21 @@ double RK4(LagrangianPoint *pt, double tstart, double tend) {
MP2.X[0] = pt->X[0] + 0.5 * k1[0] * h;
MP2.X[1] = pt->X[1] + 0.5 * k1[1] * h;
MP2.X[2] = pt->X[2] + 0.5 * k1[2] * h;
if(Data_MeshType == CARTESIAN && Data_XPeriodic == SPATIALPERIODIC) ReMapPt(&MP2, &MP2.X);
if(Data_MeshType == CARTESIAN && Data_XPeriodic == SPATIALPERIODIC) ReMapPt(&MP2, MP2.X);
GetVelocity(tc + h/2, &MP2, k2);

/* k3 */
MP3.X[0] = pt->X[0] + 0.5 * k2[0] * h;
MP3.X[1] = pt->X[1] + 0.5 * k2[1] * h;
MP3.X[2] = pt->X[2] + 0.5 * k2[2] * h;
if(Data_MeshType == CARTESIAN && Data_XPeriodic == SPATIALPERIODIC) ReMapPt(&MP3, &MP3.X);
if(Data_MeshType == CARTESIAN && Data_XPeriodic == SPATIALPERIODIC) ReMapPt(&MP3, MP3.X);
GetVelocity(tc + h/2, &MP3, k3);

/* k4 */
MP4.X[0] = pt->X[0] + k3[0] * h;
MP4.X[1] = pt->X[1] + k3[1] * h;
MP4.X[2] = pt->X[2] + k3[2] * h;
if(Data_MeshType == CARTESIAN && Data_XPeriodic == SPATIALPERIODIC) ReMapPt(&MP4, &MP4.X);
if(Data_MeshType == CARTESIAN && Data_XPeriodic == SPATIALPERIODIC) ReMapPt(&MP4, MP4.X);
GetVelocity(tc + h, &MP4, k4);

/* Update position, time, and (if needed) element index */
Expand Down Expand Up @@ -686,39 +686,39 @@ double RKF(LagrangianPoint *pt, double tstart, double tend) {
MP2.X[0] = pt->X[0] + 0.25 * k1[0] * h;
MP2.X[1] = pt->X[1] + 0.25 * k1[1] * h;
MP2.X[2] = pt->X[2] + 0.25 * k1[2] * h;
if(Data_MeshType == CARTESIAN && Data_XPeriodic == SPATIALPERIODIC) ReMapPt(&MP2, &MP2.X);
if(Data_MeshType == CARTESIAN && Data_XPeriodic == SPATIALPERIODIC) ReMapPt(&MP2, MP2.X);
ts = tc + 0.25 * h;
GetVelocity(ts, &MP2, k2);

/* k3 */
MP3.X[0] = pt->X[0] + (a3 * k1[0] + b3 * k2[0]) * h;
MP3.X[1] = pt->X[1] + (a3 * k1[1] + b3 * k2[1]) * h;
MP3.X[2] = pt->X[2] + (a3 * k1[2] + b3 * k2[2]) * h;
if(Data_MeshType == CARTESIAN && Data_XPeriodic == SPATIALPERIODIC) ReMapPt(&MP3, &MP3.X);
if(Data_MeshType == CARTESIAN && Data_XPeriodic == SPATIALPERIODIC) ReMapPt(&MP3, MP3.X);
ts = tc + 0.375 * h;
GetVelocity(ts, &MP3, k3);

/* k4 */
MP4.X[0] = pt->X[0] + (a4 * k1[0] + b4 * k2[0] + c4 * k3[0]) * h;
MP4.X[1] = pt->X[1] + (a4 * k1[1] + b4 * k2[1] + c4 * k3[1]) * h;
MP4.X[2] = pt->X[2] + (a4 * k1[2] + b4 * k2[2] + c4 * k3[2]) * h;
if(Data_MeshType == CARTESIAN && Data_XPeriodic == SPATIALPERIODIC) ReMapPt(&MP4, &MP4.X);
if(Data_MeshType == CARTESIAN && Data_XPeriodic == SPATIALPERIODIC) ReMapPt(&MP4, MP4.X);
ts = tc + (12.0 * h) / 13.0;
GetVelocity(ts, &MP4, k4);

/* k5 */
MP5.X[0] = pt->X[0] + (a5 * k1[0] + b5 * k2[0] + c5 * k3[0] + d5 * k4[0]) * h;
MP5.X[1] = pt->X[1] + (a5 * k1[1] + b5 * k2[1] + c5 * k3[1] + d5 * k4[1]) * h;
MP5.X[2] = pt->X[2] + (a5 * k1[2] + b5 * k2[2] + c5 * k3[2] + d5 * k4[2]) * h;
if(Data_MeshType == CARTESIAN && Data_XPeriodic == SPATIALPERIODIC) ReMapPt(&MP5, &MP5.X);
if(Data_MeshType == CARTESIAN && Data_XPeriodic == SPATIALPERIODIC) ReMapPt(&MP5, MP5.X);
ts = tc + h;
GetVelocity(ts, &MP5, k5);

/* k6 */
MP6.X[0] = pt->X[0] + (a6 * k1[0] + b6 * k2[0] + c6 * k3[0] + d6 * k4[0] + e6 * k5[0]) * h;
MP6.X[1] = pt->X[1] + (a6 * k1[1] + b6 * k2[1] + c6 * k3[1] + d6 * k4[1] + e6 * k5[1]) * h;
MP6.X[2] = pt->X[2] + (a6 * k1[2] + b6 * k2[2] + c6 * k3[2] + d6 * k4[2] + e6 * k5[2]) * h;
if(Data_MeshType == CARTESIAN && Data_XPeriodic == SPATIALPERIODIC) ReMapPt(&MP6, &MP6.X);
if(Data_MeshType == CARTESIAN && Data_XPeriodic == SPATIALPERIODIC) ReMapPt(&MP6, MP6.X);
ts = tc + 0.5 * h;
GetVelocity(ts, &MP6, k6);

Expand Down