Mercurial > forge
changeset 3636:90d9933cbf2c octave-forge
Rename run.m example files to run_test.m so that indexing will ignore them
author | adb014 |
---|---|
date | Wed, 11 Jul 2007 20:27:45 +0000 |
parents | 3aea065ad216 |
children | 7a498e61660c |
files | extra/bim/examples/COMSON/run.m extra/bim/examples/COMSON/run_test.m extra/bim/examples/FIUME/run.m extra/bim/examples/FIUME/run_test.m extra/bim/examples/SQUARE/run.m extra/bim/examples/SQUARE/run_test.m extra/bim/examples/SSHAPE/run.m extra/bim/examples/SSHAPE/test.m |
diffstat | 8 files changed, 353 insertions(+), 353 deletions(-) [+] |
line wrap: on
line diff
--- a/extra/bim/examples/COMSON/run.m Wed Jul 11 20:21:26 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -## Mesh generation and properties -[mesh] = MSH2Mgmsh('comson',1,20); -[mesh] = BIM2Cmeshproperties(mesh); - -## Construct initial guess -[xu, yu] = BIM2Cunknowncoord(mesh); -nelem = size(mesh.t,2); -nnodi = size(mesh.p,2); -uin = 0*xu; - -## set the coefficients for the problem: -## -div ( \alpha \gamma ( \eta \nabla u - \beta u ) )+ \delta \zeta u = f g -## FIX ME: CAMBIARE I VALORI CON QUALCOSA CHE DIA DEI DISEGNINI PIU' BELLI! -epsilon = .1; -alfa = ones(nelem,1); -gamma = ones(nnodi,1); -eta = epsilon*ones(nnodi,1); -beta = xu+yu; -delta = .1*ones(nelem,1); -zeta = .1*ones(nnodi,1); -f = ones(nnodi,1); -g = ones(nelem,1); - -## Construction of the discretized operators -AdvDiff = BIM2Aadvdiff(mesh,alfa,gamma,eta,beta); -Mass = BIM2Areaction(mesh,delta,zeta); -b = BIM2Arhs(mesh,f,g); - - -A = AdvDiff + Mass; - - -## BOUNDARY CONDITIONS -Dlist = BIM2Cunknownsonside(mesh, [55 38 56 57 35 54,... - 29 30 1:17 24 25 31 32,... - 33 34 18:23 26:28]); -## DIRICHLET LIST -Nlist = [] ## NEUMANN LIST -Nlist = setdiff(Nlist,Dlist); -Fn = zeros(length(Nlist),1); ## PRESCRIBED NEUMANN FLUXES -Ilist = setdiff(1:length(uin),union(Dlist,Nlist)); ## INTERNAL LIST - -## Partition the LHS and RHS - -Add = A(Dlist,Dlist); -Adn = A(Dlist,Nlist); ## shoud be all zeros hopefully!! -Adi = A(Dlist,Ilist); - -And = A(Nlist,Dlist); ## shoud be all zeros hopefully!! -Ann = A(Nlist,Nlist); -Ani = A(Nlist,Ilist); - -Aid = A(Ilist,Dlist); -Ain = A(Ilist,Nlist); -Aii = A(Ilist,Ilist); - -bd = b(Dlist); -bn = b(Nlist); -bi = b(Ilist); - -ud = uin(Dlist); -un = uin(Nlist); -ui = uin(Ilist); - -## SOLUTION -temp = [Ann Ani ; Ain Aii ] \ [ Fn+bn-And*ud ; bi-Aid*ud]; -un = temp(1:length(un)); -ui = temp(length(un)+1:end); - -## Compute fluxes through Dirichlet sides - -Fd = Add * ud + Adi * ui + Adn*un - bd; - -u = zeros(nnodi,1); -u(Dlist) = ud; u(Nlist) = un; u(Ilist) = ui; - -## Reconstruction of the currents - -## GRADIENT OF THE SOLUTION -[gx, gy] = BIM2Cpdegrad(mesh,u); - - -## FLUXES -[jxglob,jyglob] = BIM2Cglobalflux(mesh,u,alfa,gamma,eta,beta); - -## VISUALIZATION -FPL2pdesurf(mesh,u); -FPL2quiver(mesh,jxglob,jyglob,"sample_density","10000"); -FPL2quiver(mesh,gx,gy,"sample_density","10000"); \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extra/bim/examples/COMSON/run_test.m Wed Jul 11 20:27:45 2007 +0000 @@ -0,0 +1,89 @@ +## Mesh generation and properties +[mesh] = MSH2Mgmsh('comson',1,20); +[mesh] = BIM2Cmeshproperties(mesh); + +## Construct initial guess +[xu, yu] = BIM2Cunknowncoord(mesh); +nelem = size(mesh.t,2); +nnodi = size(mesh.p,2); +uin = 0*xu; + +## set the coefficients for the problem: +## -div ( \alpha \gamma ( \eta \nabla u - \beta u ) )+ \delta \zeta u = f g +## FIX ME: CAMBIARE I VALORI CON QUALCOSA CHE DIA DEI DISEGNINI PIU' BELLI! +epsilon = .1; +alfa = ones(nelem,1); +gamma = ones(nnodi,1); +eta = epsilon*ones(nnodi,1); +beta = xu+yu; +delta = .1*ones(nelem,1); +zeta = .1*ones(nnodi,1); +f = ones(nnodi,1); +g = ones(nelem,1); + +## Construction of the discretized operators +AdvDiff = BIM2Aadvdiff(mesh,alfa,gamma,eta,beta); +Mass = BIM2Areaction(mesh,delta,zeta); +b = BIM2Arhs(mesh,f,g); + + +A = AdvDiff + Mass; + + +## BOUNDARY CONDITIONS +Dlist = BIM2Cunknownsonside(mesh, [55 38 56 57 35 54,... + 29 30 1:17 24 25 31 32,... + 33 34 18:23 26:28]); +## DIRICHLET LIST +Nlist = [] ## NEUMANN LIST +Nlist = setdiff(Nlist,Dlist); +Fn = zeros(length(Nlist),1); ## PRESCRIBED NEUMANN FLUXES +Ilist = setdiff(1:length(uin),union(Dlist,Nlist)); ## INTERNAL LIST + +## Partition the LHS and RHS + +Add = A(Dlist,Dlist); +Adn = A(Dlist,Nlist); ## shoud be all zeros hopefully!! +Adi = A(Dlist,Ilist); + +And = A(Nlist,Dlist); ## shoud be all zeros hopefully!! +Ann = A(Nlist,Nlist); +Ani = A(Nlist,Ilist); + +Aid = A(Ilist,Dlist); +Ain = A(Ilist,Nlist); +Aii = A(Ilist,Ilist); + +bd = b(Dlist); +bn = b(Nlist); +bi = b(Ilist); + +ud = uin(Dlist); +un = uin(Nlist); +ui = uin(Ilist); + +## SOLUTION +temp = [Ann Ani ; Ain Aii ] \ [ Fn+bn-And*ud ; bi-Aid*ud]; +un = temp(1:length(un)); +ui = temp(length(un)+1:end); + +## Compute fluxes through Dirichlet sides + +Fd = Add * ud + Adi * ui + Adn*un - bd; + +u = zeros(nnodi,1); +u(Dlist) = ud; u(Nlist) = un; u(Ilist) = ui; + +## Reconstruction of the currents + +## GRADIENT OF THE SOLUTION +[gx, gy] = BIM2Cpdegrad(mesh,u); + + +## FLUXES +[jxglob,jyglob] = BIM2Cglobalflux(mesh,u,alfa,gamma,eta,beta); + +## VISUALIZATION +FPL2pdesurf(mesh,u); +FPL2quiver(mesh,jxglob,jyglob,"sample_density","10000"); +FPL2quiver(mesh,gx,gy,"sample_density","10000"); \ No newline at end of file
--- a/extra/bim/examples/FIUME/run.m Wed Jul 11 20:21:26 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -pkg load msh -pkg load fpl -pkg load bim - -## Mesh generation and properties -[mesh] = MSH2Mgmsh('fiume',1,.2); -[mesh] = BIM2Cmeshproperties(mesh); - -## Construct initial guess -[xu, yu] = BIM2Cunknowncoord(mesh); -nelem = size(mesh.t,2); -nnodi = size(mesh.p,2); -uin = 3*xu; - -## set the coefficients for the problem: -## -div ( \alpha \gamma ( \eta \nabla u - \beta u ) )+ \delta \zeta u = f g -## FIX ME: CAMBIARE I VALORI CON QUALCOSA CHE DIA DEI DISEGNINI PIU' BELLI! -epsilon = .1; -alfa = ones(nelem,1); -gamma = ones(nnodi,1); -eta = epsilon*ones(nnodi,1); -beta = xu+yu; -delta = ones(nelem,1); -zeta = ones(nnodi,1); -f = ones(nnodi,1); -g = ones(nelem,1); - -## Construction of the discretized operators -AdvDiff = BIM2Aadvdiff(mesh,alfa,gamma,eta,beta); -Mass = BIM2Areaction(mesh,delta,zeta); -b = BIM2Arhs(mesh,f,g); - - -A = AdvDiff + Mass; - - -## BOUNDARY CONDITIONS -Dlist = BIM2Cunknownsonside(mesh, [8 18]); ## DIRICHLET LIST -Nlist = BIM2Cunknownsonside(mesh, [23 24]); ## NEUMANN LIST -Nlist = setdiff(Nlist,Dlist); -Fn = zeros(length(Nlist),1); ## PRESCRIBED NEUMANN FLUXES -Ilist = setdiff(1:length(uin),union(Dlist,Nlist)); ## INTERNAL LIST - -## Partition the LHS and RHS - -Add = A(Dlist,Dlist); -Adn = A(Dlist,Nlist); ## shoud be all zeros hopefully!! -Adi = A(Dlist,Ilist); - -And = A(Nlist,Dlist); ## shoud be all zeros hopefully!! -Ann = A(Nlist,Nlist); -Ani = A(Nlist,Ilist); - -Aid = A(Ilist,Dlist); -Ain = A(Ilist,Nlist); -Aii = A(Ilist,Ilist); - -bd = b(Dlist); -bn = b(Nlist); -bi = b(Ilist); - -ud = uin(Dlist); -un = uin(Nlist); -ui = uin(Ilist); - -## SOLUTION -temp = [Ann Ani ; Ain Aii ] \ [ Fn+bn-And*ud ; bi-Aid*ud]; -un = temp(1:length(un)); -ui = temp(length(un)+1:end); - -## Compute fluxes through Dirichlet sides - -Fd = Add * ud + Adi * ui + Adn*un - bd; - -u = zeros(nnodi,1); -u(Dlist) = ud; u(Nlist) = un; u(Ilist) = ui; - -## Reconstruction of the currents - -## GRADIENT OF THE SOLUTION -[gx, gy] = BIM2Cpdegrad(mesh,u); - - -## FLUXES -[jxglob,jyglob] = BIM2Cglobalflux(mesh,u,alfa,gamma,eta,beta); - -## VISUALIZATION -FPL2pdesurf(mesh,u); -FPL2quiver(mesh,jxglob,jyglob,"sample_density","1000"); -FPL2quiver(mesh,gx,gy,"sample_density","1000");
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extra/bim/examples/FIUME/run_test.m Wed Jul 11 20:27:45 2007 +0000 @@ -0,0 +1,90 @@ +pkg load msh +pkg load fpl +pkg load bim + +## Mesh generation and properties +[mesh] = MSH2Mgmsh('fiume',1,.2); +[mesh] = BIM2Cmeshproperties(mesh); + +## Construct initial guess +[xu, yu] = BIM2Cunknowncoord(mesh); +nelem = size(mesh.t,2); +nnodi = size(mesh.p,2); +uin = 3*xu; + +## set the coefficients for the problem: +## -div ( \alpha \gamma ( \eta \nabla u - \beta u ) )+ \delta \zeta u = f g +## FIX ME: CAMBIARE I VALORI CON QUALCOSA CHE DIA DEI DISEGNINI PIU' BELLI! +epsilon = .1; +alfa = ones(nelem,1); +gamma = ones(nnodi,1); +eta = epsilon*ones(nnodi,1); +beta = xu+yu; +delta = ones(nelem,1); +zeta = ones(nnodi,1); +f = ones(nnodi,1); +g = ones(nelem,1); + +## Construction of the discretized operators +AdvDiff = BIM2Aadvdiff(mesh,alfa,gamma,eta,beta); +Mass = BIM2Areaction(mesh,delta,zeta); +b = BIM2Arhs(mesh,f,g); + + +A = AdvDiff + Mass; + + +## BOUNDARY CONDITIONS +Dlist = BIM2Cunknownsonside(mesh, [8 18]); ## DIRICHLET LIST +Nlist = BIM2Cunknownsonside(mesh, [23 24]); ## NEUMANN LIST +Nlist = setdiff(Nlist,Dlist); +Fn = zeros(length(Nlist),1); ## PRESCRIBED NEUMANN FLUXES +Ilist = setdiff(1:length(uin),union(Dlist,Nlist)); ## INTERNAL LIST + +## Partition the LHS and RHS + +Add = A(Dlist,Dlist); +Adn = A(Dlist,Nlist); ## shoud be all zeros hopefully!! +Adi = A(Dlist,Ilist); + +And = A(Nlist,Dlist); ## shoud be all zeros hopefully!! +Ann = A(Nlist,Nlist); +Ani = A(Nlist,Ilist); + +Aid = A(Ilist,Dlist); +Ain = A(Ilist,Nlist); +Aii = A(Ilist,Ilist); + +bd = b(Dlist); +bn = b(Nlist); +bi = b(Ilist); + +ud = uin(Dlist); +un = uin(Nlist); +ui = uin(Ilist); + +## SOLUTION +temp = [Ann Ani ; Ain Aii ] \ [ Fn+bn-And*ud ; bi-Aid*ud]; +un = temp(1:length(un)); +ui = temp(length(un)+1:end); + +## Compute fluxes through Dirichlet sides + +Fd = Add * ud + Adi * ui + Adn*un - bd; + +u = zeros(nnodi,1); +u(Dlist) = ud; u(Nlist) = un; u(Ilist) = ui; + +## Reconstruction of the currents + +## GRADIENT OF THE SOLUTION +[gx, gy] = BIM2Cpdegrad(mesh,u); + + +## FLUXES +[jxglob,jyglob] = BIM2Cglobalflux(mesh,u,alfa,gamma,eta,beta); + +## VISUALIZATION +FPL2pdesurf(mesh,u); +FPL2quiver(mesh,jxglob,jyglob,"sample_density","1000"); +FPL2quiver(mesh,gx,gy,"sample_density","1000");
--- a/extra/bim/examples/SQUARE/run.m Wed Jul 11 20:21:26 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -pkg load msh -pkg load fpl -pkg load bim - -## MESH GENERATION AND PROPERTIES -[mesh] = MSH2Mgmsh('quadrato',1,1.2); -[mesh] = BIM2Cmeshproperties(mesh); - -## INITIAL GUESS (IF NEEDED) -[xu, yu] = BIM2Cunknowncoord(mesh); -[nelem] = columns(mesh.t); -[nnodes] = columns(mesh.p); -[uin] = zeros(nnodes,1); - -## COEFFICIENTS FOR THE PROBLEM: -## -div ( \alpha \gamma ( \eta \nabla u - \beta u ) )+ \delta \zeta u = f g -epsilon = .01; -alfa = ones(nelem,1); -gamma = ones(nnodes,1); -eta = epsilon*ones(nnodes,1); -potbeta = xu/epsilon; -delta = zeros(nelem,1); -zeta = zeros(nnodes,1); -f = ones(nnodes,1); -g = ones(nelem,1); - -## ADVECTION AND REACTION MATRIX, RHS -AdvDiff = BIM2Aadvdiff(mesh,alfa,gamma,eta,potbeta); -Mass = BIM2Areaction(mesh,delta,zeta); -b = BIM2Arhs(mesh,f,g); - -A = AdvDiff + Mass; - - -## BOUNDARY CONDITIONS -Dlist = BIM2Cunknownsonside(mesh, [2 4]); ## LIST OF DIRICHLET NODES -Nlist = BIM2Cunknownsonside(mesh, [1 3]); ## LIST OF NEUMANN NODES -Nlist = setdiff(Nlist,Dlist); -Fn = zeros(length(Nlist),1); ## PRESCRIBED NEUMANN FLUXES -Ilist = setdiff(1:length(uin),union(Dlist,Nlist)); ## LIST OF INTERNAL NODES - -## LHS AND RHS PARTITION - -## LHS -## DIRICHLET ROW -Add = A(Dlist,Dlist); -Adn = A(Dlist,Nlist); -Adi = A(Dlist,Ilist); -## NEUMANN ROW -And = A(Nlist,Dlist); -Ann = A(Nlist,Nlist); -Ani = A(Nlist,Ilist); -## INTERNAL ROW -Aid = A(Ilist,Dlist); -Ain = A(Ilist,Nlist); -Aii = A(Ilist,Ilist); - -## RHS -bd = b(Dlist); -bn = b(Nlist); -bi = b(Ilist); - -## UNKNOWNS -ud = uin(Dlist); -un = uin(Nlist); -ui = uin(Ilist); - -## DISPLACEMENT SOLUTION -temp = [Ann Ani ; Ain Aii ] \ [ Fn+bn-And*ud ; bi-Aid*ud]; -un = temp(1:length(un)); -ui = temp(length(un)+1:end); - -## FLUXES THROUGH DIRICHLET SIDES -Fd = Add * ud + Adi * ui + Adn*un - bd; -u = zeros(nnodes,1); -u(Dlist) = ud; u(Nlist) = un; u(Ilist) = ui; - -## GRADIENT OF THE SOLUTION -[gx, gy] = BIM2Cpdegrad(mesh,u); - - -## FLUXES RECONSTRUCTION -[jxglob,jyglob] = BIM2Cglobalflux(mesh,u,alfa,gamma,eta,potbeta); - -## RESULTS VISUALIZATION -FPL2pdesurf(mesh,u); -FPL2pdesurf(mesh,u,"plot_field","gradient"); -FPL2quiver(mesh,jxglob,jyglob,"sample_density","1000"); -FPL2quiver(mesh,gx,gy,"sample_density","1000");
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extra/bim/examples/SQUARE/run_test.m Wed Jul 11 20:27:45 2007 +0000 @@ -0,0 +1,89 @@ +pkg load msh +pkg load fpl +pkg load bim + +## MESH GENERATION AND PROPERTIES +[mesh] = MSH2Mgmsh('quadrato',1,1.2); +[mesh] = BIM2Cmeshproperties(mesh); + +## INITIAL GUESS (IF NEEDED) +[xu, yu] = BIM2Cunknowncoord(mesh); +[nelem] = columns(mesh.t); +[nnodes] = columns(mesh.p); +[uin] = zeros(nnodes,1); + +## COEFFICIENTS FOR THE PROBLEM: +## -div ( \alpha \gamma ( \eta \nabla u - \beta u ) )+ \delta \zeta u = f g +epsilon = .01; +alfa = ones(nelem,1); +gamma = ones(nnodes,1); +eta = epsilon*ones(nnodes,1); +potbeta = xu/epsilon; +delta = zeros(nelem,1); +zeta = zeros(nnodes,1); +f = ones(nnodes,1); +g = ones(nelem,1); + +## ADVECTION AND REACTION MATRIX, RHS +AdvDiff = BIM2Aadvdiff(mesh,alfa,gamma,eta,potbeta); +Mass = BIM2Areaction(mesh,delta,zeta); +b = BIM2Arhs(mesh,f,g); + +A = AdvDiff + Mass; + + +## BOUNDARY CONDITIONS +Dlist = BIM2Cunknownsonside(mesh, [2 4]); ## LIST OF DIRICHLET NODES +Nlist = BIM2Cunknownsonside(mesh, [1 3]); ## LIST OF NEUMANN NODES +Nlist = setdiff(Nlist,Dlist); +Fn = zeros(length(Nlist),1); ## PRESCRIBED NEUMANN FLUXES +Ilist = setdiff(1:length(uin),union(Dlist,Nlist)); ## LIST OF INTERNAL NODES + +## LHS AND RHS PARTITION + +## LHS +## DIRICHLET ROW +Add = A(Dlist,Dlist); +Adn = A(Dlist,Nlist); +Adi = A(Dlist,Ilist); +## NEUMANN ROW +And = A(Nlist,Dlist); +Ann = A(Nlist,Nlist); +Ani = A(Nlist,Ilist); +## INTERNAL ROW +Aid = A(Ilist,Dlist); +Ain = A(Ilist,Nlist); +Aii = A(Ilist,Ilist); + +## RHS +bd = b(Dlist); +bn = b(Nlist); +bi = b(Ilist); + +## UNKNOWNS +ud = uin(Dlist); +un = uin(Nlist); +ui = uin(Ilist); + +## DISPLACEMENT SOLUTION +temp = [Ann Ani ; Ain Aii ] \ [ Fn+bn-And*ud ; bi-Aid*ud]; +un = temp(1:length(un)); +ui = temp(length(un)+1:end); + +## FLUXES THROUGH DIRICHLET SIDES +Fd = Add * ud + Adi * ui + Adn*un - bd; +u = zeros(nnodes,1); +u(Dlist) = ud; u(Nlist) = un; u(Ilist) = ui; + +## GRADIENT OF THE SOLUTION +[gx, gy] = BIM2Cpdegrad(mesh,u); + + +## FLUXES RECONSTRUCTION +[jxglob,jyglob] = BIM2Cglobalflux(mesh,u,alfa,gamma,eta,potbeta); + +## RESULTS VISUALIZATION +FPL2pdesurf(mesh,u); +FPL2pdesurf(mesh,u,"plot_field","gradient"); +FPL2quiver(mesh,jxglob,jyglob,"sample_density","1000"); +FPL2quiver(mesh,gx,gy,"sample_density","1000");
--- a/extra/bim/examples/SSHAPE/run.m Wed Jul 11 20:21:26 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -## MESH GENERATION AND PROPERTIES -[mesh] = MSH2Mgmsh('sshape',1,1.2); -[mesh] = BIM2Cmeshproperties(mesh); - -## INITIAL GUESS (IF NEEDED) -[xu, yu] = BIM2Cunknowncoord(mesh); -[nelem] = columns(mesh.t); -[nnodes] = columns(mesh.p); -[uin] = yu; - -## COEFFICIENTS FOR THE PROBLEM: -## -div ( \alpha \gamma ( \eta \nabla u - \beta u ) )+ \delta \zeta u = f g -epsilon = .01; -alfa = ones(nelem,1); -gamma = ones(nnodes,1); -eta = epsilon*ones(nnodes,1); -potbeta = 0; -delta = zeros(nelem,1); -zeta = zeros(nnodes,1); -f = zeros(nnodes,1); -g = zeros(nelem,1); - -## ADVECTION AND REACTION MATRIX, RHS -AdvDiff = BIM2Aadvdiff(mesh,alfa,gamma,eta,potbeta); -Mass = BIM2Areaction(mesh,delta,zeta); -b = BIM2Arhs(mesh,f,g); - -A = AdvDiff + Mass; - - -## BOUNDARY CONDITIONS -Dlist = BIM2Cunknownsonside(mesh, [5 28]);## LIST OF DIRICHLET NODES -Nlist = BIM2Cunknownsonside(mesh, setdiff([1:28],Dlist));## LIST OF NEUMANN NODES -Nlist = setdiff(Nlist,Dlist); -Fn = zeros(length(Nlist),1); ## PRESCRIBED NEUMANN FLUXES -Ilist = setdiff(1:length(uin),union(Dlist,Nlist)); ## LIST OF INTERNAL NODES - -## LHS AND RHS PARTITION - -## LHS -## DIRICHLET ROW -Add = A(Dlist,Dlist); -Adn = A(Dlist,Nlist); -Adi = A(Dlist,Ilist); -## NEUMANN ROW -And = A(Nlist,Dlist); -Ann = A(Nlist,Nlist); -Ani = A(Nlist,Ilist); -## INTERNAL ROW -Aid = A(Ilist,Dlist); -Ain = A(Ilist,Nlist); -Aii = A(Ilist,Ilist); - -## RHS -bd = b(Dlist); -bn = b(Nlist); -bi = b(Ilist); - -## UNKNOWNS -ud = uin(Dlist); -un = uin(Nlist); -ui = uin(Ilist); - -## DISPLACEMENT SOLUTION -temp = [Ann Ani ; Ain Aii ] \ [ Fn+bn-And*ud ; bi-Aid*ud]; -un = temp(1:length(un)); -ui = temp(length(un)+1:end); - -## FLUXES THROUGH DIRICHLET SIDES -Fd = Add * ud + Adi * ui + Adn*un - bd; -u = zeros(nnodes,1); -u(Dlist) = ud; u(Nlist) = un; u(Ilist) = ui; - -## GRADIENT OF THE SOLUTION -[gx, gy] = BIM2Cpdegrad(mesh,u); - - -## FLUXES RECONSTRUCTION -[jxglob,jyglob] = BIM2Cglobalflux(mesh,u,alfa,gamma,eta,potbeta); - -## RESULTS VISUALIZATION -FPL2pdesurf(mesh,u); -FPL2pdesurf(mesh,u,"plot_field","gradient"); -FPL2quiver(mesh,jxglob,jyglob,"sample_density","100"); -FPL2quiver(mesh,gx,gy,"sample_density","100");
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extra/bim/examples/SSHAPE/test.m Wed Jul 11 20:27:45 2007 +0000 @@ -0,0 +1,85 @@ +## MESH GENERATION AND PROPERTIES +[mesh] = MSH2Mgmsh('sshape',1,1.2); +[mesh] = BIM2Cmeshproperties(mesh); + +## INITIAL GUESS (IF NEEDED) +[xu, yu] = BIM2Cunknowncoord(mesh); +[nelem] = columns(mesh.t); +[nnodes] = columns(mesh.p); +[uin] = yu; + +## COEFFICIENTS FOR THE PROBLEM: +## -div ( \alpha \gamma ( \eta \nabla u - \beta u ) )+ \delta \zeta u = f g +epsilon = .01; +alfa = ones(nelem,1); +gamma = ones(nnodes,1); +eta = epsilon*ones(nnodes,1); +potbeta = 0; +delta = zeros(nelem,1); +zeta = zeros(nnodes,1); +f = zeros(nnodes,1); +g = zeros(nelem,1); + +## ADVECTION AND REACTION MATRIX, RHS +AdvDiff = BIM2Aadvdiff(mesh,alfa,gamma,eta,potbeta); +Mass = BIM2Areaction(mesh,delta,zeta); +b = BIM2Arhs(mesh,f,g); + +A = AdvDiff + Mass; + + +## BOUNDARY CONDITIONS +Dlist = BIM2Cunknownsonside(mesh, [5 28]);## LIST OF DIRICHLET NODES +Nlist = BIM2Cunknownsonside(mesh, setdiff([1:28],Dlist));## LIST OF NEUMANN NODES +Nlist = setdiff(Nlist,Dlist); +Fn = zeros(length(Nlist),1); ## PRESCRIBED NEUMANN FLUXES +Ilist = setdiff(1:length(uin),union(Dlist,Nlist)); ## LIST OF INTERNAL NODES + +## LHS AND RHS PARTITION + +## LHS +## DIRICHLET ROW +Add = A(Dlist,Dlist); +Adn = A(Dlist,Nlist); +Adi = A(Dlist,Ilist); +## NEUMANN ROW +And = A(Nlist,Dlist); +Ann = A(Nlist,Nlist); +Ani = A(Nlist,Ilist); +## INTERNAL ROW +Aid = A(Ilist,Dlist); +Ain = A(Ilist,Nlist); +Aii = A(Ilist,Ilist); + +## RHS +bd = b(Dlist); +bn = b(Nlist); +bi = b(Ilist); + +## UNKNOWNS +ud = uin(Dlist); +un = uin(Nlist); +ui = uin(Ilist); + +## DISPLACEMENT SOLUTION +temp = [Ann Ani ; Ain Aii ] \ [ Fn+bn-And*ud ; bi-Aid*ud]; +un = temp(1:length(un)); +ui = temp(length(un)+1:end); + +## FLUXES THROUGH DIRICHLET SIDES +Fd = Add * ud + Adi * ui + Adn*un - bd; +u = zeros(nnodes,1); +u(Dlist) = ud; u(Nlist) = un; u(Ilist) = ui; + +## GRADIENT OF THE SOLUTION +[gx, gy] = BIM2Cpdegrad(mesh,u); + + +## FLUXES RECONSTRUCTION +[jxglob,jyglob] = BIM2Cglobalflux(mesh,u,alfa,gamma,eta,potbeta); + +## RESULTS VISUALIZATION +FPL2pdesurf(mesh,u); +FPL2pdesurf(mesh,u,"plot_field","gradient"); +FPL2quiver(mesh,jxglob,jyglob,"sample_density","100"); +FPL2quiver(mesh,gx,gy,"sample_density","100");