|
57 | 57 | assert not d.buildDistributedH2
|
58 | 58 | assert nPP.kernel.horizon.value < np.inf
|
59 | 59 |
|
60 |
| -if nPP.domain == 'gradedInterval': |
61 |
| - if d.horizonToMeshSize <= 0. or nPP.kernel.horizon.value == np.inf: |
62 |
| - h = 0.03/2**(d.noRef-6) |
63 |
| - else: |
64 |
| - h = nPP.kernel.horizon.value/d.horizonToMeshSize |
65 |
| - mesh, _ = nonlocalMeshFactory(nPP.domain, |
66 |
| - kernel=nPP.kernel, |
67 |
| - boundaryCondition=HOMOGENEOUS_DIRICHLET, |
68 |
| - h=h) |
69 |
| -elif nPP.domain == 'disc': |
70 |
| - if d.horizonToMeshSize <= 0. or nPP.kernel.horizon.value == np.inf: |
71 |
| - h = 0.04/2**(nPP.noRef-3) |
72 |
| - else: |
73 |
| - h = nPP.kernel.horizon.value/d.horizonToMeshSize/np.sqrt(2) |
74 |
| - mesh, _ = nonlocalMeshFactory(nPP.domain, |
75 |
| - kernel=nPP.kernel, |
76 |
| - boundaryCondition=HOMOGENEOUS_DIRICHLET, |
77 |
| - h=h, |
78 |
| - max_volume=h**2/2, |
79 |
| - projectNodeToOrigin=False) |
80 |
| -elif d.domain == 'gradedDisc': |
81 |
| - if d.horizonToMeshSize <= 0. or nPP.kernel.horizon.value == np.inf: |
82 |
| - h = 0.06/2**(d.noRef-6) |
| 60 | +with d.timer('set up mesh and dofmap'): |
| 61 | + if nPP.domain == 'gradedInterval': |
| 62 | + if d.horizonToMeshSize <= 0. or nPP.kernel.horizon.value == np.inf: |
| 63 | + h = 0.03/2**(d.noRef-6) |
| 64 | + else: |
| 65 | + h = nPP.kernel.horizon.value/d.horizonToMeshSize |
| 66 | + mesh, _ = nonlocalMeshFactory(nPP.domain, |
| 67 | + kernel=nPP.kernel, |
| 68 | + boundaryCondition=HOMOGENEOUS_DIRICHLET, |
| 69 | + h=h) |
| 70 | + elif nPP.domain == 'disc': |
| 71 | + if d.horizonToMeshSize <= 0. or nPP.kernel.horizon.value == np.inf: |
| 72 | + h = 0.04/2**(nPP.noRef-3) |
| 73 | + else: |
| 74 | + h = nPP.kernel.horizon.value/d.horizonToMeshSize/np.sqrt(2) |
| 75 | + mesh, _ = nonlocalMeshFactory(nPP.domain, |
| 76 | + kernel=nPP.kernel, |
| 77 | + boundaryCondition=HOMOGENEOUS_DIRICHLET, |
| 78 | + h=h, |
| 79 | + max_volume=h**2/2, |
| 80 | + projectNodeToOrigin=False) |
| 81 | + elif d.domain == 'gradedDisc': |
| 82 | + if d.horizonToMeshSize <= 0. or nPP.kernel.horizon.value == np.inf: |
| 83 | + h = 0.06/2**(d.noRef-6) |
| 84 | + else: |
| 85 | + h = nPP.kernel.horizon.value/d.horizonToMeshSize |
| 86 | + mesh, _ = nonlocalMeshFactory(nPP.domain, |
| 87 | + kernel=nPP.kernel, |
| 88 | + boundaryCondition=HOMOGENEOUS_DIRICHLET, |
| 89 | + h=h, |
| 90 | + max_volume=h**2/2) |
83 | 91 | else:
|
84 |
| - h = nPP.kernel.horizon.value/d.horizonToMeshSize |
85 |
| - mesh, _ = nonlocalMeshFactory(nPP.domain, |
86 |
| - kernel=nPP.kernel, |
87 |
| - boundaryCondition=HOMOGENEOUS_DIRICHLET, |
88 |
| - h=h, |
89 |
| - max_volume=h**2/2) |
90 |
| -else: |
91 |
| - if d.horizonToMeshSize <= 0. or nPP.kernel.horizon.value == np.inf: |
92 |
| - mesh = nPP.mesh |
93 |
| - for _ in range(nPP.noRef): |
94 |
| - mesh = mesh.refine() |
| 92 | + if d.horizonToMeshSize <= 0. or nPP.kernel.horizon.value == np.inf: |
| 93 | + mesh = nPP.mesh |
| 94 | + for _ in range(nPP.noRef): |
| 95 | + mesh = mesh.refine() |
| 96 | + else: |
| 97 | + mesh = nPP.mesh |
| 98 | + while d.horizonToMeshSize > np.around(nPP.kernel.horizon.value/mesh.h, 5): |
| 99 | + mesh = mesh.refine() |
| 100 | + if nPP.boundaryCondition == HOMOGENEOUS_DIRICHLET: |
| 101 | + dm = dofmapFactory(nPP.element, mesh, nPP.domainIndicator) |
95 | 102 | else:
|
96 |
| - mesh = nPP.mesh |
97 |
| - while d.horizonToMeshSize > np.around(nPP.kernel.horizon.value/mesh.h, 5): |
98 |
| - mesh = mesh.refine() |
99 |
| -if nPP.boundaryCondition == HOMOGENEOUS_DIRICHLET: |
100 |
| - dm = dofmapFactory(nPP.element, mesh, nPP.domainIndicator) |
101 |
| -else: |
102 |
| - dm = dofmapFactory(nPP.element, mesh, nPP.domainIndicator+nPP.fluxIndicator) |
| 103 | + dm = dofmapFactory(nPP.element, mesh, nPP.domainIndicator+nPP.fluxIndicator) |
103 | 104 |
|
104 |
| -assert d.comm.allreduce(dm.num_dofs, op=MPI.MAX) == dm.num_dofs |
| 105 | + assert d.comm.allreduce(dm.num_dofs, op=MPI.MAX) == dm.num_dofs |
105 | 106 |
|
106 | 107 | info = d.addOutputGroup('info')
|
107 | 108 | info.add('Global mesh', dm.mesh)
|
|
0 commit comments