From cc09b388a48f3d6a3c1d3e476008fb4d70f660b2 Mon Sep 17 00:00:00 2001 From: noblec04 Date: Sat, 11 Jan 2025 18:54:06 -0700 Subject: [PATCH] Sorted example scripts --- MatlabGP/+ODE/+test/NS_1D_RHS.asv | 66 ---------- MatlabGP/+ODE/+test/NS_1D_RHS.m | 20 +-- MatlabGP/+ODE/+test/NS_2D_RHS.m | 74 +++++++++++ MatlabGP/+ODE/rkf45.m | 2 +- MatlabGP/+optim/Adam.m | 94 ++++++++++++++ MatlabGP/+optim/SGD.m | 83 ++++++++++++ MatlabGP/+optim/VSGD.m | 36 ++++++ MatlabGP/+utils/sfigure.m | 18 +++ MatlabGP/+utils/tridiag.m | 2 +- MatlabGP/AutoDiff/AutoDiff.m | 6 + MatlabGP/GP.m | 2 +- .../{ => AutoDiff}/TestBackslashGradient.m | 0 .../{ => AutoDiff}/TestCholGradient.m | 0 .../examples/{ => AutoDiff}/testAutoDiff.m | 0 MatlabGP/examples/{ => BO}/TestMultiOutput.m | 0 MatlabGP/examples/{ => BO}/testMOGP.m | 0 MatlabGP/examples/{ => BO}/testMOGP_2D.m | 0 MatlabGP/examples/{ => BO}/testMOGP_2D_2O.m | 0 MatlabGP/examples/{ => GP}/EQ_matrix.mlx | Bin .../{ => GP}/RosenbrockParamSweep.mat | Bin .../{ => GP}/RosenbrockParameterSweep.fig | Bin .../{ => GP}/RosenbrockParameterSweep.svg | 0 .../examples/{ => GP}/RunRosenbrockParams.m | 0 .../{ => GP}/TestAppliedAviationProblem.asv | 0 .../{ => GP}/TestAppliedAviationProblem.m | 0 .../TestAppliedAviationProblem_clean.m | 0 MatlabGP/examples/{ => GP}/TestBlockPI.m | 0 .../{ => GP}/TestForresterProblem_clean.m | 0 .../examples/{ => GP}/TestHetNoiseKernel.m | 0 MatlabGP/examples/{ => GP}/TestICD.m | 0 MatlabGP/examples/{ => GP}/TestICD_2D.m | 0 MatlabGP/examples/{ => GP}/TestInverse.m | 0 .../examples/{ => GP}/TestRosenbrockProblem.m | 0 .../{ => GP}/TestRosenbrockProblemKISS.m | 0 .../{ => GP}/TestRosenbrockProblemMFNN.m | 0 .../{ => GP}/TestRosenbrockProblemMFNNGP.m | 0 .../{ => GP}/TestRosenbrockProblem_OPT.m | 0 .../{ => GP}/TestRosenbrockProblem_clean.m | 0 .../{ => GP}/TestRosenbrockProblem_params.m | 0 .../examples/{ => GP}/TestRosenbrockVGP.m | 0 .../{ => GP}/TestSmoothCircleProblem_NN.m | 0 .../{ => GP}/TestSmoothCircleProblem_clean.m | 0 MatlabGP/examples/{ => GP}/testGP2.m | 0 MatlabGP/examples/GP/testGP_Adam.m | 86 +++++++++++++ MatlabGP/examples/{ => GP}/testMatrixKernel.m | 0 .../{ => GP}/testMatrixKernelSparse.m | 0 MatlabGP/examples/{ => GP}/testWNHetKernel.m | 0 MatlabGP/examples/{ => GP}/testWNKernel.m | 0 MatlabGP/examples/{ => NN}/TestGP_NN_Kernel.m | 0 MatlabGP/examples/{ => NN}/TestNNGP.m | 0 MatlabGP/examples/{ => NN}/testAE.m | 0 MatlabGP/examples/{ => NN}/testAtten.m | 0 MatlabGP/examples/{ => NN}/testConv1.m | 0 MatlabGP/examples/{ => NN}/testNN.m | 0 MatlabGP/examples/{ => NN}/testNN_2D.m | 0 MatlabGP/examples/{ => NN}/testNN_2D_batch.m | 0 MatlabGP/examples/NN/testNN_Adam.m | 83 ++++++++++++ MatlabGP/examples/NN/testNN_Adam_2.m | 119 ++++++++++++++++++ MatlabGP/examples/{ => NN}/testNN_BNN.m | 0 MatlabGP/examples/{ => NN}/testNN_Ensemble.m | 0 MatlabGP/examples/{ => NN}/testNN_FAN.m | 0 .../{testNN_nll.m => NN/testNN_NLL.m} | 0 MatlabGP/examples/{ => NN}/testNN_NLL_2D.m | 0 MatlabGP/examples/{ => NN}/testNN_batch.m | 0 MatlabGP/examples/{ => NN}/testNN_class.m | 0 MatlabGP/examples/{ => NN}/testRRNN.m | 0 MatlabGP/examples/{ => NN}/testRRNN_2D.m | 0 MatlabGP/examples/{ => NN}/testVAE.m | 0 MatlabGP/examples/{ => NN}/testconv1d.m | 0 MatlabGP/examples/{ => NN}/testconv2d.m | 0 MatlabGP/examples/{ => ODE}/ODE_NS_1D.m | 25 ++-- MatlabGP/examples/ODE/ODE_NS_2D.m | 67 ++++++++++ .../ODE}/PP_ODE_RV_Distribution.gif | Bin .../ODE}/PP_ODE_RV_Distribution2.gif | Bin MatlabGP/examples/{ => ODE}/TestODEGradient.m | 0 .../{ => ODE}/TestODEGradient_Lorenz_opt.m | 0 .../examples/{ => ODE}/TestODEGradient_PP.m | 0 .../examples/{ => ODE}/TestODEGradient_SRI.m | 0 .../examples/{ => ODE}/TestODEGradient_VDP.m | 0 .../{ => ODE}/TestODEGradient_VDP_opt.m | 0 .../{ => ODE}/TestODEGradient_pleiades.m | 0 MatlabGP/examples/ODE_NS_1D.asv | 44 ------- .../examples/{ => RL}/TestRL_AdaptiveSample.m | 0 .../{ => RL}/TestRL_AdaptiveSample_2.m | 0 MatlabGP/examples/{ => SVM}/TestMFSVM.m | 0 MatlabGP/examples/{ => SVM}/TestSVM.m | 0 86 files changed, 686 insertions(+), 141 deletions(-) delete mode 100644 MatlabGP/+ODE/+test/NS_1D_RHS.asv create mode 100644 MatlabGP/+ODE/+test/NS_2D_RHS.m create mode 100644 MatlabGP/+optim/Adam.m create mode 100644 MatlabGP/+optim/SGD.m create mode 100644 MatlabGP/+utils/sfigure.m rename MatlabGP/examples/{ => AutoDiff}/TestBackslashGradient.m (100%) rename MatlabGP/examples/{ => AutoDiff}/TestCholGradient.m (100%) rename MatlabGP/examples/{ => AutoDiff}/testAutoDiff.m (100%) rename MatlabGP/examples/{ => BO}/TestMultiOutput.m (100%) rename MatlabGP/examples/{ => BO}/testMOGP.m (100%) rename MatlabGP/examples/{ => BO}/testMOGP_2D.m (100%) rename MatlabGP/examples/{ => BO}/testMOGP_2D_2O.m (100%) rename MatlabGP/examples/{ => GP}/EQ_matrix.mlx (100%) rename MatlabGP/examples/{ => GP}/RosenbrockParamSweep.mat (100%) rename MatlabGP/examples/{ => GP}/RosenbrockParameterSweep.fig (100%) rename MatlabGP/examples/{ => GP}/RosenbrockParameterSweep.svg (100%) rename MatlabGP/examples/{ => GP}/RunRosenbrockParams.m (100%) rename MatlabGP/examples/{ => GP}/TestAppliedAviationProblem.asv (100%) rename MatlabGP/examples/{ => GP}/TestAppliedAviationProblem.m (100%) rename MatlabGP/examples/{ => GP}/TestAppliedAviationProblem_clean.m (100%) rename MatlabGP/examples/{ => GP}/TestBlockPI.m (100%) rename MatlabGP/examples/{ => GP}/TestForresterProblem_clean.m (100%) rename MatlabGP/examples/{ => GP}/TestHetNoiseKernel.m (100%) rename MatlabGP/examples/{ => GP}/TestICD.m (100%) rename MatlabGP/examples/{ => GP}/TestICD_2D.m (100%) rename MatlabGP/examples/{ => GP}/TestInverse.m (100%) rename MatlabGP/examples/{ => GP}/TestRosenbrockProblem.m (100%) rename MatlabGP/examples/{ => GP}/TestRosenbrockProblemKISS.m (100%) rename MatlabGP/examples/{ => GP}/TestRosenbrockProblemMFNN.m (100%) rename MatlabGP/examples/{ => GP}/TestRosenbrockProblemMFNNGP.m (100%) rename MatlabGP/examples/{ => GP}/TestRosenbrockProblem_OPT.m (100%) rename MatlabGP/examples/{ => GP}/TestRosenbrockProblem_clean.m (100%) rename MatlabGP/examples/{ => GP}/TestRosenbrockProblem_params.m (100%) rename MatlabGP/examples/{ => GP}/TestRosenbrockVGP.m (100%) rename MatlabGP/examples/{ => GP}/TestSmoothCircleProblem_NN.m (100%) rename MatlabGP/examples/{ => GP}/TestSmoothCircleProblem_clean.m (100%) rename MatlabGP/examples/{ => GP}/testGP2.m (100%) create mode 100644 MatlabGP/examples/GP/testGP_Adam.m rename MatlabGP/examples/{ => GP}/testMatrixKernel.m (100%) rename MatlabGP/examples/{ => GP}/testMatrixKernelSparse.m (100%) rename MatlabGP/examples/{ => GP}/testWNHetKernel.m (100%) rename MatlabGP/examples/{ => GP}/testWNKernel.m (100%) rename MatlabGP/examples/{ => NN}/TestGP_NN_Kernel.m (100%) rename MatlabGP/examples/{ => NN}/TestNNGP.m (100%) rename MatlabGP/examples/{ => NN}/testAE.m (100%) rename MatlabGP/examples/{ => NN}/testAtten.m (100%) rename MatlabGP/examples/{ => NN}/testConv1.m (100%) rename MatlabGP/examples/{ => NN}/testNN.m (100%) rename MatlabGP/examples/{ => NN}/testNN_2D.m (100%) rename MatlabGP/examples/{ => NN}/testNN_2D_batch.m (100%) create mode 100644 MatlabGP/examples/NN/testNN_Adam.m create mode 100644 MatlabGP/examples/NN/testNN_Adam_2.m rename MatlabGP/examples/{ => NN}/testNN_BNN.m (100%) rename MatlabGP/examples/{ => NN}/testNN_Ensemble.m (100%) rename MatlabGP/examples/{ => NN}/testNN_FAN.m (100%) rename MatlabGP/examples/{testNN_nll.m => NN/testNN_NLL.m} (100%) rename MatlabGP/examples/{ => NN}/testNN_NLL_2D.m (100%) rename MatlabGP/examples/{ => NN}/testNN_batch.m (100%) rename MatlabGP/examples/{ => NN}/testNN_class.m (100%) rename MatlabGP/examples/{ => NN}/testRRNN.m (100%) rename MatlabGP/examples/{ => NN}/testRRNN_2D.m (100%) rename MatlabGP/examples/{ => NN}/testVAE.m (100%) rename MatlabGP/examples/{ => NN}/testconv1d.m (100%) rename MatlabGP/examples/{ => NN}/testconv2d.m (100%) rename MatlabGP/examples/{ => ODE}/ODE_NS_1D.m (72%) create mode 100644 MatlabGP/examples/ODE/ODE_NS_2D.m rename MatlabGP/{ => examples/ODE}/PP_ODE_RV_Distribution.gif (100%) rename MatlabGP/{ => examples/ODE}/PP_ODE_RV_Distribution2.gif (100%) rename MatlabGP/examples/{ => ODE}/TestODEGradient.m (100%) rename MatlabGP/examples/{ => ODE}/TestODEGradient_Lorenz_opt.m (100%) rename MatlabGP/examples/{ => ODE}/TestODEGradient_PP.m (100%) rename MatlabGP/examples/{ => ODE}/TestODEGradient_SRI.m (100%) rename MatlabGP/examples/{ => ODE}/TestODEGradient_VDP.m (100%) rename MatlabGP/examples/{ => ODE}/TestODEGradient_VDP_opt.m (100%) rename MatlabGP/examples/{ => ODE}/TestODEGradient_pleiades.m (100%) delete mode 100644 MatlabGP/examples/ODE_NS_1D.asv rename MatlabGP/examples/{ => RL}/TestRL_AdaptiveSample.m (100%) rename MatlabGP/examples/{ => RL}/TestRL_AdaptiveSample_2.m (100%) rename MatlabGP/examples/{ => SVM}/TestMFSVM.m (100%) rename MatlabGP/examples/{ => SVM}/TestSVM.m (100%) diff --git a/MatlabGP/+ODE/+test/NS_1D_RHS.asv b/MatlabGP/+ODE/+test/NS_1D_RHS.asv deleted file mode 100644 index 498b8e9..0000000 --- a/MatlabGP/+ODE/+test/NS_1D_RHS.asv +++ /dev/null @@ -1,66 +0,0 @@ -function ydot = NS_1D_RHS(t,y,mu,K,gamma,dx) - -if nargin<4 - mu = 1e-3; - K = 1e-3; - gamma = 1.4; - dx=1; -end - -R = 8.314; - - -rho = y(:,1); -rhoU = y(:,2); -E = y(:,3); - -rhoU(1) = 0; -rhoU(end) = 0; - -rho(1) = rho(2); -E(1) = E(2); - -rho(end) = rho(end-1); -E(end) = E(end-1); - -%rho = utils.Filter(rho); -%rhoU = utils.Filter(rhoU); -%E = utils.Filter(E); - -U = rhoU./rho; - -dU = utils.Grad(U,dx); -%dU = utils.Filter(dU); - -rhoU2 = rhoU.*U; -%rhoU2 = utils.Filter(rhoU2); - -P = (gamma-1)*(E - 0.5*rhoU2); -%P = utils.Filter(P); - -T = P./(R*rho); -%T = utils.Filter(T); - -dT = utils.Grad(T,dx); -%dT = utils.Filter(dT); - -dF1 = utils.Grad(rhoU,dx); -dF2 = utils.Grad(rhoU2 + P,dx); -dF3 = utils.Grad((E+P).*U,dx); - -%dF1 = utils.Filter(dF1); -%dF2 = utils.Filter(dF2); -%dF3 = utils.Filter(dF3); - -dS2 = utils.Grad((4/3)*mu*dU,dx); -dS3 = utils.Grad((4/3)*mu*U.*dU + K*dT,dx); - -%dS2 = utils.Filter(dS2); -%dS3 = utils.Filter(dS3); - -ydot = [-dF1 dS2-dF2 dS3-dF3]; -ydot = utils.Filter(ydot); - -ydot(:) - -end \ No newline at end of file diff --git a/MatlabGP/+ODE/+test/NS_1D_RHS.m b/MatlabGP/+ODE/+test/NS_1D_RHS.m index c52603b..e8f2638 100644 --- a/MatlabGP/+ODE/+test/NS_1D_RHS.m +++ b/MatlabGP/+ODE/+test/NS_1D_RHS.m @@ -1,4 +1,4 @@ -function ydot = NS_1D_RHS(t,y,mu,K,gamma,dx) +function ydot = NS_1D_RHS(~,y,mu,K,gamma,dx) if nargin<4 mu = 1e-3; @@ -13,10 +13,6 @@ rhoU = y(:,2); E = y(:,3); -% rho = utils.Filter(rho); -% rhoU = utils.Filter(rhoU); -% E = utils.Filter(E); - rhoU(1) = 0; rhoU(end) = 0; @@ -26,21 +22,15 @@ rho(end) = rho(end-1); E(end) = E(end-1); - - U = rhoU./rho; dU = utils.Grad(U,dx); -%dU = utils.Filter(dU); rhoU2 = rhoU.*U; -%rhoU2 = utils.Filter(rhoU2); P = (gamma-1)*(E - 0.5*rhoU2); -%P = utils.Filter(P); T = P./(R*rho); -%T = utils.Filter(T); dT = utils.Grad(T,dx); dT = utils.Filter(dT); @@ -49,18 +39,10 @@ dF2 = utils.Grad(rhoU2 + P,dx); dF3 = utils.Grad((E+P).*U,dx); -%dF1 = utils.Filter(dF1); -%dF2 = utils.Filter(dF2); -%dF3 = utils.Filter(dF3); - dS2 = utils.Grad((4/3)*mu*dU,dx); dS3 = utils.Grad((4/3)*mu*U.*dU + K*dT,dx); -%dS2 = utils.Filter(dS2); -%dS3 = utils.Filter(dS3); - ydot = [-dF1 dS2-dF2 dS3-dF3]; -%ydot = utils.Filter(ydot); ydot(1,:) = 0; ydot(end,:) = 0; diff --git a/MatlabGP/+ODE/+test/NS_2D_RHS.m b/MatlabGP/+ODE/+test/NS_2D_RHS.m new file mode 100644 index 0000000..8e8adc5 --- /dev/null +++ b/MatlabGP/+ODE/+test/NS_2D_RHS.m @@ -0,0 +1,74 @@ +function ydot = NS_2D_RHS(~,y,mu,K,gamma,dx,dy) + +if nargin<3 + mu = 1e-3; + K = 1e-3; + gamma = 1.4; + dx=1; + dy=1; +end + +R = 8.314; + +rho = y(:,:,1); +rhoU = y(:,:,2); +rhoV = y(:,:,3); +E = y(:,:,4); + +rhoU(1,:) = 0; +rhoU(end,:) = 0; + +rhoV(1,:) = 0; +rhoV(end,:) = 0; + +rho(1,:) = rho(2,:); +E(1,:) = E(2,:); + +rho(end,:) = rho(end-1,:); +E(end,:) = E(end-1,:); + +U = rhoU./rho; +V = rhoV./rho; + +[dUy,dUx] = utils.Grad(U,dx,dy); +[dVy,dVx] = utils.Grad(V,dx,dy); + +rhoU2 = rhoU.*U; +rhoV2 = rhoV.*V; +rhoUV = rhoU.*V; + +P = (gamma-1)*(E - 0.5*(rhoU2+rhoV2)); + +T = P./(R*rho); + +[dTy,dTx] = utils.Grad(T,dx,dy); + +dF1 = utils.Grad(rhoU,dx,dy); +dF2 = utils.Grad(rhoU2 + P,dx); +dF3 = utils.Grad(rhoUV,dx); +dF4 = utils.Grad((E+P).*U,dx); + +[~,dG1] = utils.Grad(rhoV,dx,dy); +[~,dG2] = utils.Grad(rhoUV,dx,dy); +[~,dG3] = utils.Grad(rhoV2 + P,dx,dy); +[~,dG4] = utils.Grad((E+P).*V,dx,dy); + +dS2x = utils.Grad((4/3)*mu*dUx,dx,dy); +[~,dS2y] = utils.Grad((4/3)*mu*dUy,dx,dy); + +dS3x = utils.Grad((4/3)*mu*dVx,dx,dy); +[~,dS3y] = utils.Grad((4/3)*mu*dVy,dx,dy); + +dS4x = utils.Grad((4/3)*mu*U.*dUx + K*dTx,dx,dy); +[~,dS4y] = utils.Grad((4/3)*mu*V.*dVy + K*dTy,dx,dy); + +ydot(:,:,1) = -dF1 - dG1; +ydot(:,:,2) = dS2x + dS2y -dF2 - dG2; +ydot(:,:,3) = dS3x + dS3y -dF3 - dG3; +ydot(:,:,4) = dS4x + dS4y -dF4 - dG4; + + +ydot(1,:,:) = 0; +ydot(end,:,:) = 0; + +end \ No newline at end of file diff --git a/MatlabGP/+ODE/rkf45.m b/MatlabGP/+ODE/rkf45.m index 123cbec..09fe37c 100644 --- a/MatlabGP/+ODE/rkf45.m +++ b/MatlabGP/+ODE/rkf45.m @@ -42,7 +42,7 @@ Z = yn + 16/135*k1 + 6656/12825*k3 + 28561/56430*k4 - 9/50*k5 + ... 2/55*k6; - E = norm(Y-Z); % local error estimation + E = norm(Y-Z,'fro'); % local error estimation h = 0.9 * h * (TOL/E)^(1/5); y{k} = Y; diff --git a/MatlabGP/+optim/Adam.m b/MatlabGP/+optim/Adam.m new file mode 100644 index 0000000..f2e2294 --- /dev/null +++ b/MatlabGP/+optim/Adam.m @@ -0,0 +1,94 @@ +classdef Adam + + properties + + iter = 0; + + lb = []; + ub = []; + + lr + + wd + + beta1 + beta2 + + mt + vt + end + + methods + + function obj = Adam(x0,varargin) + + input=inputParser; + input.KeepUnmatched=true; + input.PartialMatching=false; + input.addOptional('lb',[]); + input.addOptional('ub',[]); + input.addOptional('beta1',0.9); + input.addOptional('beta2',0.999); + input.addOptional('lr',0.1); + input.addOptional('wd',0); + input.parse(varargin{:}) + in=input.Results; + + obj.lb = in.lb; + obj.ub = in.ub; + + obj.lr = in.lr; + + obj.mt = 0*x0; + obj.vt = 0*x0; + + obj.beta1 = in.beta1; + obj.beta2 = in.beta2; + + obj.wd = in.wd; + + + end + + function [obj,x] = step(obj,x,dF) + + obj.iter = obj.iter + 1; + + dF = dF + obj.wd.*x; + + obj.mt = obj.beta1*obj.mt + (1 - obj.beta1)*dF; + obj.vt = obj.beta2*obj.vt + (1 - obj.beta2)*dF.^2; + + mth = obj.mt./(1 - obj.beta1); + vth = obj.vt./(1 - obj.beta2); + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%% End Update Algorithm params %%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + %update parameters + x = x - obj.lr*mth./(sqrt(vth) + eps ); + + %reflective upper bound + if ~isempty(obj.ub) + for jj = 1:length(x) + if x(jj)>obj.ub(jj) + x(jj)=obj.ub(jj) - 0.1*abs(obj.lr*mth(jj)./(sqrt(vth(jj)) + eps)); + end + end + end + + %reflective lower bound + if ~isempty(obj.lb) + for jj = 1:length(x) + if x(jj)obj.ub(jj) + x(jj)=obj.ub(jj) - 0.1*abs(obj.lr*dF(jj)); + end + end + end + + %reflective lower bound + if ~isempty(obj.lb) + for jj = 1:length(x) + if x(jj)=1 + if ishandle(h) + set(0, 'CurrentFigure', h); + else + h = figure(h); + end +else + h = figure; +end \ No newline at end of file diff --git a/MatlabGP/+utils/tridiag.m b/MatlabGP/+utils/tridiag.m index 8784e77..ca2b779 100644 --- a/MatlabGP/+utils/tridiag.m +++ b/MatlabGP/+utils/tridiag.m @@ -13,7 +13,7 @@ % a, b, c must be vectors of length n (note that b(1) and c(n) are not used) % some additional information is at the end of the file [n,nz] = size(f); -v = zeros(n,nz); +v = zeros(n,nz,'like',f); y = v; w = a(1); y(1,:) = f(1,:)/w; diff --git a/MatlabGP/AutoDiff/AutoDiff.m b/MatlabGP/AutoDiff/AutoDiff.m index 39d1c0c..403303d 100644 --- a/MatlabGP/AutoDiff/AutoDiff.m +++ b/MatlabGP/AutoDiff/AutoDiff.m @@ -182,6 +182,12 @@ x.values = erf(x.values); end + function x = erfc(x) + tmp = 2*exp(-1*x.values.^2)/sqrt(pi); + x.derivatives = -1*AutoDiff.spdiag(tmp) * x.derivatives; + x.values = erfc(x.values); + end + function x = gamma(x) tmp = gamma(x.values).*psi(x.values); x.values = gamma(x.values); diff --git a/MatlabGP/GP.m b/MatlabGP/GP.m index 7429494..693ad36 100644 --- a/MatlabGP/GP.m +++ b/MatlabGP/GP.m @@ -211,7 +211,7 @@ detk = det(obj.K/obj.kernel.scale + diag(0*obj.K(:,1) + obj.kernel.signn)); - loss_nll = -0.5*log(sqrt(obj.kernel.scale)) - 0.5*log(abs(detk)+eps);% + 0.01*sum(log(eps+gampdf(abs(theta(ntm+1:end)),1.1,0.5))); + loss_nll = -0.5*log(sqrt(obj.kernel.scale)) - 0.5*log(abs(detk)+eps) + 1*sum(log(eps+gampdf(abs(theta(ntm+1:end)),1.1,0.5))); loss_nll = -1*loss_nll; diff --git a/MatlabGP/examples/TestBackslashGradient.m b/MatlabGP/examples/AutoDiff/TestBackslashGradient.m similarity index 100% rename from MatlabGP/examples/TestBackslashGradient.m rename to MatlabGP/examples/AutoDiff/TestBackslashGradient.m diff --git a/MatlabGP/examples/TestCholGradient.m b/MatlabGP/examples/AutoDiff/TestCholGradient.m similarity index 100% rename from MatlabGP/examples/TestCholGradient.m rename to MatlabGP/examples/AutoDiff/TestCholGradient.m diff --git a/MatlabGP/examples/testAutoDiff.m b/MatlabGP/examples/AutoDiff/testAutoDiff.m similarity index 100% rename from MatlabGP/examples/testAutoDiff.m rename to MatlabGP/examples/AutoDiff/testAutoDiff.m diff --git a/MatlabGP/examples/TestMultiOutput.m b/MatlabGP/examples/BO/TestMultiOutput.m similarity index 100% rename from MatlabGP/examples/TestMultiOutput.m rename to MatlabGP/examples/BO/TestMultiOutput.m diff --git a/MatlabGP/examples/testMOGP.m b/MatlabGP/examples/BO/testMOGP.m similarity index 100% rename from MatlabGP/examples/testMOGP.m rename to MatlabGP/examples/BO/testMOGP.m diff --git a/MatlabGP/examples/testMOGP_2D.m b/MatlabGP/examples/BO/testMOGP_2D.m similarity index 100% rename from MatlabGP/examples/testMOGP_2D.m rename to MatlabGP/examples/BO/testMOGP_2D.m diff --git a/MatlabGP/examples/testMOGP_2D_2O.m b/MatlabGP/examples/BO/testMOGP_2D_2O.m similarity index 100% rename from MatlabGP/examples/testMOGP_2D_2O.m rename to MatlabGP/examples/BO/testMOGP_2D_2O.m diff --git a/MatlabGP/examples/EQ_matrix.mlx b/MatlabGP/examples/GP/EQ_matrix.mlx similarity index 100% rename from MatlabGP/examples/EQ_matrix.mlx rename to MatlabGP/examples/GP/EQ_matrix.mlx diff --git a/MatlabGP/examples/RosenbrockParamSweep.mat b/MatlabGP/examples/GP/RosenbrockParamSweep.mat similarity index 100% rename from MatlabGP/examples/RosenbrockParamSweep.mat rename to MatlabGP/examples/GP/RosenbrockParamSweep.mat diff --git a/MatlabGP/examples/RosenbrockParameterSweep.fig b/MatlabGP/examples/GP/RosenbrockParameterSweep.fig similarity index 100% rename from MatlabGP/examples/RosenbrockParameterSweep.fig rename to MatlabGP/examples/GP/RosenbrockParameterSweep.fig diff --git a/MatlabGP/examples/RosenbrockParameterSweep.svg b/MatlabGP/examples/GP/RosenbrockParameterSweep.svg similarity index 100% rename from MatlabGP/examples/RosenbrockParameterSweep.svg rename to MatlabGP/examples/GP/RosenbrockParameterSweep.svg diff --git a/MatlabGP/examples/RunRosenbrockParams.m b/MatlabGP/examples/GP/RunRosenbrockParams.m similarity index 100% rename from MatlabGP/examples/RunRosenbrockParams.m rename to MatlabGP/examples/GP/RunRosenbrockParams.m diff --git a/MatlabGP/examples/TestAppliedAviationProblem.asv b/MatlabGP/examples/GP/TestAppliedAviationProblem.asv similarity index 100% rename from MatlabGP/examples/TestAppliedAviationProblem.asv rename to MatlabGP/examples/GP/TestAppliedAviationProblem.asv diff --git a/MatlabGP/examples/TestAppliedAviationProblem.m b/MatlabGP/examples/GP/TestAppliedAviationProblem.m similarity index 100% rename from MatlabGP/examples/TestAppliedAviationProblem.m rename to MatlabGP/examples/GP/TestAppliedAviationProblem.m diff --git a/MatlabGP/examples/TestAppliedAviationProblem_clean.m b/MatlabGP/examples/GP/TestAppliedAviationProblem_clean.m similarity index 100% rename from MatlabGP/examples/TestAppliedAviationProblem_clean.m rename to MatlabGP/examples/GP/TestAppliedAviationProblem_clean.m diff --git a/MatlabGP/examples/TestBlockPI.m b/MatlabGP/examples/GP/TestBlockPI.m similarity index 100% rename from MatlabGP/examples/TestBlockPI.m rename to MatlabGP/examples/GP/TestBlockPI.m diff --git a/MatlabGP/examples/TestForresterProblem_clean.m b/MatlabGP/examples/GP/TestForresterProblem_clean.m similarity index 100% rename from MatlabGP/examples/TestForresterProblem_clean.m rename to MatlabGP/examples/GP/TestForresterProblem_clean.m diff --git a/MatlabGP/examples/TestHetNoiseKernel.m b/MatlabGP/examples/GP/TestHetNoiseKernel.m similarity index 100% rename from MatlabGP/examples/TestHetNoiseKernel.m rename to MatlabGP/examples/GP/TestHetNoiseKernel.m diff --git a/MatlabGP/examples/TestICD.m b/MatlabGP/examples/GP/TestICD.m similarity index 100% rename from MatlabGP/examples/TestICD.m rename to MatlabGP/examples/GP/TestICD.m diff --git a/MatlabGP/examples/TestICD_2D.m b/MatlabGP/examples/GP/TestICD_2D.m similarity index 100% rename from MatlabGP/examples/TestICD_2D.m rename to MatlabGP/examples/GP/TestICD_2D.m diff --git a/MatlabGP/examples/TestInverse.m b/MatlabGP/examples/GP/TestInverse.m similarity index 100% rename from MatlabGP/examples/TestInverse.m rename to MatlabGP/examples/GP/TestInverse.m diff --git a/MatlabGP/examples/TestRosenbrockProblem.m b/MatlabGP/examples/GP/TestRosenbrockProblem.m similarity index 100% rename from MatlabGP/examples/TestRosenbrockProblem.m rename to MatlabGP/examples/GP/TestRosenbrockProblem.m diff --git a/MatlabGP/examples/TestRosenbrockProblemKISS.m b/MatlabGP/examples/GP/TestRosenbrockProblemKISS.m similarity index 100% rename from MatlabGP/examples/TestRosenbrockProblemKISS.m rename to MatlabGP/examples/GP/TestRosenbrockProblemKISS.m diff --git a/MatlabGP/examples/TestRosenbrockProblemMFNN.m b/MatlabGP/examples/GP/TestRosenbrockProblemMFNN.m similarity index 100% rename from MatlabGP/examples/TestRosenbrockProblemMFNN.m rename to MatlabGP/examples/GP/TestRosenbrockProblemMFNN.m diff --git a/MatlabGP/examples/TestRosenbrockProblemMFNNGP.m b/MatlabGP/examples/GP/TestRosenbrockProblemMFNNGP.m similarity index 100% rename from MatlabGP/examples/TestRosenbrockProblemMFNNGP.m rename to MatlabGP/examples/GP/TestRosenbrockProblemMFNNGP.m diff --git a/MatlabGP/examples/TestRosenbrockProblem_OPT.m b/MatlabGP/examples/GP/TestRosenbrockProblem_OPT.m similarity index 100% rename from MatlabGP/examples/TestRosenbrockProblem_OPT.m rename to MatlabGP/examples/GP/TestRosenbrockProblem_OPT.m diff --git a/MatlabGP/examples/TestRosenbrockProblem_clean.m b/MatlabGP/examples/GP/TestRosenbrockProblem_clean.m similarity index 100% rename from MatlabGP/examples/TestRosenbrockProblem_clean.m rename to MatlabGP/examples/GP/TestRosenbrockProblem_clean.m diff --git a/MatlabGP/examples/TestRosenbrockProblem_params.m b/MatlabGP/examples/GP/TestRosenbrockProblem_params.m similarity index 100% rename from MatlabGP/examples/TestRosenbrockProblem_params.m rename to MatlabGP/examples/GP/TestRosenbrockProblem_params.m diff --git a/MatlabGP/examples/TestRosenbrockVGP.m b/MatlabGP/examples/GP/TestRosenbrockVGP.m similarity index 100% rename from MatlabGP/examples/TestRosenbrockVGP.m rename to MatlabGP/examples/GP/TestRosenbrockVGP.m diff --git a/MatlabGP/examples/TestSmoothCircleProblem_NN.m b/MatlabGP/examples/GP/TestSmoothCircleProblem_NN.m similarity index 100% rename from MatlabGP/examples/TestSmoothCircleProblem_NN.m rename to MatlabGP/examples/GP/TestSmoothCircleProblem_NN.m diff --git a/MatlabGP/examples/TestSmoothCircleProblem_clean.m b/MatlabGP/examples/GP/TestSmoothCircleProblem_clean.m similarity index 100% rename from MatlabGP/examples/TestSmoothCircleProblem_clean.m rename to MatlabGP/examples/GP/TestSmoothCircleProblem_clean.m diff --git a/MatlabGP/examples/testGP2.m b/MatlabGP/examples/GP/testGP2.m similarity index 100% rename from MatlabGP/examples/testGP2.m rename to MatlabGP/examples/GP/testGP2.m diff --git a/MatlabGP/examples/GP/testGP_Adam.m b/MatlabGP/examples/GP/testGP_Adam.m new file mode 100644 index 0000000..83ed1d3 --- /dev/null +++ b/MatlabGP/examples/GP/testGP_Adam.m @@ -0,0 +1,86 @@ + +clear +close all +clc + +xx = [0;lhsdesign(4,1);1]; +yy = forr(xx,0); + +xmesh = linspace(0,1,100)'; +ymesh = forr(xmesh,0); + +%% + +a = means.const(1)+means.linear(1); + +b = kernels.EQ(0.5,5)+kernels.Matern52(0.5,5); +b.signn = eps; + +%% +Z = GP(a,b); + +%% +Z1 = Z.condition(xx,yy); + +%% +tic +V = Z1.getHPs(); + +opt = optim.Adam(V,'lr',0.2); + +for i = 1:30 + + Vi(:,i) = V; + + [e(i),dV] = Z1.loss(V); + [opt,V] = opt.step(V,dV); + +end + +Z2 = Z1.setHPs(V); +Z2 = Z2.condition(xx,yy); +toc + +tic +Z3 = Z1.train(); +toc + +tic +Z4 = Z1.train2(); +toc + +%% + +figure +utils.plotLineOut(Z2,1,1,'color','g') +hold on +plot(xx,yy,'.') + +figure +utils.plotLineOut(Z3,1,1,'color','g') +hold on +plot(xx,yy,'.') + +figure +utils.plotLineOut(Z4,1,1,'color','g') +hold on +plot(xx,yy,'.') + +%% + +function y = forr(x,dx) + +nx = length(x); + +A = 0.5; B = 10; C = -5; + +for i = 1:nx + if x(i)<0.45 + y(i,1) = (6*x(i)-2).^2.*sin(12*x(i)-4); + else + y(i,1) = (6*x(i)-2).^2.*sin(12*x(i)-4)+dx; + end +end + +end + diff --git a/MatlabGP/examples/testMatrixKernel.m b/MatlabGP/examples/GP/testMatrixKernel.m similarity index 100% rename from MatlabGP/examples/testMatrixKernel.m rename to MatlabGP/examples/GP/testMatrixKernel.m diff --git a/MatlabGP/examples/testMatrixKernelSparse.m b/MatlabGP/examples/GP/testMatrixKernelSparse.m similarity index 100% rename from MatlabGP/examples/testMatrixKernelSparse.m rename to MatlabGP/examples/GP/testMatrixKernelSparse.m diff --git a/MatlabGP/examples/testWNHetKernel.m b/MatlabGP/examples/GP/testWNHetKernel.m similarity index 100% rename from MatlabGP/examples/testWNHetKernel.m rename to MatlabGP/examples/GP/testWNHetKernel.m diff --git a/MatlabGP/examples/testWNKernel.m b/MatlabGP/examples/GP/testWNKernel.m similarity index 100% rename from MatlabGP/examples/testWNKernel.m rename to MatlabGP/examples/GP/testWNKernel.m diff --git a/MatlabGP/examples/TestGP_NN_Kernel.m b/MatlabGP/examples/NN/TestGP_NN_Kernel.m similarity index 100% rename from MatlabGP/examples/TestGP_NN_Kernel.m rename to MatlabGP/examples/NN/TestGP_NN_Kernel.m diff --git a/MatlabGP/examples/TestNNGP.m b/MatlabGP/examples/NN/TestNNGP.m similarity index 100% rename from MatlabGP/examples/TestNNGP.m rename to MatlabGP/examples/NN/TestNNGP.m diff --git a/MatlabGP/examples/testAE.m b/MatlabGP/examples/NN/testAE.m similarity index 100% rename from MatlabGP/examples/testAE.m rename to MatlabGP/examples/NN/testAE.m diff --git a/MatlabGP/examples/testAtten.m b/MatlabGP/examples/NN/testAtten.m similarity index 100% rename from MatlabGP/examples/testAtten.m rename to MatlabGP/examples/NN/testAtten.m diff --git a/MatlabGP/examples/testConv1.m b/MatlabGP/examples/NN/testConv1.m similarity index 100% rename from MatlabGP/examples/testConv1.m rename to MatlabGP/examples/NN/testConv1.m diff --git a/MatlabGP/examples/testNN.m b/MatlabGP/examples/NN/testNN.m similarity index 100% rename from MatlabGP/examples/testNN.m rename to MatlabGP/examples/NN/testNN.m diff --git a/MatlabGP/examples/testNN_2D.m b/MatlabGP/examples/NN/testNN_2D.m similarity index 100% rename from MatlabGP/examples/testNN_2D.m rename to MatlabGP/examples/NN/testNN_2D.m diff --git a/MatlabGP/examples/testNN_2D_batch.m b/MatlabGP/examples/NN/testNN_2D_batch.m similarity index 100% rename from MatlabGP/examples/testNN_2D_batch.m rename to MatlabGP/examples/NN/testNN_2D_batch.m diff --git a/MatlabGP/examples/NN/testNN_Adam.m b/MatlabGP/examples/NN/testNN_Adam.m new file mode 100644 index 0000000..81bdb88 --- /dev/null +++ b/MatlabGP/examples/NN/testNN_Adam.m @@ -0,0 +1,83 @@ + +clear +close all +clc + +xx = [0;lhsdesign(10,1);1]; +yy = normrnd(forr(xx,0),0*forr(xx,0)); + +xmesh = linspace(0,1,100)'; +ymesh = forr(xmesh,0); + +layers{1} = NN.FAN(1,10,4); +layers{2} = NN.FAN(10,10,3); +layers{3} = NN.FF(10,3); + +acts{1} = NN.SWISH(1.2); +acts{2} = NN.SWISH(0.8); + +lss = NN.MAE(); + +nnet = NN.NN(layers,acts,lss); + +%% + +tic + +V = nnet.getHPs(); + +opt = optim.Adam(V,'lr',0.1); + +for i = 1:500 + + Vi(:,i) = V; + + [e(i),dV] = nnet.loss(V,xx,yy); + [opt,V] = opt.step(V,dV); + + % figure(1) + % clf(1) + % plot(e) + % set(gca,'yscale','log') + % set(gca,'xscale','log') + +end + +nnet = nnet.setHPs(V); + +toc + +%% + +yp2 = nnet.predict(xmesh); + + +%% + +figure +plot(xmesh,ymesh) +hold on +plot(xmesh,yp2) +plot(xx,yy,'x') + +%% + +function y = forr(x,dx) + +nx = length(x); + +A = 0.5; B = 10; C = -5; + +for i = 1:nx + if x(i)<0.45 + y(i,1) = (6*x(i)-2).^2.*sin(12*x(i)-4); + else + y(i,1) = (6*x(i)-2).^2.*sin(12*x(i)-4)+dx; + end + + y(i,2) = 0.4*(6*x(i)-2).^2.*sin(12*x(i)-4)-x(i)-1; + y(i,3) = A*(6*x(i)-2).^2.*sin(12*x(i)-4)+B*(x(i)-0.5)-C; +end + +end + diff --git a/MatlabGP/examples/NN/testNN_Adam_2.m b/MatlabGP/examples/NN/testNN_Adam_2.m new file mode 100644 index 0000000..94d4730 --- /dev/null +++ b/MatlabGP/examples/NN/testNN_Adam_2.m @@ -0,0 +1,119 @@ + +clear +close all +clc + +xx = [0;lhsdesign(10,1);1]; +yy = normrnd(forr(xx,0),0*forr(xx,0)); + +xmesh = linspace(0,1,100)'; +ymesh = forr(xmesh,0); + +layers{1} = NN.FF(1,3); +layers{2} = NN.FF(3,3); +layers{3} = NN.FF(3,3); + +acts{1} = NN.SWISH(1.8); +acts{2} = NN.SWISH(0.8); + +lss = NN.MAE(); + +nnet = NN.NN(layers,acts,lss); + +%% + +V = nnet.getHPs(); + +opt = optim.Adam(V,'lr',0.01); + +%opt = optim.VSGD(V,'lr',0.5,'gamma',1*10^(-3)); + +N = 3; + +eMv = 0; +iim = 0; + +n = 0; +figure(1) + +for i = 1:1000 + xt = xx; + yt = yy; + M=0; + dV = 0*V; + eM = 0; + + while size(xt,1)>0 + n=n+1; + M=M+1; + itrain = randsample(size(xt,1),min(N,size(xt,1))); + + xtt = xt(itrain,:); + ytt = yt(itrain,:); + + xt(itrain,:)=[]; + yt(itrain,:)=[]; + + [e(n),dVi] = nnet.loss(V,xtt,ytt); + + %e(n) = e(n)/length(itrain); + eM = eM + e(n); + + %[opt,V] = opt.step(V,dVi); + + dV = dV + dVi; + + utils.sfigure(1) + clf(1) + hold on + plot(e,'LineWidth',3) + plot(iim,eMv,'x','MarkerSize',15,'LineWidth',3) + set(gca,'yscale','log') + set(gca,'xscale','log') + drawnow + + end + + eMv(i) = eM/M; + iim(i) = n; + + [opt,V] = opt.step(V,dV/M); + +end + +nnet = nnet.setHPs(V); + +%% + +yp2 = nnet.predict(xmesh); + + +%% + +figure +plot(xmesh,ymesh) +hold on +plot(xmesh,yp2) +plot(xx,yy,'x') + +%% + +function y = forr(x,dx) + +nx = length(x); + +A = 0.5; B = 10; C = -5; + +for i = 1:nx + if x(i)<0.45 + y(i,1) = (6*x(i)-2).^2.*sin(12*x(i)-4); + else + y(i,1) = (6*x(i)-2).^2.*sin(12*x(i)-4)+dx; + end + + y(i,2) = 0.4*(6*x(i)-2).^2.*sin(12*x(i)-4)-x(i)-1; + y(i,3) = A*(6*x(i)-2).^2.*sin(12*x(i)-4)+B*(x(i)-0.5)-C; +end + +end + diff --git a/MatlabGP/examples/testNN_BNN.m b/MatlabGP/examples/NN/testNN_BNN.m similarity index 100% rename from MatlabGP/examples/testNN_BNN.m rename to MatlabGP/examples/NN/testNN_BNN.m diff --git a/MatlabGP/examples/testNN_Ensemble.m b/MatlabGP/examples/NN/testNN_Ensemble.m similarity index 100% rename from MatlabGP/examples/testNN_Ensemble.m rename to MatlabGP/examples/NN/testNN_Ensemble.m diff --git a/MatlabGP/examples/testNN_FAN.m b/MatlabGP/examples/NN/testNN_FAN.m similarity index 100% rename from MatlabGP/examples/testNN_FAN.m rename to MatlabGP/examples/NN/testNN_FAN.m diff --git a/MatlabGP/examples/testNN_nll.m b/MatlabGP/examples/NN/testNN_NLL.m similarity index 100% rename from MatlabGP/examples/testNN_nll.m rename to MatlabGP/examples/NN/testNN_NLL.m diff --git a/MatlabGP/examples/testNN_NLL_2D.m b/MatlabGP/examples/NN/testNN_NLL_2D.m similarity index 100% rename from MatlabGP/examples/testNN_NLL_2D.m rename to MatlabGP/examples/NN/testNN_NLL_2D.m diff --git a/MatlabGP/examples/testNN_batch.m b/MatlabGP/examples/NN/testNN_batch.m similarity index 100% rename from MatlabGP/examples/testNN_batch.m rename to MatlabGP/examples/NN/testNN_batch.m diff --git a/MatlabGP/examples/testNN_class.m b/MatlabGP/examples/NN/testNN_class.m similarity index 100% rename from MatlabGP/examples/testNN_class.m rename to MatlabGP/examples/NN/testNN_class.m diff --git a/MatlabGP/examples/testRRNN.m b/MatlabGP/examples/NN/testRRNN.m similarity index 100% rename from MatlabGP/examples/testRRNN.m rename to MatlabGP/examples/NN/testRRNN.m diff --git a/MatlabGP/examples/testRRNN_2D.m b/MatlabGP/examples/NN/testRRNN_2D.m similarity index 100% rename from MatlabGP/examples/testRRNN_2D.m rename to MatlabGP/examples/NN/testRRNN_2D.m diff --git a/MatlabGP/examples/testVAE.m b/MatlabGP/examples/NN/testVAE.m similarity index 100% rename from MatlabGP/examples/testVAE.m rename to MatlabGP/examples/NN/testVAE.m diff --git a/MatlabGP/examples/testconv1d.m b/MatlabGP/examples/NN/testconv1d.m similarity index 100% rename from MatlabGP/examples/testconv1d.m rename to MatlabGP/examples/NN/testconv1d.m diff --git a/MatlabGP/examples/testconv2d.m b/MatlabGP/examples/NN/testconv2d.m similarity index 100% rename from MatlabGP/examples/testconv2d.m rename to MatlabGP/examples/NN/testconv2d.m diff --git a/MatlabGP/examples/ODE_NS_1D.m b/MatlabGP/examples/ODE/ODE_NS_1D.m similarity index 72% rename from MatlabGP/examples/ODE_NS_1D.m rename to MatlabGP/examples/ODE/ODE_NS_1D.m index 2c70824..455e1c8 100644 --- a/MatlabGP/examples/ODE_NS_1D.m +++ b/MatlabGP/examples/ODE/ODE_NS_1D.m @@ -2,34 +2,41 @@ clc gamma = 1.4; -mu = 1e-1; -K = 1e-1; +mu = 5e-1; +K = 5e-1; -tf = 400; +tf = 150; -x = linspace(0,1,200)'; +xs0 = 2; %Shock location +xi0 = 7; %Interface location -ss = 0.5*erfc(100*(x-0.3)); +ls0 = 0.003; %Shock width +li0 = 0.003; %interface width -ss2 = 2 + (1 - 2)*0.5*erfc(10*(x-0.7)); +x = linspace(0,9,100)'; -dx = 0.8; +ss = 0.5*erfc((x-xs0)/ls0); + +ss2 = 3 + (1 - 3)*0.5*erfc((x-xi0)/li0); + +dx = 2*0.5; rho = 0.125 + (1 - 0.125)*ss; rho = rho.*ss2; -U = 0*x; +U = 0*rho; P = 0.1 + (1.2 - 0.1)*ss; E = P./(gamma-1) + 0.5*rho.*U.^2; y0 = [rho rho.*U E]; + %% tic -[tf, yf] = ODE.rkf45(@(t,y) ODE.test.NS_1D_RHS(t,y,mu,K,gamma,dx), y0, 0, tf, 0.003,1e-6); +[tf, yf] = ODE.rkf45(@(t,y) ODE.test.NS_1D_RHS(t,y,mu,K,gamma,dx), y0, 0, tf, 0.03,1e-4); toc yfv=[]; diff --git a/MatlabGP/examples/ODE/ODE_NS_2D.m b/MatlabGP/examples/ODE/ODE_NS_2D.m new file mode 100644 index 0000000..d58a8e8 --- /dev/null +++ b/MatlabGP/examples/ODE/ODE_NS_2D.m @@ -0,0 +1,67 @@ +clear +clc + +gamma = 1.4; +mu = 5e-1; +K = 5e-1; + +tf = 10; + +xs0 = 2; %Shock location +xi0 = 7; %Interface location + +ls0 = 0.003; %Shock width +li0 = 0.003; %interface width + +x = linspace(0,9,200)'; +y = linspace(-1,1,100)'; + +[Y,X] = meshgrid(y,x); + +ss = 0.5*erfc((X-xs0)/ls0); + +ss2 = 3 + (1 - 3)*0.5*erfc((X-xi0 + 0.5*cos(10*Y))/li0); + +dx = 0.8; +dy=dx; + +rho = 0.125 + (1 - 0.125)*ss; + +rho = rho.*ss2; + +U = 0*rho; +V = 0*rho; +P = 0.1 + (1.2 - 0.1)*ss; + +E = P./(gamma-1) + 0.5*rho.*U.^2 + 0.5*rho.*V.^2; + +y0(:,:,1) = rho; +y0(:,:,2) = rho.*U; +y0(:,:,3) = rho.*V; +y0(:,:,4) = E; + + +dy0 = ODE.test.NS_2D_RHS(0,y0,mu,K,gamma,dx,dy); + +%% + +tic +[tf, yf] = ODE.TVD_rk3(@(t,y) ODE.test.NS_2D_RHS(t,y,mu,K,gamma,dx,dy), y0, 0, tf, 0.03); +toc + +yfv=[]; + +for i = 1:length(tf) + yfv = yf{i}; + rv(:,:,i) = squeeze(yfv(:,:,1)); + Uv(:,:,i) = squeeze(yfv(:,:,2))./rv(:,:,i); + Vv(:,:,i) = squeeze(yfv(:,:,3))./rv(:,:,i); + Ev(:,:,i) = squeeze(yfv(:,:,4))./rv(:,:,i); +end + +%% +figure +pcolor(x,y,squeeze(rv(:,:,1))') +shading flat +utils.cmocean('thermal') +colorbar diff --git a/MatlabGP/PP_ODE_RV_Distribution.gif b/MatlabGP/examples/ODE/PP_ODE_RV_Distribution.gif similarity index 100% rename from MatlabGP/PP_ODE_RV_Distribution.gif rename to MatlabGP/examples/ODE/PP_ODE_RV_Distribution.gif diff --git a/MatlabGP/PP_ODE_RV_Distribution2.gif b/MatlabGP/examples/ODE/PP_ODE_RV_Distribution2.gif similarity index 100% rename from MatlabGP/PP_ODE_RV_Distribution2.gif rename to MatlabGP/examples/ODE/PP_ODE_RV_Distribution2.gif diff --git a/MatlabGP/examples/TestODEGradient.m b/MatlabGP/examples/ODE/TestODEGradient.m similarity index 100% rename from MatlabGP/examples/TestODEGradient.m rename to MatlabGP/examples/ODE/TestODEGradient.m diff --git a/MatlabGP/examples/TestODEGradient_Lorenz_opt.m b/MatlabGP/examples/ODE/TestODEGradient_Lorenz_opt.m similarity index 100% rename from MatlabGP/examples/TestODEGradient_Lorenz_opt.m rename to MatlabGP/examples/ODE/TestODEGradient_Lorenz_opt.m diff --git a/MatlabGP/examples/TestODEGradient_PP.m b/MatlabGP/examples/ODE/TestODEGradient_PP.m similarity index 100% rename from MatlabGP/examples/TestODEGradient_PP.m rename to MatlabGP/examples/ODE/TestODEGradient_PP.m diff --git a/MatlabGP/examples/TestODEGradient_SRI.m b/MatlabGP/examples/ODE/TestODEGradient_SRI.m similarity index 100% rename from MatlabGP/examples/TestODEGradient_SRI.m rename to MatlabGP/examples/ODE/TestODEGradient_SRI.m diff --git a/MatlabGP/examples/TestODEGradient_VDP.m b/MatlabGP/examples/ODE/TestODEGradient_VDP.m similarity index 100% rename from MatlabGP/examples/TestODEGradient_VDP.m rename to MatlabGP/examples/ODE/TestODEGradient_VDP.m diff --git a/MatlabGP/examples/TestODEGradient_VDP_opt.m b/MatlabGP/examples/ODE/TestODEGradient_VDP_opt.m similarity index 100% rename from MatlabGP/examples/TestODEGradient_VDP_opt.m rename to MatlabGP/examples/ODE/TestODEGradient_VDP_opt.m diff --git a/MatlabGP/examples/TestODEGradient_pleiades.m b/MatlabGP/examples/ODE/TestODEGradient_pleiades.m similarity index 100% rename from MatlabGP/examples/TestODEGradient_pleiades.m rename to MatlabGP/examples/ODE/TestODEGradient_pleiades.m diff --git a/MatlabGP/examples/ODE_NS_1D.asv b/MatlabGP/examples/ODE_NS_1D.asv deleted file mode 100644 index 4bf7dcf..0000000 --- a/MatlabGP/examples/ODE_NS_1D.asv +++ /dev/null @@ -1,44 +0,0 @@ -clear -clc - -gamma = 1.4; -mu = 1e-2; -K = 1e-2; - -x = linspace(0,1,100)'; - -ss = 0.5*erfc(200*(x-0.3)); - -dx = 1; - -rho = 0.125 + (1 - 0.125)*ss; -U = 0*x; -P = 0.1 + (1 - 0.1)*ss; - -E = P./(gamma-1) + 0.5*rho.*U.^2; - -y0 = [rho rho.*U E]; - -%% - -tic -[tf, yf] = ODE.rkf45(@(t,y) ODE.test.NS_1D_RHS(t,y,mu,K,gamma,dx), y0, 0, 35, 0.01, 1e-9); -toc - -yfv=[]; - -for i = 1:length(tf) - yfv(:,:,i) = yf{i}; -end - -%% -figure -subplot(3,1,1) -pcolor(x,tf,squeeze(yfv(:,1,:))') -shading flat -subplot(3,1,2) -pcolor(x,tf,squeeze(yfv(:,2,:))'./squeeze(yfv(:,1,:))') -shading flat -subplot(3,1,3) -pcolor(x,tf,squeeze(yfv(:,3,:))') -shading flat \ No newline at end of file diff --git a/MatlabGP/examples/TestRL_AdaptiveSample.m b/MatlabGP/examples/RL/TestRL_AdaptiveSample.m similarity index 100% rename from MatlabGP/examples/TestRL_AdaptiveSample.m rename to MatlabGP/examples/RL/TestRL_AdaptiveSample.m diff --git a/MatlabGP/examples/TestRL_AdaptiveSample_2.m b/MatlabGP/examples/RL/TestRL_AdaptiveSample_2.m similarity index 100% rename from MatlabGP/examples/TestRL_AdaptiveSample_2.m rename to MatlabGP/examples/RL/TestRL_AdaptiveSample_2.m diff --git a/MatlabGP/examples/TestMFSVM.m b/MatlabGP/examples/SVM/TestMFSVM.m similarity index 100% rename from MatlabGP/examples/TestMFSVM.m rename to MatlabGP/examples/SVM/TestMFSVM.m diff --git a/MatlabGP/examples/TestSVM.m b/MatlabGP/examples/SVM/TestSVM.m similarity index 100% rename from MatlabGP/examples/TestSVM.m rename to MatlabGP/examples/SVM/TestSVM.m