function G = NumericalG(C,xi) 


I = sqrt(-1); 

s = sin(xi); 
s_aux = (sin(xi/2)).^2;

% theta-methods
theta = 0; 
num = 1 - 2/3*s_aux - I*(1-theta)*C*s; 
den = 1 - 2/3*s_aux + I*theta*C*s; 
G.FwdEuler = num./den;  

theta = 1; 
num = 1 - 2/3*s_aux - I*(1-theta)*C*s; 
den = 1 - 2/3*s_aux + I*theta*C*s; 
G.BwdEuler = num./den;  

theta = 1/2; 
num = 1 - 2/3*s_aux - I*(1-theta)*C*s; 
den = 1 - 2/3*s_aux + I*theta*C*s; 
G.CN = num./den;  

% Lax-Wendroff  (consistent mass matrix)
num = 1 - (2/3 + 2*C^2)*s_aux - I*C*s; 
den = 1 - 2/3*s_aux; 
G.TG2 = num./den; 

% Lax-Wendroff  (lumped mass matrix)
G.TG2_FD = 1 - 2*C^2*s_aux - I*C*s; 

% Third-order Taylor Galerkin
num = 1 - 2/3*(1 + 2*C^2)*s_aux - I*C*s; 
den = 1 - 2/3*(1-C^2)*s_aux; 
G.TG3 = num./den; 

% % 2-step third order Taylor-Galerkin
% g = 1 + (-1/3*I*C*s - 4*alpha*C^2*s_aux)./(1 - 2/3*s_aux); 
% num = 1 - 2/3*s_aux - 2*C^2*g.*s_aux - I*C*s; 
% den = 1 - 2/3*s_aux; 
% G.TG32s = num./den; 

% Carey-Jing
theta = 1/2; 
num = 1 - 2*(1/3 + 2*(1-theta)*theta*C^2)*s_aux - I*C*s; 
den = 1 - 2*(1/3 - 2*theta^2*C^2)*s_aux; 
G.CJ = num./den; 
