Wed 28 Aug 21:38:52 CEST 2024
This commit is contained in:
		
							parent
							
								
									b46dd59743
								
							
						
					
					
						commit
						6f02150683
					
				
							
								
								
									
										103
									
								
								src/SimNDT/engine/engineBase.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								src/SimNDT/engine/engineBase.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,103 @@ | |||
| #!/usr/bin/env python | ||||
| # encoding: utf-8 | ||||
| """ | ||||
| engineBase.py | ||||
| 
 | ||||
| Created by Miguel Molero on 2013-10-01. | ||||
| Copyright (c) 2013 MMolero. All rights reserved. | ||||
| """ | ||||
| 
 | ||||
| import numpy as np | ||||
| import copy | ||||
| 
 | ||||
| global ErrorImportCL | ||||
| 
 | ||||
| try: | ||||
| 	import pyopencl		  as	 cl | ||||
| 	ErrorImportCL = False | ||||
| except ImportError: | ||||
| 	ErrorImportCL = True | ||||
| 	 | ||||
| from SimNDT.engine.infoCL  import * | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| class EngineBase(object): | ||||
| 	 | ||||
| 	def __init__(self, _simPack, _Platform): | ||||
| 
 | ||||
| 		self.simPack  = _simPack | ||||
| 		self.Platform =  _Platform | ||||
| 		self.n = 0 | ||||
| 
 | ||||
| 		Simulation = self.simPack.Simulation | ||||
| 		self.dt = np.float32(Simulation.dt) | ||||
| 		self.dx = np.float32(Simulation.dx) | ||||
| 		self.dtx = np.float32(self.dt/self.dx) | ||||
| 		self.ddx = np.float32(1.0/self.dx) | ||||
| 		self.dtdxx = self.dtx * self.ddx | ||||
| 
 | ||||
| 		if self.Platform == "OpenCL": | ||||
| 			self.initCL() | ||||
| 		self.materialSetup() | ||||
| 		self.initFields() | ||||
| 		self.staggeredProp() | ||||
| 		self.applyBoundaries() | ||||
| 		self.sourceSetup() | ||||
| 		self.receiverSetup() | ||||
| 		self.simSetup() | ||||
| 		 | ||||
| 		 | ||||
| 	def setup_CL(self): | ||||
| 		pass | ||||
| 		 | ||||
| 	def initCL(self): | ||||
| 		device   = self.simPack.Simulation.Device | ||||
| 		platform = self.simPack.Simulation.Platform | ||||
| 		 | ||||
| 		my_device = None | ||||
| 		try: | ||||
| 			for platforms in cl.get_platforms(): | ||||
| 				if platforms.name == platform: | ||||
| 					for devices in platforms.get_devices(): | ||||
| 						if cl.device_type.to_string(devices.type)== device: | ||||
| 							my_device =	 devices		 | ||||
| 		except: | ||||
| 			platforms  = cl.get_platforms()[0] | ||||
| 			my_device = platforms.get_devices()[0] | ||||
| 		 | ||||
| 		if my_device is None: | ||||
| 			platforms  = cl.get_platforms()[0] | ||||
| 			my_device = platforms.get_devices()[0] | ||||
| 			 | ||||
| 		print(my_device) | ||||
| 
 | ||||
| 		self.ctx   = cl.Context([my_device]) | ||||
| 		self.queue = cl.CommandQueue(self.ctx) | ||||
| 		self.mf	   = cl.mem_flags | ||||
| 		 | ||||
| 		 | ||||
| 	def materialSetup(self): | ||||
| 		pass | ||||
| 		 | ||||
| 	def initFields(self): | ||||
| 		pass | ||||
| 		 | ||||
| 	def receiverSetup(self): | ||||
| 		pass | ||||
| 	 | ||||
| 	def staggeredProp(self): | ||||
| 		pass | ||||
| 		 | ||||
| 	def applyBoundaries(self): | ||||
| 		pass | ||||
| 		 | ||||
| 	def sourceSetup(self): | ||||
| 		pass | ||||
| 		 | ||||
| 	def simSetup(self): | ||||
| 		pass | ||||
| 		 | ||||
| 	def initFieldsCL(self): | ||||
| 		pass | ||||
| 	 | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user