Exemple #1
0
def int_connection_backward(modes,gamma=0.,delta=0.,G=0,D=0):
    """
    Reverses the integer connection performed by int_connection
    The input modes is a vector of (g+G,d+D) modes, and we wish to demote
    them back to (g,d) modes.
    """

    from numpy import append
    from scipy import conj
    from spyctral.jacobi.jfft import rmatrix_invert as jconnection_inv
    G = int(G)
    D = int(D)

    if (G+D)>0:

        N = modes.size
        [cmodes,smodes] = sc_collapse(modes,N)

        cmodes = jconnection_inv(cmodes,delta-1/2.,gamma-1/2.,D,G)
        smodes = jconnection_inv(smodes,delta+1/2.,gamma+1/2.,D,G)
        
        return sc_expand(cmodes,smodes,N)
    else:
        return modes.copy()
Exemple #2
0
from spyctral.jacobi.jfft import rmatrix_invert as jconnection_inv
from spyctral.jacobi.jfft import rmatrix_apply_seq as jconnection
from spyctral.fourier.connection import sc_collapse, sc_expand
from numpy import append
from scipy import conj
G = gamma; D = delta; delta = 0; gamma=0;

NEven = (N%2)==0
ucopy = u.copy()
if NEven:
    N += 1
    ucopy[0] /= 2.
    ucopy = append(ucopy,conj(ucopy[0]))

[cmodes,smodes] = sc_collapse(ucopy,N)
cmodes = jconnection(cmodes,delta-1/2.,gamma-1/2.,D,G)
smodes = jconnection(smodes,delta+1/2.,gamma+1/2.,D,G)

utemp = sc_expand(cmodes,smodes,N)
if NEven:
    utemp[0] += conj(utemp[-1])
    utemp = utemp[:-1]

cmodes3 = jconnection_inv(cmodes,delta-1/2.,gamma-1/2.,D,G)
smodes3 = jconnection_inv(smodes,delta+1/2.,gamma+1/2.,D,G)

u2 = sc_expand(cmodes3,smodes3,N)

utemp2 = int_connection(u,gamma=0.,delta=0.,G=G,D=D)
u3 = int_connection_backward(utemp2,gamma=0.,delta=0.,G=G,D=D)