2nd order method
Lin Ji
jil at rpi.edu
Fri Jun 1 22:50:55 CEST 2001
Hi, Christophe and Jean-Francois,
Sorry to bother you again.
I tried the 2nd order interpolation and got some weird result. The
solution value becomes extremingly large (on the order of 10^7) around the
source as the wave propogates out. Can you take a look at the two problem
description files : 'Wave_u.pro' and 'test.pro' to see if I get it right? For
the constraint 'u2', I just copied the constraint 'u'.
Thanks,
Lin
--
Dept. of Math., RPI
518-276,2184(work)
518-271,4486(home)
-------------- next part --------------
/*
A simple scalar wave propagation example
*/
Jacobian {
{ Name JVol ;
Case {
{ Region All ; Jacobian Vol ; }
}
}
{ Name JSur ;
Case {
{ Region All ; Jacobian Sur ; }
}
}
}
Integration {
{ Name I1 ;
Case {
{ Type Gauss ;
Case {
{ GeoElement Point ; NumberOfPoints 1 ; }
{ GeoElement Line ; NumberOfPoints 3 ; }
{ GeoElement Triangle ; NumberOfPoints 4 ; }
{ GeoElement Quadrangle ; NumberOfPoints 4 ; }
{ GeoElement Tetrahedron ; NumberOfPoints 4 ; }
{ GeoElement Hexahedron ; NumberOfPoints 6 ; }
{ GeoElement Prism ; NumberOfPoints 6 ; }
}
}
}
}
}
FunctionSpace {
{ Name Hgrad; Type Form0;
BasisFunction {
{ Name sn; NameOfCoef un; Function BF_Node;
Support Region[{Omega,Gamma_f}]; Entity NodesOf[All]; }
{ Name sn2; NameOfCoef un2; Function BF_Node_2E;
Support Region[{Omega,Gamma_f}]; Entity EdgesOf[All]; }
}
Constraint {
{ NameOfCoef un; EntityType NodesOf ; NameOfConstraint u; }
{ NameOfCoef un2; EntityType EdgesOf ; NameOfConstraint u2; }
}
}
}
Formulation {
{ Name Wave; Type FemEquation;
Quantity {
{ Name u; Type Local; NameOfSpace Hgrad; }
}
Equation {
Galerkin { DtDt [ 1/c[] * Dof{u} , {u} ];
In Omega; Integration I1; Jacobian JVol; }
Galerkin { [ c[] * Dof{d u} , {d u} ];
In Omega; Integration I1; Jacobian JVol; }
Galerkin { [ - dfdt[] , {u} ];
In Gamma_f; Integration I1; Jacobian JSur; }
}
}
}
Resolution {
{ Name Wave_t;
System {
{ Name A; NameOfFormulation Wave; }
}
Operation {
InitSolution[A] ;
InitSolution[A] ;
TimeLoopNewmark[t_min,t_max,dt,0.25,0.5] {
Generate[A] ;
Solve[A] ;
Test[ SaveFct[] ] {
SaveSolution[A] ;
}
}
}
}
{ Name Wave_t_ex;
System {
{ Name A; NameOfFormulation Wave; }
}
Operation {
InitSolution[A] ;
InitSolution[A] ;
GenerateSeparate[A] ;
TimeLoopNewmark[t_min,t_max,dt,0.25,0.5] {
Update[A, TimeFct[]] ;
Solve[A] ;
If[ SaveFct[] ] {
SaveSolution[A] ;
}
}
}
}
{ Name Wave_f;
System {
{ Name A; NameOfFormulation Wave; Type ComplexValue; Frequency Freq; }
}
Operation {
Generate[A];
Solve[A];
SaveSolution[A];
}
}
{ Name Wave_tf_ex;
System {
{ Name A; NameOfFormulation Wave; }
{ Name C; NameOfFormulation Wave; Type ComplexValue ; }
}
Operation {
InitSolution[A] ;
InitSolution[A] ;
GenerateSeparate[A] ;
TimeLoopNewmark[t_min,t_max,dt,0.25,0.5] {
Update[A,TimeFct[]] ;
Solve[A] ;
FourierTransform[A, C, {Freq} ] ;
If[SaveFct[]] {
SaveSolution[A] ;
}
}
SaveSolutions[C] ;
}
}
{ Name Wave_pvp;
System {
{ Name A; NameOfFormulation Wave; }
}
Operation {
GenerateSeparate[A];
Lanczos[A, 19, {1:5}, 0];
SaveSolutions[A] ;
}
}
}
PostProcessing {
{ Name Wave_t; NameOfFormulation Wave; NameOfSystem A;
Quantity {
{ Name u;
Value{
Local{ [ {u} ] ; In Omega; Jacobian JVol; }
}
}
{ Name du;
Value{
Local{ [ {d u} ] ; In Omega; Jacobian JVol; }
}
}
{ Name u2;
Value{
Local{ [ Norm[{u}] ] ; In Omega; Jacobian JVol; }
}
}
}
}
{ Name Wave_f; NameOfFormulation Wave; NameOfSystem C;
Quantity {
{ Name u;
Value{
Local{ [ {u} ] ; In Omega; Jacobian JVol; }
}
}
}
}
}
-------------- next part --------------
Group {
Omega = Region[1] ;
Gamma_u = Region[3] ;
Gamma_f = Region[2] ;
}
Function {
/*
A=.5;
a=.01;
c[] = 1+A*Exp[-((X[]-.5)^2+Y[]^2)/(2*a)] ;
*/
c[] = 1;
Freq = 1 ;
t_min = 0 ;
t_max = .5 ;
dt = .01 ;
ct=.04;
cy=.02;
t0=.02;
y0=0.0;
gr=2*3.1416*100;
yo[]=1/(ct*cy*Sqrt[2*3.1416])*Exp[-(($Time-t0)^2/(ct^2)+(Y[]-y0)^2/(cy^2) )];
yo2[]=Cos[gr*($Time-t0)]*yo[];
TimeFct[] = yo[];
// TimeFct[] = ( (X[]<.03) )? yo[] : 0 ;
dfdt[] = TimeFct[] ;
SaveFct[] = !($TimeStep % 2) ;
}
Constraint {
{ Name u ;
Case {
//{ Region Gamma_u ; Value 0; }
//{ Region Gamma_u ; Value 1; TimeFunction TimeFct[]; }
}
}
{ Name u2 ;
Case {
//{ Region Gamma_u ; Value 0; }
//{ Region Gamma_u ; Value 1; TimeFunction TimeFct[]; }
}
}
}
Include "Wave_u.pro"
PostOperation {
{ Name u ; NameOfPostProcessing Wave_t ;
Operation {
Print[ u, OnPlane { {0,-.5,0} {1,-.5,0} {0,.5,0} } {100,100} ,
Format TimeTable,
File "u.pos" ] ;
}
}
}
-------------- next part --------------
lc = 0.02;
Point(1) = {0, -0.5, 0, lc};
Point(2) = {1, -0.5, 0, lc};
Point(3) = {1, .5, 0, lc};
Point(4) = {0, .5, 0, lc};
Line(1) = {1,2};
Line(2) = {2,3};
Line(3) = {3,4};
Line(4) = {4,1};
Line Loop(5) = {4,1,2,3};
Plane Surface(6) = {5};
Physical Surface(1) = {6};
Physical Line(2) = {4};
Physical Line(3) = {3};