From 49054314e3e3d882c3cce3acf0c16a7ce42b4ab4 Mon Sep 17 00:00:00 2001 From: Cheng Gong Date: Tue, 23 Apr 2024 18:42:41 -0400 Subject: [PATCH] change name to DJUICE --- .github/workflows/CI.yml | 6 +++--- Project.toml | 2 +- README.md | 2 +- src/{dJUICE.jl => DJUICE.jl} | 4 ++-- src/core/analyses/stressbalanceanalysis.jl | 4 ++-- src/core/control.jl | 2 +- src/core/costfunctions.jl | 2 +- src/usr/utils.jl | 8 ++++---- test/modelstructtests.jl | 24 +++++++++++----------- test/runtests.jl | 2 +- test/test101.jl | 2 +- test/test201.jl | 3 +-- test/test208.jl | 3 +-- test/test301.jl | 3 +-- test/test501.jl | 3 +-- test/test807.jl | 2 +- test/testDNN.jl | 3 +-- test/testGPU.jl | 2 +- test/testad.jl | 19 +++++++++-------- test/testad2.jl | 14 ++++++------- test/testoptimization.jl | 8 ++++---- 21 files changed, 57 insertions(+), 61 deletions(-) rename src/{dJUICE.jl => DJUICE.jl} (94%) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 4f35539..277e37c 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -13,7 +13,7 @@ on: jobs: test: - name: dJUICE on Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} + name: DJUICE on Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} runs-on: ${{ matrix.os }} strategy: fail-fast: false @@ -75,8 +75,8 @@ jobs: # - run: | # julia --project=docs -e ' # using Documenter: doctest - # using dJUICE - # doctest(dJUICE)' + # using DJUICE + # doctest(DJUICE)' # - run: julia --project=docs docs/make.jl # env: # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/Project.toml b/Project.toml index e3255e6..544ac7b 100644 --- a/Project.toml +++ b/Project.toml @@ -1,4 +1,4 @@ -name = "dJUICE" +name = "DJUICE" uuid = "1cb5fe60-6b70-416b-9050-039c23a62a10" authors = ["Mathieu Morlighem "] version = "0.1.0" diff --git a/README.md b/README.md index 40794be..4ad5628 100644 --- a/README.md +++ b/README.md @@ -10,4 +10,4 @@ Authors: License: MIT [build-stable-img]: https://github.com/DJ4Earth/DJUICE.jl/workflows/CI/badge.svg -[build-url]: https://github.com/DJ4Earth/dJUICE/actions?query=workflow +[build-url]: https://github.com/DJ4Earth/DJUICE/actions?query=workflow diff --git a/src/dJUICE.jl b/src/DJUICE.jl similarity index 94% rename from src/dJUICE.jl rename to src/DJUICE.jl index a217966..7d639a8 100644 --- a/src/dJUICE.jl +++ b/src/DJUICE.jl @@ -3,7 +3,7 @@ # Author: Mathieu Morlighem # email: mathieu.morlighem@dartmouth.edu -module dJUICE +module DJUICE const userdir = "./usr" const coredir = "./core" @@ -20,7 +20,7 @@ export triangle_issm include("$userdir/parameterization.jl") export setmask, InterpFromMeshToMesh2d include("$coredir/solve.jl") -export solve, solve2 +export solve include("$userdir/plotmodel.jl") export plotmodel diff --git a/src/core/analyses/stressbalanceanalysis.jl b/src/core/analyses/stressbalanceanalysis.jl index 1d89edb..913402f 100644 --- a/src/core/analyses/stressbalanceanalysis.jl +++ b/src/core/analyses/stressbalanceanalysis.jl @@ -121,14 +121,14 @@ end #}}} function CreateKMatrix(analysis::StressbalanceAnalysis, element::Tria) #{{{ # a wrapper for Enzyme to know the type of friction law frictionlaw = FindParam(Int64, element, FrictionLawEnum) - CreateKMatrix(analysis, element, Val(frictionlaw))::dJUICE.ElementMatrix + CreateKMatrix(analysis, element, Val(frictionlaw))::DJUICE.ElementMatrix end #}}} function CreateKMatrix(analysis::StressbalanceAnalysis, element::Tria, ::Val{frictionlaw}) where frictionlaw# {{{ #Internmediaries numnodes = 3 #Initialize Element matrix and basis function derivatives - Ke = ElementMatrix(element.nodes)::dJUICE.ElementMatrix + Ke = ElementMatrix(element.nodes)::DJUICE.ElementMatrix dbasis = Matrix{Float64}(undef,numnodes,2) #Retrieve all inputs and parameters diff --git a/src/core/control.jl b/src/core/control.jl index 9d31402..e61d34c 100644 --- a/src/core/control.jl +++ b/src/core/control.jl @@ -2,10 +2,10 @@ using Enzyme Enzyme.API.looseTypeAnalysis!(false) Enzyme.API.strictAliasing!(false) Enzyme.API.typeWarning!(false) +Enzyme.Compiler.RunAttributor[] = false using Optimization, OptimizationOptimJL -Enzyme.Compiler.RunAttributor[] = false function Control_Core(md::model, femmodel::FemModel) #{{{ # solve for optimization diff --git a/src/core/costfunctions.jl b/src/core/costfunctions.jl index 0dc6268..202978d 100644 --- a/src/core/costfunctions.jl +++ b/src/core/costfunctions.jl @@ -5,7 +5,7 @@ function costfunction(α::Vector{Float64}, femmodel::FemModel) #{{{ # get the Enum controlvar_enum = StringToEnum(control_string) if isnothing(controlvar_enum) - error(control_string, " is not defined in dJUICE, therefore the derivative with respect to ", control_string, " is meaningless") + error(control_string, " is not defined in DJUICE, therefore the derivative with respect to ", control_string, " is meaningless") end # compute cost function # TODO: loop through all controls with respect to all the components in the cost function diff --git a/src/usr/utils.jl b/src/usr/utils.jl index 6951023..796914b 100644 --- a/src/usr/utils.jl +++ b/src/usr/utils.jl @@ -3,13 +3,13 @@ function issmdir() #{{{ if haskey(ENV, "ISSM_DIR") issmdir = ENV["ISSM_DIR"] else - println("Could not determine the location of ISSM, use dJUICE path instead") - return joinpath(dirname(pathof(dJUICE)), "..") + println("Could not determine the location of ISSM, use DJUICE path instead") + return joinpath(dirname(pathof(DJUICE)), "..") end if isempty(issmdir) - println("Could not determine the location of ISSM, use dJUICE path instead") - return joinpath(dirname(pathof(dJUICE)), "..") + println("Could not determine the location of ISSM, use DJUICE path instead") + return joinpath(dirname(pathof(DJUICE)), "..") else return issmdir end diff --git a/test/modelstructtests.jl b/test/modelstructtests.jl index 107c035..2bf3563 100644 --- a/test/modelstructtests.jl +++ b/test/modelstructtests.jl @@ -1,33 +1,33 @@ module ModelStruct -using dJUICE +using DJUICE using Test using MAT @testset "Model basic sturct" begin md = model() - @test (typeof(md.mesh)) <: dJUICE.AbstractMesh - @test (typeof(md.mesh)) == dJUICE.Mesh2dTriangle - @test (typeof(md.friction)) <: dJUICE.AbstractFriction - @test (typeof(md.friction)) <: dJUICE.BuddFriction + @test (typeof(md.mesh)) <: DJUICE.AbstractMesh + @test (typeof(md.mesh)) == DJUICE.Mesh2dTriangle + @test (typeof(md.friction)) <: DJUICE.AbstractFriction + @test (typeof(md.friction)) <: DJUICE.BuddFriction md = model(md; friction=DNNFriction()) - @test (typeof(md.friction)) == dJUICE.DNNFriction + @test (typeof(md.friction)) == DJUICE.DNNFriction md = model(md; friction=SchoofFriction()) - @test (typeof(md.friction)) == dJUICE.SchoofFriction + @test (typeof(md.friction)) == DJUICE.SchoofFriction end @testset "Enums <-> String" begin - @test dJUICE.StringToEnum("FrictionCoefficient") == dJUICE.FrictionCoefficientEnum - @test dJUICE.StringToEnum("MaterialsRheologyB") == dJUICE.MaterialsRheologyBEnum - @test dJUICE.EnumToString(dJUICE.FrictionCoefficientEnum) == "FrictionCoefficient" - @test dJUICE.EnumToString(dJUICE.MaterialsRheologyBEnum) == "MaterialsRheologyB" + @test DJUICE.StringToEnum("FrictionCoefficient") == DJUICE.FrictionCoefficientEnum + @test DJUICE.StringToEnum("MaterialsRheologyB") == DJUICE.MaterialsRheologyBEnum + @test DJUICE.EnumToString(DJUICE.FrictionCoefficientEnum) == "FrictionCoefficient" + @test DJUICE.EnumToString(DJUICE.MaterialsRheologyBEnum) == "MaterialsRheologyB" end @testset "Triangle" begin md = model() - c = dJUICE.ExpStruct() + c = DJUICE.ExpStruct() c.name = "domainoutline" c.nods = 5 c.density = 1.0 diff --git a/test/runtests.jl b/test/runtests.jl index 68f8d49..77e53d0 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,4 +1,4 @@ -using dJUICE +using DJUICE using Test function searchdir(path,key) diff --git a/test/test101.jl b/test/test101.jl index 805b6c3..070e21c 100755 --- a/test/test101.jl +++ b/test/test101.jl @@ -1,4 +1,4 @@ -using dJUICE +using DJUICE md = model() md = triangle(md,issmdir()*"/test/Exp/Square.exp",50000.) diff --git a/test/test201.jl b/test/test201.jl index 62b8ac0..627a445 100755 --- a/test/test201.jl +++ b/test/test201.jl @@ -1,5 +1,4 @@ -#!/Applications/Julia-1.6.app/Contents/Resources/julia/bin/julia -using dJUICE +using DJUICE md = model() md = triangle(md,issmdir()*"/test/Exp/Square.exp", 50000.) diff --git a/test/test208.jl b/test/test208.jl index cf61f6a..818ba58 100755 --- a/test/test208.jl +++ b/test/test208.jl @@ -1,5 +1,4 @@ -#!/Applications/Julia-1.6.app/Contents/Resources/julia/bin/julia -using dJUICE +using DJUICE md = model() md = triangle(md,issmdir()*"/test/Exp/Square.exp", 150000.) diff --git a/test/test301.jl b/test/test301.jl index cf5045e..bbc2c0a 100755 --- a/test/test301.jl +++ b/test/test301.jl @@ -1,5 +1,4 @@ -#!/Applications/Julia-1.6.app/Contents/Resources/julia/bin/julia -using dJUICE +using DJUICE md = model() md = triangle(md,issmdir()*"/test/Exp/Square.exp",150000.) diff --git a/test/test501.jl b/test/test501.jl index fabcda6..f69c060 100755 --- a/test/test501.jl +++ b/test/test501.jl @@ -1,5 +1,4 @@ -#!/Applications/Julia-1.6.app/Contents/Resources/julia/bin/julia -using dJUICE +using DJUICE md = model() md = triangle(md,issmdir()*"/test/Exp/Pig.exp",10000.) diff --git a/test/test807.jl b/test/test807.jl index 8a09b18..8676772 100755 --- a/test/test807.jl +++ b/test/test807.jl @@ -1,4 +1,4 @@ -using dJUICE +using DJUICE md = model() md = triangle(md,issmdir()*"/test/Exp/Square.exp",200000.) diff --git a/test/testDNN.jl b/test/testDNN.jl index 12c4e89..cc4516c 100755 --- a/test/testDNN.jl +++ b/test/testDNN.jl @@ -1,5 +1,4 @@ -#!/Applications/Julia-1.6.app/Contents/Resources/julia/bin/julia -using dJUICE +using DJUICE using Flux using BSON: @load diff --git a/test/testGPU.jl b/test/testGPU.jl index 1ed2e49..9140301 100644 --- a/test/testGPU.jl +++ b/test/testGPU.jl @@ -1,5 +1,5 @@ #!/Applications/Julia-1.8.app/Contents/Resources/julia/bin/julia --project -using dJUICE +using DJUICE import Statistics: mean using Printf diff --git a/test/testad.jl b/test/testad.jl index 45b80d2..5868ef9 100755 --- a/test/testad.jl +++ b/test/testad.jl @@ -1,13 +1,14 @@ module enzymeDiff_grad_frictionC -using dJUICE -using MAT -using Test using Enzyme Enzyme.API.typeWarning!(false) Enzyme.Compiler.RunAttributor[] = false +using DJUICE +using MAT +using Test + #Load model from MATLAB file #file = matopen(joinpath(@__DIR__, "..", "data","temp12k.mat")) #BIG model file = matopen(joinpath(@__DIR__, "..", "data","temp.mat")) #SMALL model (35 elements) @@ -36,21 +37,21 @@ addJ = md.results["StressbalanceSolution"]["Gradient"] md.inversion.independent_string = "FrictionCoefficient" α = md.inversion.independent - femmodel=dJUICE.ModelProcessor(md, :StressbalanceSolution) - J1 = dJUICE.costfunction(α, femmodel) + femmodel=DJUICE.ModelProcessor(md, :StressbalanceSolution) + J1 = DJUICE.costfunction(α, femmodel) @test ~isnothing(J1) end @testset "AD gradient calculation for FrictionC" begin α = md.inversion.independent delta = 1e-7 - femmodel=dJUICE.ModelProcessor(md, :StressbalanceSolution) - J1 = dJUICE.costfunction(α, femmodel) + femmodel=DJUICE.ModelProcessor(md, :StressbalanceSolution) + J1 = DJUICE.costfunction(α, femmodel) for i in 1:md.mesh.numberofvertices dα = zero(md.friction.coefficient) dα[i] = delta - femmodel=dJUICE.ModelProcessor(md, :StressbalanceSolution) - J2 = dJUICE.costfunction(α+dα, femmodel) + femmodel=DJUICE.ModelProcessor(md, :StressbalanceSolution) + J2 = DJUICE.costfunction(α+dα, femmodel) dJ = (J2-J1)/delta @test abs(dJ - addJ[i])< 1e-5 diff --git a/test/testad2.jl b/test/testad2.jl index 306b9c3..e662c1c 100755 --- a/test/testad2.jl +++ b/test/testad2.jl @@ -1,6 +1,6 @@ module enzymeDiff_grad_rheologyB -using dJUICE +using DJUICE using MAT using Test using Enzyme @@ -35,21 +35,21 @@ addJ = md.results["StressbalanceSolution"]["Gradient"] md.inversion.independent_string = "MaterialsRheologyB" α = md.inversion.independent - femmodel=dJUICE.ModelProcessor(md, :StressbalanceSolution) - J1 = dJUICE.costfunction(α, femmodel) + femmodel=DJUICE.ModelProcessor(md, :StressbalanceSolution) + J1 = DJUICE.costfunction(α, femmodel) @test ~isnothing(J1) end @testset "AD results RheologyB" begin α = md.inversion.independent delta = 1e-8 - femmodel=dJUICE.ModelProcessor(md, :StressbalanceSolution) - J1 = dJUICE.costfunction(α, femmodel) + femmodel=DJUICE.ModelProcessor(md, :StressbalanceSolution) + J1 = DJUICE.costfunction(α, femmodel) for i in 1:md.mesh.numberofvertices dα = zero(md.friction.coefficient) dα[i] = delta - femmodel=dJUICE.ModelProcessor(md, :StressbalanceSolution) - J2 = dJUICE.costfunction(α+dα, femmodel) + femmodel=DJUICE.ModelProcessor(md, :StressbalanceSolution) + J2 = DJUICE.costfunction(α+dα, femmodel) dJ = (J2-J1)/delta @test abs(dJ - addJ[i])< 1e-6 diff --git a/test/testoptimization.jl b/test/testoptimization.jl index 0a8eb9a..fa75c81 100755 --- a/test/testoptimization.jl +++ b/test/testoptimization.jl @@ -1,6 +1,6 @@ module enzymeDiff -using dJUICE +using DJUICE using MAT using Test using Enzyme @@ -28,11 +28,11 @@ md.inversion.independent_string = "FrictionCoefficient" α = md.inversion.independent ∂J_∂α = zero(α) -femmodel=dJUICE.ModelProcessor(md, :StressbalanceSolution) +femmodel=DJUICE.ModelProcessor(md, :StressbalanceSolution) n = length(α) # use user defined grad, errors! -optprob = OptimizationFunction(dJUICE.costfunction, Optimization.AutoEnzyme(), grad=dJUICE.computeGradient) -#optprob = OptimizationFunction(dJUICE.costfunction, Optimization.AutoEnzyme()) +optprob = OptimizationFunction(DJUICE.costfunction, Optimization.AutoEnzyme(), grad=DJUICE.computeGradient) +#optprob = OptimizationFunction(DJUICE.costfunction, Optimization.AutoEnzyme()) #prob = Optimization.OptimizationProblem(optprob, α, femmodel, lb=md.inversion.min_parameters, ub=md.inversion.max_parameters) prob = Optimization.OptimizationProblem(optprob, α, femmodel) sol = Optimization.solve(prob, Optim.LBFGS())