function [A,B,methodName] = System(method,M,K,K1,C,C1,a,dt,tau,nu,sigma)


switch method
    case 0 % Galerkin+R11
        tau=0;
        A = M + 0.5*dt*C + 0.5*dt*nu*K1 + 0.5*dt*sigma*M + ...
            0.5*tau*C1 + 0.25*dt*tau*K + 0.25*dt*tau*sigma*C1;
        B = -dt*C - dt*nu*K1 - dt*sigma*M - 0.5*dt*tau*K - 0.5*dt*tau*sigma*C;
        methodName = 'Galerkin+R11';
    case 1 % SUPG+R11
        A = (1+0.5*dt*sigma)*M + 0.5*dt*nu*K1 + 0.25*dt*tau*K + 0.5*dt*C + ...
            0.5*tau*(1+0.5*dt*sigma)*C1;
        B = -dt*sigma*M - dt*nu*K1 - dt*0.5*tau*K - dt*C - 0.5*dt*tau*sigma*C1;
        methodName = 'SUPG+R11';
    case 2 % GLS+R11
        A = dt*(1+0.5*dt*sigma)*M + tau*(1+dt*sigma+0.25*sigma^2*dt^2)*M + ...
            0.5*dt^2*nu*K1 + 0.5*dt^2*0.5*tau*K + ...
            0.5*dt*(dt+tau+0.5*dt*tau*sigma)*C + ...
            0.5*dt*tau*(1+0.5*dt*sigma)*C1;
        B = -dt*sigma*(dt+tau+0.5*dt*tau*sigma)*M ...
            -dt^2*nu*K1 - dt^2*0.5*tau*K ...
            -dt*(dt+tau+0.5*dt*tau*sigma)*C - 0.5*dt^2*tau*sigma*C1;
        methodName = 'GLS+R11';
    case 3 % SUPG+R20
        A = M + tau*C1;
        B = - 0.5*dt*sigma*M - 0.5*dt*nu*K1 - 0.5*dt*tau*K ...
             -0.5*dt*C-0.5*dt*tau*sigma*C1;
        methodName = 'SUPG+R20';
    case 4 % GLS+R20
        A = M + tau*sigma*M + tau*C1; 
        B = -0.5*dt*sigma*M - 0.5*dt*tau*sigma^2*M - 0.5*dt*nu*K1 - 0.5*dt*tau*K ...
            -0.5*dt*C -0.5*dt*tau*sigma*C  - 0.5*dt*tau*sigma*C1;
        methodName = 'GLS+R20';
    otherwise
        error('not available method')
end
