1 | #Test Name: SquareSheetShelfHORotation
|
---|
2 | import numpy as np
|
---|
3 | import sys
|
---|
4 | from model import *
|
---|
5 | from socket import gethostname
|
---|
6 | from triangle import *
|
---|
7 | from setmask import *
|
---|
8 | from parameterize import *
|
---|
9 | from setflowequation import *
|
---|
10 | from solve import *
|
---|
11 |
|
---|
12 |
|
---|
13 | md = triangle(model(), '../Exp/Square.exp', 150000.)
|
---|
14 | md = setmask(md, '../Exp/SquareShelf.exp', '')
|
---|
15 | md = parameterize(md, '../Par/SquareSheetShelf.py')
|
---|
16 | md.extrude(5, 1.)
|
---|
17 | md = setflowequation(md, 'HO', 'all')
|
---|
18 | md.stressbalance.spcvx[np.nonzero(md.mesh.y > 0.)] = np.nan
|
---|
19 | md.initialization.vx[:] = 0.
|
---|
20 | md.initialization.vy[:] = 0.
|
---|
21 | md.initialization.vel = np.zeros_like(md.initialization.vx)
|
---|
22 |
|
---|
23 | md.cluster = generic('name', gethostname(), 'np', 3)
|
---|
24 | md = solve(md, 'Stressbalance')
|
---|
25 | vel0 = md.results.StressbalanceSolution.Vel
|
---|
26 |
|
---|
27 | theta = 30. * np.pi / 180.
|
---|
28 | x = md.mesh.x
|
---|
29 | y = md.mesh.y
|
---|
30 | md.mesh.x = np.cos(theta) * x - np.sin(theta) * y
|
---|
31 | md.mesh.y = np.sin(theta) * x + np.cos(theta) * y
|
---|
32 |
|
---|
33 | md.stressbalance.referential[:, 0:3] = np.tile([np.cos(theta), np.sin(theta), 0], (md.mesh.numberofvertices, 1))
|
---|
34 | md.stressbalance.referential[:, 3:] = np.tile([0, 0, 1], (md.mesh.numberofvertices, 1))
|
---|
35 | md = solve(md, 'Stressbalance')
|
---|
36 | vel1 = md.results.StressbalanceSolution.Vel
|
---|
37 |
|
---|
38 | #plotmodel(md, 'data', vel0, 'data', vel1, 'data', vel1 - vel0, 'title', 'Cartesian CS', 'title', 'Rotated CS', 'title', 'difference', 'view #all', 2)
|
---|
39 | print("Error between Cartesian and rotated CS: {}".format(np.max(np.abs(vel0 - vel1)) / (np.max(np.abs(vel0)) + sys.float_info.epsilon)))
|
---|
40 |
|
---|
41 | #Fields and tolerances to track changes
|
---|
42 | field_names = ['vel1']
|
---|
43 | field_tolerances = [1e-9]
|
---|
44 | field_values = [vel1]
|
---|