Wed 28 Aug 21:38:52 CEST 2024
This commit is contained in:
		
							parent
							
								
									dd7fbff499
								
							
						
					
					
						commit
						12dad7c28e
					
				
							
								
								
									
										141
									
								
								src/SimNDT/engine/EFIT2Dcython.pyx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								src/SimNDT/engine/EFIT2Dcython.pyx
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,141 @@ | |||
| cimport cython | ||||
| cimport numpy as np | ||||
| 
 | ||||
| 
 | ||||
| @cython.boundscheck(False) # turn of bounds-checking for entire function | ||||
| @cython.wraparound(False) | ||||
| def sourceVel(np.float32_t[:,:] Vx,  np.float32_t[:,:] Vy,  | ||||
|               np.int32_t[:] XL,  | ||||
| 			  np.int32_t[:] YL,  | ||||
| 			  double source, int Stype, win, double dtdxx): | ||||
| 
 | ||||
| 	cdef unsigned int i | ||||
| 	cdef int ii, jj | ||||
| 	cdef int N = XL.shape[0] | ||||
| 
 | ||||
| 	if Stype == 0: | ||||
| 		for i in range(N):		 | ||||
| 			ii = XL[i] | ||||
| 			jj = YL[i] | ||||
| 			Vx[ii, jj]	-= source*dtdxx * win[i] | ||||
| 		 | ||||
| 	elif Stype ==1: | ||||
| 		for i in range(N): | ||||
| 			ii = XL[i] | ||||
| 			jj = YL[i] | ||||
| 			Vy[ii,jj]	-= source*dtdxx * win[i] | ||||
| 		 | ||||
| 	elif Stype ==2: | ||||
| 		for i in range(N): | ||||
| 			ii = XL[i] | ||||
| 			jj = YL[i] | ||||
| 			Vx[ii,jj]	-= source* dtdxx * win[i] | ||||
| 			Vy[ii,jj]	-= source* dtdxx * win[i] | ||||
| 
 | ||||
| 
 | ||||
| 	return (Vx, Vy) | ||||
| 	 | ||||
| 
 | ||||
| @cython.boundscheck(False) # turn of bounds-checking for entire function | ||||
| @cython.wraparound(False) | ||||
| def sourceStress(np.float32_t[:,:] Txx,  np.float32_t[:,:] Tyy,  | ||||
|                  np.int32_t[:] XL, np.int32_t[:] YL,  | ||||
| 				 double source, int Stype, win,  double dtdxx): | ||||
| 
 | ||||
| 	cdef int N = XL.shape[0] | ||||
| 	cdef unsigned int i | ||||
| 	cdef int ii, jj | ||||
| 
 | ||||
| 	if Stype ==0: | ||||
| 		for i in range(0, N): | ||||
| 			Txx[XL[i],YL[i]]	-= source*dtdxx * win[i] | ||||
| 		 | ||||
| 	elif Stype ==1: | ||||
| 		for i in range(0, N): | ||||
| 			Tyy[XL[i],YL[i]]	-= source*dtdxx * win[i] | ||||
| 		 | ||||
| 	elif Stype ==2: | ||||
| 		for i in range(0, N): | ||||
| 			Txx[XL[i],YL[i]]	-= source* dtdxx * win[i] | ||||
| 			Tyy[XL[i],YL[i]]	-= source* dtdxx * win[i] | ||||
| 
 | ||||
| 
 | ||||
| 	return (Txx, Tyy) | ||||
| 
 | ||||
| 
 | ||||
| @cython.boundscheck(False) | ||||
| @cython.wraparound(False) | ||||
| def velocityVoigt(np.float32_t[:,:] Txx, np.float32_t[:,:] Txy, np.float32_t[:,:] Tyy,  | ||||
|                   np.float32_t[:,:] vx, np.float32_t[:,:] vy,  np.float32_t[:,:] d_vx, np.float32_t[:,:] d_vy,  | ||||
| 				  np.float32_t[:,:] BX, np.float32_t[:,:] BY, np.float32_t[:,:] ABS, double  ddx, double  dt): | ||||
| 
 | ||||
| 
 | ||||
| 	cdef int M = Txx.shape[0] | ||||
| 	cdef int N = Txx.shape[1] | ||||
| 	cdef int i | ||||
| 	cdef int j | ||||
|     | ||||
|    | ||||
| 	for i in range(0,M-1): | ||||
| 		for j in range(1,N): | ||||
| 			d_vx[i,j]	 = (BX[i,j] * ddx) * ( Txx[i+1,j] - Txx[i,j] + Txy[i,j] - Txy[i,j-1] ) | ||||
| 			vx[i,j]	    += dt * d_vx[i,j] | ||||
| 
 | ||||
| 											 | ||||
| 	for i in range(1,M): 	 | ||||
| 		for j in range(0, N-1): | ||||
| 			d_vy[i,j]	 = (BY[i,j] * ddx) * ( Txy[i,j]  - Txy[i-1,j] + Tyy[i,j+1] - Tyy[i,j] ) | ||||
| 			vy[i,j]	    +=  dt * d_vy[i,j] | ||||
| 
 | ||||
| 	for i in range(0,M): | ||||
| 		for j in range(0,N):	   | ||||
| 			vx[i,j]	  *= ABS[i,j] | ||||
| 			vy[i,j]	  *= ABS[i,j]	 | ||||
| 
 | ||||
| 			 | ||||
| 					    | ||||
| 	return (vx, vy, d_vx, d_vy) | ||||
| 	 | ||||
| 
 | ||||
| @cython.boundscheck(False) # turn of bounds-checking for entire function | ||||
| @cython.wraparound(False) | ||||
| def stressVoigt(np.float32_t[:,:] Txx, np.float32_t[:,:] Txy, np.float32_t[:,:] Tyy,  | ||||
|                 np.float32_t[:,:] vx, np.float32_t[:,:] vy, np.float32_t[:,:] d_vx, np.float32_t[:,:] d_vy,  | ||||
| 				np.float32_t[:,:] C11, np.float32_t[:,:] C12, np.float32_t[:,:] C44,  | ||||
| 				np.float32_t[:,:] ETA_VS, np.float32_t[:,:] ETA_S, np.float32_t[:,:] ETA_SS,  | ||||
| 				np.float32_t[:,:] ABS, double dtx): | ||||
| 	 | ||||
| 	 | ||||
| 	cdef int M = Txx.shape[0] | ||||
| 	cdef int N = Txx.shape[1] | ||||
| 	cdef int i | ||||
| 	cdef int j | ||||
| 	 | ||||
| 	for i in range(1,M): | ||||
| 		for j in range(1,N): | ||||
| 			Txx[i,j] += (	( C11[i,j] * dtx )*(vx[i,j] - vx[i-1,j]) + | ||||
| 							( C12[i,j] * dtx )*(vy[i,j] - vy[i,j-1]) + | ||||
| 							( (ETA_VS[i,j]) * dtx) * (d_vx[i,j] - d_vx[i-1,j]) + | ||||
| 							( (ETA_S [i,j]) * dtx) * (d_vy[i,j] - d_vy[i,j-1]) ) | ||||
| 							 | ||||
| 			Tyy[i,j] += (	( C12[i,j]* dtx )*(vx[i,j] - vx[i-1,j]) + | ||||
| 						( C11[i,j]* dtx )*(vy[i,j] - vy[i,j-1]) + | ||||
| 						( (ETA_VS[i,j])*dtx) *(d_vy[i,j] - d_vy[i,j-1]) + | ||||
| 						( (ETA_S [i,j])*dtx) * (d_vx[i,j] - d_vx[i-1,j]) ) | ||||
| 					 | ||||
| 	for i in range(0, M-1): | ||||
| 		for j in range(0, N-1): | ||||
| 			Txy[i,j] +=	(  ( C44[i,j] * dtx )*(vx[i,j+1] - vx[i,j] + vy[i+1,j] - vy[i,j])	+ | ||||
| 						   ( ETA_SS[i,j]  * dtx )*(d_vx[i,j+1] - d_vx[i,j] + d_vy[i+1,j] - d_vy[i,j] ) ) | ||||
| 							  | ||||
| 	for i in range(0,M): | ||||
| 		for j in range(0,N): | ||||
| 			Txx[i,j] *= ABS[i,j]; | ||||
| 			Tyy[i,j] *= ABS[i,j]; | ||||
| 			Txy[i,j] *= ABS[i,j]; | ||||
| 		 | ||||
| 
 | ||||
| 	return (Txx, Tyy, Txy) | ||||
|     | ||||
| 
 | ||||
|   | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user