- Timestamp:
- Nov 11, 2010, 11:55:52 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/anuga_core/source/anuga/abstract_2d_finite_volumes/generic_domain.py
r8065 r8068 62 62 full_send_dict=None, 63 63 ghost_recv_dict=None, 64 starttime=0.0, 64 65 processor=0, 65 66 numproc=1, … … 253 254 254 255 # Model time 255 self.time = 0.0256 256 self.finaltime = None 257 257 self.recorded_min_timestep = self.recorded_max_timestep = 0.0 258 self.starttime = 0# Physical starttime if any259 # (0 is 1 Jan 1970 00:00:00)258 self.starttime = starttime # Physical starttime if any 259 self.time = self.starttime 260 260 self.timestep = 0.0 261 261 self.flux_timestep = 0.0 … … 499 499 """Get the absolute model time (seconds).""" 500 500 501 return self.time + self.starttime 502 501 return self.time 503 502 504 503 ## … … 1016 1015 1017 1016 model_time = self.get_time() 1017 1018 1018 if self.recorded_min_timestep == self.recorded_max_timestep: 1019 1019 msg += 'Time = %.4f, delta t = %.8f, steps=%d' \ … … 1225 1225 # Observe time interval restriction if any 1226 1226 if self.monitor_time_interval is not None and\ 1227 (self. time< self.monitor_time_interval[0] or\1228 self. time> self.monitor_time_interval[1]):1227 (self.get_time() < self.monitor_time_interval[0] or\ 1228 self.get_time() > self.monitor_time_interval[1]): 1229 1229 return 1230 1230 … … 1249 1249 maxloc = Q.get_maximum_location() 1250 1250 info_block['max_location'] = maxloc 1251 info_block['max_time'] = self. time1251 info_block['max_time'] = self.get_time() 1252 1252 1253 1253 # Update minimum … … 1258 1258 minloc = Q.get_minimum_location() 1259 1259 info_block['min_location'] = minloc 1260 info_block['min_time'] = self. time1260 info_block['min_time'] = self.get_time() 1261 1261 1262 1262 ## … … 1376 1376 def set_starttime(self, time): 1377 1377 self.starttime = float(time) 1378 self.set_time(self.starttime) 1379 1378 1380 1379 1381 ################################################################################ … … 1427 1429 % self.get_boundary_tags()) 1428 1430 assert hasattr(self, 'boundary_objects'), msg 1429 1431 1432 if self.get_time() != self.get_starttime(): 1433 self.set_time(self.get_starttime()) 1434 1430 1435 if yieldstep is None: 1431 1436 yieldstep = self.evolve_max_timestep … … 1435 1440 self._order_ = self.default_order 1436 1441 1442 assert finaltime > self.get_starttime(), 'finaltime is less than starttime!' 1443 1437 1444 if finaltime is not None and duration is not None: 1438 1445 msg = 'Only one of finaltime and duration may be specified' … … 1445 1452 1446 1453 N = len(self) # Number of triangles 1447 self.yieldtime = self. time+ yieldstep # set next yield time1454 self.yieldtime = self.get_time() + yieldstep # set next yield time 1448 1455 1449 1456 # Initialise interval of timestep sizes (for reporting only) … … 1467 1474 self.update_extrema() 1468 1475 1469 1470 1471 1476 # Or maybe restore from latest checkpoint 1472 1477 if self.checkpoint is True: … … 1474 1479 1475 1480 if skip_initial_step is False: 1476 yield(self. time) # Yield initial values1481 yield(self.get_time()) # Yield initial values 1477 1482 1478 1483 while True: 1479 1484 1480 initial_time = self. time1485 initial_time = self.get_time() 1481 1486 1482 1487 #========================================== … … 1484 1489 #========================================== 1485 1490 if self.get_timestepping_method() == 'euler': 1486 self.evolve_one_euler_step(yieldstep, finaltime)1491 self.evolve_one_euler_step(yieldstep, self.finaltime) 1487 1492 1488 1493 elif self.get_timestepping_method() == 'rk2': 1489 self.evolve_one_rk2_step(yieldstep, finaltime)1494 self.evolve_one_rk2_step(yieldstep, self.finaltime) 1490 1495 1491 1496 elif self.get_timestepping_method() == 'rk3': 1492 self.evolve_one_rk3_step(yieldstep, finaltime)1497 self.evolve_one_rk3_step(yieldstep, self.finaltime) 1493 1498 1494 1499 #========================================== … … 1503 1508 1504 1509 # Update time 1505 self. time = initial_time + self.timestep1510 self.set_time(initial_time + self.timestep) 1506 1511 1507 1512 # Update vertex and edge values … … 1519 1524 1520 1525 # Yield results 1521 if finaltime is not None and self.time >= finaltime-epsilon: 1522 if self.time > finaltime: 1526 if self.finaltime is not None and self.get_time() >= self.finaltime-epsilon: 1527 1528 if self.get_time() > self.finaltime: 1523 1529 # FIXME (Ole, 30 April 2006): Do we need this check? 1524 1530 # Probably not (Ole, 18 September 2008). 1525 1531 # Now changed to Exception. 1526 msg = ('WARNING (domain.py): time overshot finaltime. ' 1527 'Contact Ole.Nielsen@ga.gov.au') 1532 msg = ('WARNING (domain.py): time overshot finaltime. ') 1528 1533 raise Exception, msg 1529 1534 1530 1535 # Log and then Yield final time and stop 1531 self. time = finaltime1536 self.set_time(self.finaltime) 1532 1537 self.log_operator_timestepping_statistics() 1533 yield(self. time)1538 yield(self.get_time()) 1534 1539 break 1535 1540 1536 1541 # if we are at the next yield point 1537 if self. time>= self.yieldtime:1542 if self.get_time() >= self.yieldtime: 1538 1543 # Yield (intermediate) time and allow inspection of domain 1539 1544 if self.checkpoint is True: … … 1543 1548 # Log and then Pass control on to outer loop for more specific actions 1544 1549 self.log_operator_timestepping_statistics() 1545 yield(self. time)1550 yield(self.get_time()) 1546 1551 1547 1552 # Reinitialise … … 1614 1619 1615 1620 # Update time 1616 self. time += self.timestep1621 self.set_time(self.get_time() + self.timestep) 1617 1622 1618 1623 # Update vertex and edge values … … 1663 1668 self.backup_conserved_quantities() 1664 1669 1665 initial_time = self. time1670 initial_time = self.get_time() 1666 1671 1667 1672 ###### … … 1685 1690 1686 1691 # Update time 1687 self. time += self.timestep1692 self.set_time(self.time + self.timestep) 1688 1693 1689 1694 # Update vertex and edge values … … 1721 1726 1722 1727 # Set substep time 1723 self. time = initial_time + self.timestep*0.51728 self.set_time(initial_time + self.timestep*0.5) 1724 1729 1725 1730 # Update vertex and edge values … … 1754 1759 1755 1760 # Set new time 1756 self. time = initial_time + self.timestep1761 self.set_time(initial_time + self.timestep) 1757 1762 1758 1763 … … 1941 1946 1942 1947 # Ensure that final time is not exceeded 1943 if finaltime is not None and self. time+ timestep > finaltime :1944 timestep = finaltime -self.time1948 if finaltime is not None and self.get_time() + timestep > finaltime : 1949 timestep = finaltime - self.get_time() 1945 1950 1946 1951 # Ensure that model time is aligned with yieldsteps 1947 if self. time+ timestep > self.yieldtime:1948 timestep = self.yieldtime - self. time1952 if self.get_time() + timestep > self.yieldtime: 1953 timestep = self.yieldtime - self.get_time() 1949 1954 1950 1955 self.timestep = timestep … … 2075 2080 for i in range(self.number_of_full_triangles): 2076 2081 if self.max_speed[i] > bins[-1]: 2077 msg = 'Time=%f: Ignoring isolated high ' % self. time2082 msg = 'Time=%f: Ignoring isolated high ' % self.get_time() 2078 2083 msg += 'speed triangle ' 2079 2084 msg += '#%d of %d with max speed=%f' \
Note: See TracChangeset
for help on using the changeset viewer.