From 5a58354c7fc87d1f2641bbdee640ea56a521e242 Mon Sep 17 00:00:00 2001 From: fsiale Date: Wed, 14 Jan 2026 07:45:32 -0800 Subject: [PATCH 1/9] motion01 --- .github/workflows/build_cmake.yml | 148 +++--------------------------- 1 file changed, 14 insertions(+), 134 deletions(-) diff --git a/.github/workflows/build_cmake.yml b/.github/workflows/build_cmake.yml index a6ad63ebd5..1312756a42 100644 --- a/.github/workflows/build_cmake.yml +++ b/.github/workflows/build_cmake.yml @@ -9,125 +9,10 @@ on: workflow_dispatch: -jobs: - build-win: - name: Build Windows VS2022 - runs-on: windows-2022 - steps: - - name: 2.1. Obtaining OpenSees Source Code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Microsoft Visual Studio - uses: ilammy/msvc-dev-cmd@v1 - with: - vsversion: 2022 - - name: Intel oneAPI Basic & HPC Toolkits - shell: pwsh - env: - WINDOWS_BASEKIT_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/7dff44ba-e3af-4448-841c-0d616c8da6e7/w_BaseKit_p_2024.1.0.595_offline.exe - WINDOWS_BASEKIT_COMPONENTS: intel.oneapi.win.mkl.devel - WINDOWS_HPCKIT_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/c95a3b26-fc45-496c-833b-df08b10297b9/w_HPCKit_p_2024.1.0.561_offline.exe - WINDOWS_HPCKIT_COMPONENTS: "intel.oneapi.win.mpi.devel:intel.oneapi.win.ifort-compiler" - working-directory: D:\a\OpenSees\OpenSees\.github\workflows - run: | - ./install_fortran.bat $env:WINDOWS_BASEKIT_URL $env:WINDOWS_BASEKIT_COMPONENTS - ./install_fortran.bat $env:WINDOWS_HPCKIT_URL $env:WINDOWS_HPCKIT_COMPONENTS - - name: Python 3.11 - uses: actions/setup-python@v5 - with: - python-version: "3.11" - - name: Conan 1.x - run: pip install conan<2.0 - - name: MUMPS - shell: cmd - run: | - git clone https://github.com/OpenSees/mumps.git - cd mumps - mkdir build - cd build - call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat" intel64 mod - cmake .. -Darith=d -DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreaded" -G Ninja - cmake --build . --config Release --parallel 4 - - name: 2.2.2. Building the OpenSees Applications and Python module - shell: cmd - run: | - mkdir build - cd build - conan install .. --build missing --settings compiler="Visual Studio" --settings compiler.runtime="MT" --settings compiler.version=16 - call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat" intel64 mod - cmake .. -DBLA_STATIC=ON -DMKL_LINK=static -DMKL_INTERFACE_FULL=intel_lp64 -DMUMPS_DIR="..\..\mumps\build" - cmake --build . --config Release --target OpenSees -j8 - cmake --build . --config Release --target OpenSeesPy -j8 - - name: Verification OpenSeesPySP - shell: pwsh - run: | - mv ./build/bin/OpenSeesPy.dll ./build/bin/opensees.pyd - cp "C:\Program Files (x86)\Intel\oneAPI\compiler\2024.1\bin\libiomp5md.dll" ./build/bin/ - $env:PYTHONPATH = "./build/bin/" - python -c "import sys; print(sys.path)" - python ./EXAMPLES/ExamplePython/example_variable_analysis.py - - name: Upload Artifacts - uses: actions/upload-artifact@v4 - with: - name: OpenSees_Windows - path: | - ./build/bin/OpenSees.exe - ./build/bin/opensees.pyd - ./build/bin/libiomp5md.dll - - build-mac: - name: Build Mac OS - runs-on: macos-latest - timeout-minutes: 30 - steps: - - name: 2.1. Obtaining OpenSees Source Code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Python 3.11 - uses: actions/setup-python@v5 - with: - python-version: "3.11" - # - name: XCode Command Line Tools is already installed. - - name: Install other dependencies via Homebrew - run: | - ln -s /opt/homebrew/bin/gcc-13 /usr/local/bin/gcc - ln -s /opt/homebrew/bin/gfortran-13 /usr/local/bin/gfortran - brew install eigen - brew install hdf5 - brew install open-mpi - brew install scalapack - sudo ln -sf /opt/homebrew/include/eigen3/Eigen /opt/homebrew/include/Eigen - - name: MUMPS - run: | - git clone https://github.com/OpenSees/mumps.git - cd mumps - mkdir build - cd build - cmake .. -Darith=d - cmake --build . --config Release --parallel 4 - - name: 2.3.2. Building the OpenSees Applications and Python module - run: | - mkdir build - cd build - cmake .. -DMUMPS_DIR=$PWD/../../mumps/build -DCMAKE_PREFIX_PATH=/usr/local/Cellar/libaec/1.1.3/cmake - cmake --build . --target OpenSees -j8 - cmake --build . --target OpenSeesPy -j8 - mv ./OpenSeesPy.dylib ./opensees.so - - name: Verification OpenSeesPySP - run: | - export PYTHONPATH="./build/" - python3 -c "import sys; print(sys.path)" - python3 ./EXAMPLES/ExamplePython/example_variable_analysis.py - - name: Upload Artifacts - uses: actions/upload-artifact@v4 - with: - name: OpenSees_Mac - path: | - ./build/OpenSees - ./build/opensees.so +env: + PYTHONPATH: "./build/lib/:./mylib/" +jobs: build-ubuntu: name: Build Ubuntu runs-on: ubuntu-latest @@ -144,6 +29,12 @@ jobs: # - name: Needed Applications and Libraries are already satisfied. - name: Conan 1.x run: pip install "conan<2.0" + - name: matplotlib + run: pip install matplotlib + - name: numpy + run: pip install numpy + # - name: scipy + # run: pip install scipy - name: 2.4.2. Building the OpenSees Applications and Python module run: | mkdir build @@ -152,26 +43,15 @@ jobs: cmake .. cmake --build . --target OpenSees -j8 cmake --build . --target OpenSeesPy -j8 - mv lib/OpenSeesPy.so lib/opensees.so + cd lib + mkdir openseespy + mv OpenSeesPy.so openseespy/opensees.so - name: Verification OpenSeesPySP # Simple Sanity Test run: | - export PYTHONPATH="./build/lib/" - python3 -c "import sys; print(sys.path)" - python3 ./EXAMPLES/ExamplePython/example_variable_analysis.py - - name: Run pytest in tests/ folder - run: | - python3 -m pip install pytest - cp build/lib/opensees.so tests/ - cd tests - pytest -v + xvfb-run python3 ./EXAMPLES/ExamplePython/example_ground_motion.py - name: Upload Artifacts uses: actions/upload-artifact@v4 with: name: OpenSees_Ubuntu path: | - ./build/bin/OpenSees - ./build/lib/opensees.so -# # Simple MP sanity test -# - name: Verification OpenSeesPyMP -# run: | -# mpiexec -np 2 python ../EXAMPLES/ExamplePython/example_mpi_paralleltruss_explicit.py + ground_motion.png From 14458e0a3061c1f280df07d136ffeb2c933e358e Mon Sep 17 00:00:00 2001 From: fsiale Date: Wed, 14 Jan 2026 07:46:02 -0800 Subject: [PATCH 2/9] motion02 --- .../ExamplePython/example_ground_motion.py | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 EXAMPLES/ExamplePython/example_ground_motion.py diff --git a/EXAMPLES/ExamplePython/example_ground_motion.py b/EXAMPLES/ExamplePython/example_ground_motion.py new file mode 100644 index 0000000000..024969e41b --- /dev/null +++ b/EXAMPLES/ExamplePython/example_ground_motion.py @@ -0,0 +1,71 @@ +import sys +sys.path.insert(0, '../../SRC/interpreter/') +# sys.path.insert(0, '../build/lib/') +import opensees as ops + +import matplotlib.pyplot as plt +# import openseespy.opensees as ops +import numpy as np +#from scipy.integrate import cumulative_trapezoid as cumtrapz + +ops.wipe() +ops.model('basic','-ndm',1,'-ndf',1) + +mass=1.0 +k=1.0 +F=17.0 +F_theta=2*np.pi +F_T=1.0 + +ops.node(1,0) +ops.node(2,0) +ops.fix(1,1) +ops.mass(2,mass) +ops.uniaxialMaterial("Elastic", 1, k) +ops.element('zeroLength',1,1,2,'-mat',1,'-dir',1,'-doRayleigh', 1) +times=np.arange(0,60.01,0.01) +values=F/F_theta*(1.0-np.cos(F_theta*times)) +ops.timeSeries('Path',1,'-time',*times,'-values',*values,'-factor',1.0) +#pattern('UniformExcitation', patternTag, dir, '-disp', dispSeriesTag, '-vel', velSeriesTag, '-accel', accelSeriesTag, '-vel0', vel0, '-fact', fact) +ops.pattern('UniformExcitation', 1, 1,'-vel', 1,'-fact', -1.0) + +lambda_ = ops.eigen("-fullGenLapack", 1) +omega = lambda_[0] ** 0.5 +print("Omega: ", omega) +damping_ratio = 0.05 +alpha = 2 * damping_ratio * omega +ops.rayleigh(alpha, 0., 0., 0.) +damping_coefficient=alpha*mass + +ops.system("BandGeneral") +ops.numberer("Plain") +ops.constraints("Plain") +ops.algorithm("Newton") +ops.analysis("Transient") +ops.integrator("Newmark", 0.5, 0.25) + +u = np.empty([0, 1]) +v = np.empty([0, 1]) +a = np.empty([0, 1]) +time = np.empty([0, 1]) + +Nsteps=6000 +dt=0.01 +ops.reactions() +for i in range(Nsteps): +ok = ops.analyze(1, dt) +time = np.append(time, [ops.getTime()]) +u = np.append(u, [ops.nodeDisp(2)], axis=0) +v = np.append(v, [ops.nodeVel(2)], axis=0) +a = np.append(a, [ops.nodeAccel(2)], axis=0) + +plt.figure(figsize=(10, 4)) +#plt.plot(t_exact, dis_exact, label="exact") +plt.plot(time, u,linestyle='--', label="opensees") +plt.xlabel("Time (s)") +plt.ylabel("Displacement (m)") +plt.xlim([0, 60]) +plt.legend() +plt.show() + +plt.savefig('ground_motion.png') \ No newline at end of file From 21ec8011be135bdd371ae8053a812e2842056519 Mon Sep 17 00:00:00 2001 From: fsiale Date: Wed, 14 Jan 2026 08:01:41 -0800 Subject: [PATCH 3/9] motion02 --- EXAMPLES/ExamplePython/example_ground_motion.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/EXAMPLES/ExamplePython/example_ground_motion.py b/EXAMPLES/ExamplePython/example_ground_motion.py index 024969e41b..275783609f 100644 --- a/EXAMPLES/ExamplePython/example_ground_motion.py +++ b/EXAMPLES/ExamplePython/example_ground_motion.py @@ -26,7 +26,6 @@ times=np.arange(0,60.01,0.01) values=F/F_theta*(1.0-np.cos(F_theta*times)) ops.timeSeries('Path',1,'-time',*times,'-values',*values,'-factor',1.0) -#pattern('UniformExcitation', patternTag, dir, '-disp', dispSeriesTag, '-vel', velSeriesTag, '-accel', accelSeriesTag, '-vel0', vel0, '-fact', fact) ops.pattern('UniformExcitation', 1, 1,'-vel', 1,'-fact', -1.0) lambda_ = ops.eigen("-fullGenLapack", 1) @@ -53,11 +52,11 @@ dt=0.01 ops.reactions() for i in range(Nsteps): -ok = ops.analyze(1, dt) -time = np.append(time, [ops.getTime()]) -u = np.append(u, [ops.nodeDisp(2)], axis=0) -v = np.append(v, [ops.nodeVel(2)], axis=0) -a = np.append(a, [ops.nodeAccel(2)], axis=0) + ok = ops.analyze(1, dt) + time = np.append(time, [ops.getTime()]) + u = np.append(u, [ops.nodeDisp(2)], axis=0) + v = np.append(v, [ops.nodeVel(2)], axis=0) + a = np.append(a, [ops.nodeAccel(2)], axis=0) plt.figure(figsize=(10, 4)) #plt.plot(t_exact, dis_exact, label="exact") From 79d62503611fe131c19b92eee41aa4d1c4ab9175 Mon Sep 17 00:00:00 2001 From: fsiale Date: Wed, 14 Jan 2026 08:14:54 -0800 Subject: [PATCH 4/9] motion04 --- EXAMPLES/example_ground_motion.py | 66 +++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 EXAMPLES/example_ground_motion.py diff --git a/EXAMPLES/example_ground_motion.py b/EXAMPLES/example_ground_motion.py new file mode 100644 index 0000000000..dd7ae44141 --- /dev/null +++ b/EXAMPLES/example_ground_motion.py @@ -0,0 +1,66 @@ +import matplotlib +matplotlib.use('Agg') +import matplotlib.pyplot as plt +import openseespy.opensees as ops +import numpy as np + +ops.wipe() +ops.model('basic','-ndm',1,'-ndf',1) + +mass=1.0 +k=1.0 +F=17.0 +F_theta=2*np.pi +F_T=1.0 + +ops.node(1,0) +ops.node(2,0) +ops.fix(1,1) +ops.mass(2,mass) +ops.uniaxialMaterial("Elastic", 1, k) +ops.element('zeroLength',1,1,2,'-mat',1,'-dir',1,'-doRayleigh', 1) +times=np.arange(0,60.01,0.01) +values=F/F_theta*(1.0-np.cos(F_theta*times)) +ops.timeSeries('Path',1,'-time',*times,'-values',*values,'-factor',1.0) +ops.pattern('UniformExcitation', 1, 1,'-vel', 1,'-fact', -1.0) + +lambda_ = ops.eigen("-fullGenLapack", 1) +omega = lambda_[0] ** 0.5 +print("Omega: ", omega) +damping_ratio = 0.05 +alpha = 2 * damping_ratio * omega +ops.rayleigh(alpha, 0., 0., 0.) +damping_coefficient=alpha*mass + +ops.system("BandGeneral") +ops.numberer("Plain") +ops.constraints("Plain") +ops.algorithm("Newton") +ops.analysis("Transient") +ops.integrator("Newmark", 0.5, 0.25) + +u = np.empty([0, 1]) +v = np.empty([0, 1]) +a = np.empty([0, 1]) +time = np.empty([0, 1]) + +Nsteps=6000 +dt=0.01 +ops.reactions() +for i in range(Nsteps): + ok = ops.analyze(1, dt) + time = np.append(time, [ops.getTime()]) + u = np.append(u, [ops.nodeDisp(2)], axis=0) + v = np.append(v, [ops.nodeVel(2)], axis=0) + a = np.append(a, [ops.nodeAccel(2)], axis=0) + +plt.figure(figsize=(10, 4)) +#plt.plot(t_exact, dis_exact, label="exact") +plt.plot(time, u,linestyle='--', label="opensees") +plt.xlabel("Time (s)") +plt.ylabel("Displacement (m)") +plt.xlim([0, 60]) +plt.legend() +plt.show() + +plt.savefig('ground_motion.png') \ No newline at end of file From cc988fd70ec21d0fa196f454397da4ab8b455ecc Mon Sep 17 00:00:00 2001 From: fsiale Date: Wed, 14 Jan 2026 08:21:43 -0800 Subject: [PATCH 5/9] motion05 --- EXAMPLES/ExamplePython/example_ground_motion.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/EXAMPLES/ExamplePython/example_ground_motion.py b/EXAMPLES/ExamplePython/example_ground_motion.py index 275783609f..dd7ae44141 100644 --- a/EXAMPLES/ExamplePython/example_ground_motion.py +++ b/EXAMPLES/ExamplePython/example_ground_motion.py @@ -1,12 +1,8 @@ -import sys -sys.path.insert(0, '../../SRC/interpreter/') -# sys.path.insert(0, '../build/lib/') -import opensees as ops - +import matplotlib +matplotlib.use('Agg') import matplotlib.pyplot as plt -# import openseespy.opensees as ops +import openseespy.opensees as ops import numpy as np -#from scipy.integrate import cumulative_trapezoid as cumtrapz ops.wipe() ops.model('basic','-ndm',1,'-ndf',1) From 277f07745a2b0f972f0aef6915acc9468cd03fde Mon Sep 17 00:00:00 2001 From: fsiale Date: Tue, 3 Feb 2026 06:33:42 -0800 Subject: [PATCH 6/9] damping01 --- .github/workflows/build_cmake.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_cmake.yml b/.github/workflows/build_cmake.yml index 1312756a42..c989d8b0cd 100644 --- a/.github/workflows/build_cmake.yml +++ b/.github/workflows/build_cmake.yml @@ -55,3 +55,4 @@ jobs: name: OpenSees_Ubuntu path: | ground_motion.png + disp.out From 9fc1b8ac0a60b392505e66fc89293265c47d40e1 Mon Sep 17 00:00:00 2001 From: fsiale Date: Tue, 3 Feb 2026 06:34:25 -0800 Subject: [PATCH 7/9] damping02 --- .../ExamplePython/example_ground_motion.py | 78 ++++++------------- 1 file changed, 22 insertions(+), 56 deletions(-) diff --git a/EXAMPLES/ExamplePython/example_ground_motion.py b/EXAMPLES/ExamplePython/example_ground_motion.py index dd7ae44141..1cfddf7e73 100644 --- a/EXAMPLES/ExamplePython/example_ground_motion.py +++ b/EXAMPLES/ExamplePython/example_ground_motion.py @@ -4,63 +4,29 @@ import openseespy.opensees as ops import numpy as np +# Create a basic model with a single node ops.wipe() -ops.model('basic','-ndm',1,'-ndf',1) +ops.model('basic', '-ndm', 1, '-ndf', 1) +ops.node(1, 0.0); ops.fix(1, 1) +ops.node(2, 0.0); ops.mass(2, 1.0) +ops.uniaxialMaterial('Elastic', 1, 100.0) +ops.damping('Uniform', 1, 0.05, 1.0, 100.0) +ops.element('zeroLength', 1, 1, 2, '-mat', 1, '-dir', 1, '-damp', 1) +ops.timeSeries('Sine', 1, 0.0, 100.0, 0.628, '-factor', -10.0) +ops.pattern('UniformExcitation', 1, 1, '-accel', 1) +ops.analysis('Transient') +ops.recorder('Node', '-file', 'disp.out', '-time', '-node', 2, '-dof', 1, 'disp') + +ops.analyze(1000, 0.01) -mass=1.0 -k=1.0 -F=17.0 -F_theta=2*np.pi -F_T=1.0 - -ops.node(1,0) -ops.node(2,0) -ops.fix(1,1) -ops.mass(2,mass) -ops.uniaxialMaterial("Elastic", 1, k) -ops.element('zeroLength',1,1,2,'-mat',1,'-dir',1,'-doRayleigh', 1) -times=np.arange(0,60.01,0.01) -values=F/F_theta*(1.0-np.cos(F_theta*times)) -ops.timeSeries('Path',1,'-time',*times,'-values',*values,'-factor',1.0) -ops.pattern('UniformExcitation', 1, 1,'-vel', 1,'-fact', -1.0) - -lambda_ = ops.eigen("-fullGenLapack", 1) -omega = lambda_[0] ** 0.5 -print("Omega: ", omega) -damping_ratio = 0.05 -alpha = 2 * damping_ratio * omega -ops.rayleigh(alpha, 0., 0., 0.) -damping_coefficient=alpha*mass - -ops.system("BandGeneral") -ops.numberer("Plain") -ops.constraints("Plain") -ops.algorithm("Newton") -ops.analysis("Transient") -ops.integrator("Newmark", 0.5, 0.25) - -u = np.empty([0, 1]) -v = np.empty([0, 1]) -a = np.empty([0, 1]) -time = np.empty([0, 1]) - -Nsteps=6000 -dt=0.01 -ops.reactions() -for i in range(Nsteps): - ok = ops.analyze(1, dt) - time = np.append(time, [ops.getTime()]) - u = np.append(u, [ops.nodeDisp(2)], axis=0) - v = np.append(v, [ops.nodeVel(2)], axis=0) - a = np.append(a, [ops.nodeAccel(2)], axis=0) - -plt.figure(figsize=(10, 4)) -#plt.plot(t_exact, dis_exact, label="exact") -plt.plot(time, u,linestyle='--', label="opensees") -plt.xlabel("Time (s)") -plt.ylabel("Displacement (m)") -plt.xlim([0, 60]) -plt.legend() +ops.wipe() +data = np.loadtxt('disp.out') +plt.figure() +plt.plot(data[:, 0], data[:, 1]) +plt.xlabel('Time') +plt.ylabel('Displacement') +plt.grid() plt.show() -plt.savefig('ground_motion.png') \ No newline at end of file +####### +plt.savefig('./build/lib/ground_motion.png') \ No newline at end of file From 0b352d1d2721f93c04b848d6f24717fe00b21c8c Mon Sep 17 00:00:00 2001 From: fsiale Date: Tue, 3 Feb 2026 06:45:35 -0800 Subject: [PATCH 8/9] Delete EXAMPLES/example_ground_motion.py --- EXAMPLES/example_ground_motion.py | 66 ------------------------------- 1 file changed, 66 deletions(-) delete mode 100644 EXAMPLES/example_ground_motion.py diff --git a/EXAMPLES/example_ground_motion.py b/EXAMPLES/example_ground_motion.py deleted file mode 100644 index dd7ae44141..0000000000 --- a/EXAMPLES/example_ground_motion.py +++ /dev/null @@ -1,66 +0,0 @@ -import matplotlib -matplotlib.use('Agg') -import matplotlib.pyplot as plt -import openseespy.opensees as ops -import numpy as np - -ops.wipe() -ops.model('basic','-ndm',1,'-ndf',1) - -mass=1.0 -k=1.0 -F=17.0 -F_theta=2*np.pi -F_T=1.0 - -ops.node(1,0) -ops.node(2,0) -ops.fix(1,1) -ops.mass(2,mass) -ops.uniaxialMaterial("Elastic", 1, k) -ops.element('zeroLength',1,1,2,'-mat',1,'-dir',1,'-doRayleigh', 1) -times=np.arange(0,60.01,0.01) -values=F/F_theta*(1.0-np.cos(F_theta*times)) -ops.timeSeries('Path',1,'-time',*times,'-values',*values,'-factor',1.0) -ops.pattern('UniformExcitation', 1, 1,'-vel', 1,'-fact', -1.0) - -lambda_ = ops.eigen("-fullGenLapack", 1) -omega = lambda_[0] ** 0.5 -print("Omega: ", omega) -damping_ratio = 0.05 -alpha = 2 * damping_ratio * omega -ops.rayleigh(alpha, 0., 0., 0.) -damping_coefficient=alpha*mass - -ops.system("BandGeneral") -ops.numberer("Plain") -ops.constraints("Plain") -ops.algorithm("Newton") -ops.analysis("Transient") -ops.integrator("Newmark", 0.5, 0.25) - -u = np.empty([0, 1]) -v = np.empty([0, 1]) -a = np.empty([0, 1]) -time = np.empty([0, 1]) - -Nsteps=6000 -dt=0.01 -ops.reactions() -for i in range(Nsteps): - ok = ops.analyze(1, dt) - time = np.append(time, [ops.getTime()]) - u = np.append(u, [ops.nodeDisp(2)], axis=0) - v = np.append(v, [ops.nodeVel(2)], axis=0) - a = np.append(a, [ops.nodeAccel(2)], axis=0) - -plt.figure(figsize=(10, 4)) -#plt.plot(t_exact, dis_exact, label="exact") -plt.plot(time, u,linestyle='--', label="opensees") -plt.xlabel("Time (s)") -plt.ylabel("Displacement (m)") -plt.xlim([0, 60]) -plt.legend() -plt.show() - -plt.savefig('ground_motion.png') \ No newline at end of file From 40d93fb1ab59079d509686581317dc7e1f1e3c57 Mon Sep 17 00:00:00 2001 From: fsiale Date: Tue, 3 Feb 2026 06:55:35 -0800 Subject: [PATCH 9/9] damping03 --- .github/workflows/build_cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_cmake.yml b/.github/workflows/build_cmake.yml index c989d8b0cd..2015f41f15 100644 --- a/.github/workflows/build_cmake.yml +++ b/.github/workflows/build_cmake.yml @@ -28,7 +28,7 @@ jobs: python-version: "3.11" # - name: Needed Applications and Libraries are already satisfied. - name: Conan 1.x - run: pip install "conan<2.0" + run: pip install conan - name: matplotlib run: pip install matplotlib - name: numpy