# ------------------------ semi-Lagrangian Method -------------------------------- if scheme_option == 2: print "" print ' -----------------------' print ' SEMI-LAGRANGIAN METHOD:' print ' -----------------------' start_SL_time = time() # Linear Element if polynomial_option == 0 or polynomial_option == 1: vx_d, vy_d = semiLagrangian.Linear2D(numNodes, neighborsElements, IEN, x, y, vxALE, vyALE, dt, vx, vy) # Mini Element elif polynomial_option == 2: vx_d, vy_d, c_d = semiLagrangian.Mini2D(numNodes, neighborsElements, IEN, x, y, vxALE, vyALE, dt, vx, vy, c) # Quad Element elif polynomial_option == 3: w_d, c_d = semiLagrangian.Quad2D(numNodes, neighborsElements, IEN, x, y, vxALE, vyALE, dt, w, c) end_SL_time = time() SL_time = end_SL_time - start_SL_time print ' time duration: %.1f seconds' %SL_time #----------------------------------------------------------------------------------
A = np.copy(M)/dt vorticityRHS = sps.lil_matrix.dot(A,w_d) vorticityRHS = vorticityRHS + (1.0/Re)*vorticityNeumannVector vorticityRHS = np.multiply(vorticityRHS,vorticityAux2BC) vorticityRHS = vorticityRHS + vorticityDirichletVector w = scipy.sparse.linalg.cg(vorticityLHS,vorticityRHS,w, maxiter=1.0e+05, tol=1.0e-05) w = w[0].reshape((len(w[0]),1)) # Mini Element elif polynomial_option == 2: w_d = semiLagrangian.Mini2D(numNodes, neighborsElements, IEN, z, r, vz, vr, dt, w) A = np.copy(Mr)/dt vorticityRHS = sps.lil_matrix.dot(A,w_d) vorticityRHS = vorticityRHS + (1.0/Re)*vorticityNeumannVector vorticityRHS = np.multiply(vorticityRHS,vorticityAux2BC) vorticityRHS = vorticityRHS + vorticityDirichletVector w = scipy.sparse.linalg.cg(vorticityLHS,vorticityRHS,w, maxiter=1.0e+05, tol=1.0e-05) w = w[0].reshape((len(w[0]),1)) # Quad Element elif polynomial_option == 3: