Best Python code snippet using tempest_python
integrator.py
Source:integrator.py
...164 - self.stage1(), self.stage2() etc. depending on the number of165 stages available.166 - self.compute_accelerations(index=0, update_nnps=True)167 - self.do_post_stage(stage_dt, stage_count_from_1)168 - self.update_domain()169 Please see any of the concrete implementations of the Integrator class170 to study. By default the Integrator implements a171 predict-evaluate-correct method, the same as PECIntegrator.172 """173 self.initialize()174 # Predict175 self.stage1()176 self.update_domain()177 # Call any post-stage functions.178 self.do_post_stage(0.5*dt, 1)179 self.compute_accelerations()180 # Correct181 self.stage2()182 self.update_domain()183 # Call any post-stage functions.184 self.do_post_stage(dt, 2)185 def set_compiled_object(self, c_integrator):186 """Set the high-performance compiled object to call internally.187 """188 self.c_integrator = c_integrator189 def set_parallel_manager(self, pm):190 self.parallel_manager = pm191 self.c_integrator.set_parallel_manager(pm)192 def set_post_stage_callback(self, callback):193 """This callback is called when the particles are moved, i.e194 one stage of the integration is done.195 This callback is passed the current time value, the timestep and the196 stage.197 The current time value is t + stage_dt, for example this would be198 0.5*dt for a two stage predictor corrector integrator.199 """200 self.c_integrator.set_post_stage_callback(callback)201 def step(self, time, dt):202 """This function is called by the solver.203 To implement the integration step please override the204 ``one_timestep`` method.205 """206 self.c_integrator.step(time, dt)207 def compute_accelerations(self, index=0, update_nnps=True):208 if update_nnps:209 # update NNPS since particles have moved210 if self.parallel_manager:211 self.parallel_manager.update()212 self.nnps.update()213 # Evaluate214 c_integrator = self.c_integrator215 a_eval = self.acceleration_evals[index]216 a_eval.compute(c_integrator.t, c_integrator.dt)217 def initial_acceleration(self, t, dt):218 """Compute the initial accelerations if needed before the iterations start.219 The default implementation only does this for the first acceleration220 evaluator. So if you have multiple evaluators, you must override this221 method in a subclass.222 """223 self.acceleration_evals[0].compute(t, dt)224 def update_domain(self):225 """Update the domain of the simulation.226 This is to be called when particles move so the ghost particles227 (periodicity, mirror boundary conditions) can be reset. Further, this228 also recalculates the appropriate cell size based on the particle229 kernel radius, `h`. This should be called explicitly when desired but230 usually this is done when the particles are moved or the `h` is231 changed.232 The integrator should explicitly call this when needed in the233 `one_timestep` method.234 """235 self.nnps.update_domain()236###############################################################################237# `EulerIntegrator` class238###############################################################################239class EulerIntegrator(Integrator):240 def one_timestep(self, t, dt):241 self.compute_accelerations()242 self.stage1()243 self.update_domain()244 self.do_post_stage(dt, 1)245###############################################################################246# `PECIntegrator` class247###############################################################################248class PECIntegrator(Integrator):249 r"""250 In the Predict-Evaluate-Correct (PEC) mode, the system is advanced using:251 .. math::252 y^{n+\frac{1}{2}} = y^n + \frac{\Delta t}{2}F(y^{n-\frac{1}{2}})253 --> Predict254 F(y^{n+\frac{1}{2}}) --> Evaluate255 y^{n + 1} = y^n + \Delta t F(y^{n+\frac{1}{2}})256 """257 def one_timestep(self, t, dt):258 self.initialize()259 # Predict260 self.stage1()261 self.update_domain()262 # Call any post-stage functions.263 self.do_post_stage(0.5*dt, 1)264 self.compute_accelerations()265 # Correct266 self.stage2()267 self.update_domain()268 # Call any post-stage functions.269 self.do_post_stage(dt, 2)270###############################################################################271# `EPECIntegrator` class272###############################################################################273class EPECIntegrator(Integrator):274 r"""275 Predictor corrector integrators can have two modes of276 operation.277 In the Evaluate-Predict-Evaluate-Correct (EPEC) mode, the278 system is advanced using:279 .. math::280 F(y^n) --> Evaluate281 y^{n+\frac{1}{2}} = y^n + F(y^n) --> Predict282 F(y^{n+\frac{1}{2}}) --> Evaluate283 y^{n+1} = y^n + \Delta t F(y^{n+\frac{1}{2}}) --> Correct284 Notes:285 The Evaluate stage of the integrator forces a function286 evaluation. Therefore, the PEC mode is much faster but relies on287 old accelertions for the Prediction stage.288 In the EPEC mode, the final corrector can be modified to:289 :math:`y^{n+1} = y^n + \frac{\Delta t}{2}\left( F(y^n) +290 F(y^{n+\frac{1}{2}}) \right)`291 This would require additional storage for the accelerations.292 """293 def one_timestep(self, t, dt):294 self.initialize()295 self.compute_accelerations()296 # Predict297 self.stage1()298 self.update_domain()299 # Call any post-stage functions.300 self.do_post_stage(0.5*dt, 1)301 self.compute_accelerations()302 # Correct303 self.stage2()304 self.update_domain()305 # Call any post-stage functions.306 self.do_post_stage(dt, 2)307###############################################################################308# `TVDRK3Integrator` class309###############################################################################310class TVDRK3Integrator(Integrator):311 r"""312 In the TVD-RK3 integrator, the system is advanced using:313 .. math::314 y^{n + \frac{1}{3}} = y^n + \Delta t F( y^n )315 y^{n + \frac{2}{3}} = \frac{3}{4}y^n +316 \frac{1}{4}(y^{n + \frac{1}{3}} + \Delta t F(y^{n + \frac{1}{3}}))317 y^{n + 1} = \frac{1}{3}y^n + \frac{2}{3}(y^{n + \frac{2}{3}}318 + \Delta t F(y^{n + \frac{2}{3}}))319 """320 def one_timestep(self, t, dt):321 self.initialize()322 # stage 1323 self.compute_accelerations()324 self.stage1()325 self.update_domain()326 self.do_post_stage(1./3*dt, 1)327 # stage 2328 self.compute_accelerations()329 self.stage2()330 self.update_domain()331 self.do_post_stage(2./3*dt, 2)332 # stage 3 and end333 self.compute_accelerations()334 self.stage3()335 self.update_domain()336 self.do_post_stage(dt, 3)337###############################################################################338class LeapFrogIntegrator(PECIntegrator):339 r"""A leap-frog integrator.340 """341 def one_timestep(self, t, dt):342 self.stage1()343 self.update_domain()344 self.do_post_stage(0.5*dt, 1)345 self.compute_accelerations()346 self.stage2()347 self.update_domain()348 self.do_post_stage(dt, 2)349###############################################################################350class PEFRLIntegrator(Integrator):351 r"""A Position-Extended Forest-Ruth-Like integrator [Omeylan2002]_352 References353 ----------354 .. [Omeylan2002] I.M. Omelyan, I.M. Mryglod and R. Folk, "Optimized355 Forest-Ruth- and Suzuki-like algorithms for integration of motion356 in many-body systems", Computer Physics Communications 146, 188 (2002)357 http://arxiv.org/abs/cond-mat/0110585358 """359 def one_timestep(self, t, dt):360 self.stage1()361 self.update_domain()362 self.do_post_stage(0.1786178958448091*dt, 1)363 self.compute_accelerations()364 self.stage2()365 self.update_domain()366 self.do_post_stage(0.1123533131749906*dt, 2)367 self.compute_accelerations()368 self.stage3()369 self.update_domain()370 self.do_post_stage(0.8876466868250094*dt, 3)371 self.compute_accelerations()372 self.stage4()373 self.update_domain()374 self.do_post_stage(0.8213821041551909*dt, 4)375 self.compute_accelerations()376 self.stage5()377 self.update_domain()...
app.py
Source:app.py
1import subprocess2import requests3import shlex4import yaml5import os6import sys7import socket8from datetime import datetime9import dns.resolver10def configParse(config_file):11 api_key = None12 tld = None13 update_domain = None14 15 with open(config_file, 'r') as file:16 config = yaml.full_load(file)17 for key,value in config.items():18 if key == "API_KEY":19 api_key = value20 if key == "DOMAIN":21 tld = value22 if key == "FQDN":23 update_domain = value24 # Validate that we find an API key, tld and domain name25 if api_key is None or tld is None or update_domain is None:26 log("Config invalid. Correct the config or pass options as variables.")27 sys.exit(1)28 return(api_key, tld, update_domain)29def log(message):30 print("{} {}".format(datetime.now(), message))31def getExternalCurrentIP():32 domain = 'myip.opendns.com'33 resolver = dns.resolver.Resolver()34 resolver.nameservers = ['208.67.222.222', '208.67.220.220'] # opendns nameservers35 answer = resolver.query(domain)36 current_ip = str(answer[0])37 try:38 # Validate IP with builtin 39 socket.inet_aton(current_ip)40 except OSError:41 log("Unable to lookup current external IP. Answer returned {}".format(current_ip))42 sys.exit(1)43 return current_ip44def updateIP(currentExternalIP, api_key, tld, update_domain):45 46 headers = {'Content-Type':'application/json','Authorization': 'Bearer ' + api_key}47 get_url = "https://api.digitalocean.com/v2/domains/{}/records?name={}".format(tld, update_domain)48 try:49 r = requests.get(get_url, headers=headers, timeout=5)50 except TimeoutError as err:51 log("Timed out accessing DigitalOcean")52 print(err)53 sys.exit(1)54 if r.status_code == 200:55 try:56 content = r.json()57 if content['meta']['total'] == 0:58 log("No current DNS entry found for {}. Add a manual A record and then retry".format(update_domain))59 sys.exit(1)60 elif content['meta']['total'] > 1:61 log("Returned more than 1 IP for current hostname. Exiting as assume something is wrong.")62 sys.exit(1)63 else:64 record_id = content['domain_records'][0]['id']65 current_DNS_IP = content['domain_records'][0]['data']66 if content['domain_records'][0]['type'] == 'CNAME':67 log("\nCurrent DNS record is set as a CNAME but we cannot change record type.\n\nPlease delete the record and retry.")68 sys.exit(1)69 except ValueError as err:70 log("Unknown content returned when looking up existing IP")71 print(err)72 sys.exit(1)73 else:74 log("Failed to get current ip: {}".format(r.reason))75 print(r.text)76 sys.exit(1)77 78 if currentExternalIP == current_DNS_IP:79 # Current IP matches DNS IP80 log("No change in IP found.")81 sys.exit(0)82 else:83 put_url = "https://api.digitalocean.com/v2/domains/{}/records/{}".format(tld, record_id)84 payload = {"data": currentExternalIP}85 r = requests.put(put_url, headers=headers, json = payload)86 log("{} {}".format(r.text, r.status_code))87def main():88 config_file='/config/config.yaml'89 90 if not os.path.exists(config_file):91 if os.getenv("API_KEY"):92 api_key = os.environ['API_KEY']93 else:94 print("API_KEY environment is not set.")95 sys.exit(1)96 97 if os.getenv("DOMAIN"):98 tld = os.environ['DOMAIN']99 else:100 print("DOMAIN environment is not set.")101 sys.exit(1)102 103 if os.getenv("FQDN"):104 update_domain = os.environ['FQDN']105 else:106 print("FQDN environment is not set.")107 sys.exit(1)108 else:109 api_key, tld, update_domain = configParse(config_file)110 currentExternalIP = getExternalCurrentIP()111 updateIP(currentExternalIP, api_key, tld, update_domain)112if __name__ == "__main__":...
unary.py
Source:unary.py
...12 '''Sets infinite positive integer values for all L variables.'''13 domain = {"min": spec["minl"], "max": float("inf")}14 for var in X:15 if var[0] == "L":16 csp.update_domain(var, copy.deepcopy(domain))17 def __establish_holes_space(self, csp, spec):18 '''Makes L4, L5, and L6 consistent W.R.T. minimum node length.19 20 Nodes 4, 5, and 6 contain holes. Between the holes and nodes'21 junction with adjacent nodes must be a minumum space. Also,22 between the holes themselves must be a minimum space.23 ''' 24 d = csp.get_domain("L4")25 new_d = copy.deepcopy(d)26 new_d["min"] = spec["hmarg"] * 3 + spec["holed"] * 227 csp.update_domain("L4", new_d)28 29 d = csp.get_domain("L5")30 new_d = copy.deepcopy(d)31 new_d["min"] = spec["hmarg"] * 4 + spec["holed"] * 332 csp.update_domain("L5", new_d)33 34 d = csp.get_domain("L6")35 new_d = copy.deepcopy(d)36 new_d["min"] = spec["hmarg"] * 2 + spec["holed"] * 137 csp.update_domain("L6", new_d)38 39 def __establish_RTD(self, csp, catalog, X):40 diams = catalog.values("D")41 thicks = catalog.values("T")42 rounds = catalog.values("R")43 for var in X:44 if var[0] == "D":45 csp.update_domain(var, copy.deepcopy(diams))46 elif var[0] == "R":47 csp.update_domain(var, copy.deepcopy(rounds))48 elif var[0] == "T":49 csp.update_domain(var, copy.deepcopy(thicks))50 def __establish_D1(self, csp, spec):51 '''Makes D1 consistent W.R.T. minimum d1 minimum diameter.'''52 d1 = csp.get_domain("D1")53 legal_values = set([])54 for diam in d1:55 if diam >= spec["topd"]["min"] and diam <= spec["topd"]["max"]:56 legal_values.add(diam)...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!