|
12 | 12 | # See the License for the specific language governing permissions and
|
13 | 13 | # limitations under the License.
|
14 | 14 |
|
15 |
| -import numpy as np |
16 | 15 | from paddle import fluid
|
17 | 16 |
|
18 | 17 | import ppsci
|
|
22 | 21 | from ppsci.utils import logger
|
23 | 22 |
|
24 | 23 | if __name__ == "__main__":
|
25 |
| - fluid.core._set_prim_all_enabled(True) |
26 |
| - |
27 | 24 | args = config.parse_args()
|
| 25 | + # enable computation for fourth-order differentiation of matmul |
| 26 | + fluid.core.set_prim_eager_enabled(True) |
| 27 | + fluid.core._set_prim_all_enabled(True) |
28 | 28 | # set random seed for reproducibility
|
29 | 29 | ppsci.utils.misc.set_random_seed(42)
|
30 | 30 | # set training hyper-parameters
|
|
59 | 59 | random="Hammersley",
|
60 | 60 | name="EQ",
|
61 | 61 | )
|
62 |
| - bc1 = ppsci.constraint.BoundaryConstraint( |
63 |
| - {"u0": lambda d: d["u"]}, |
64 |
| - {"u0": 0}, |
65 |
| - geom["interval"], |
66 |
| - {**dataloader_cfg, "batch_size": 1}, |
67 |
| - ppsci.loss.MSELoss("sum"), |
68 |
| - criteria=lambda x: np.isclose(x, 0.0), |
69 |
| - name="BC1", |
70 |
| - ) |
71 |
| - bc2 = ppsci.constraint.BoundaryConstraint( |
72 |
| - {"u__x": lambda d: jacobian(d["u"], d["x"])}, |
73 |
| - {"u__x": 0}, |
74 |
| - geom["interval"], |
75 |
| - {**dataloader_cfg, "batch_size": 1}, |
76 |
| - ppsci.loss.MSELoss("sum"), |
77 |
| - criteria=lambda x: np.isclose(x, 0.0), |
78 |
| - name="BC2", |
79 |
| - ) |
80 |
| - bc3 = ppsci.constraint.BoundaryConstraint( |
81 |
| - {"u__x__x": lambda d: hessian(d["u"], d["x"])}, |
82 |
| - {"u__x__x": 0}, |
83 |
| - geom["interval"], |
84 |
| - {**dataloader_cfg, "batch_size": 1}, |
85 |
| - ppsci.loss.MSELoss("sum"), |
86 |
| - criteria=lambda x: np.isclose(x, 1.0), |
87 |
| - name="BC3", |
88 |
| - ) |
89 |
| - bc4 = ppsci.constraint.BoundaryConstraint( |
90 |
| - {"u__x__x__x": lambda d: jacobian(hessian(d["u"], d["x"]), d["x"])}, |
91 |
| - {"u__x__x__x": 0}, |
| 62 | + bc = ppsci.constraint.BoundaryConstraint( |
| 63 | + { |
| 64 | + "u0": lambda d: d["u"][0:1], |
| 65 | + "u__x": lambda d: jacobian(d["u"], d["x"])[1:2], |
| 66 | + "u__x__x": lambda d: hessian(d["u"], d["x"])[2:3], |
| 67 | + "u__x__x__x": lambda d: jacobian(hessian(d["u"], d["x"]), d["x"])[3:4], |
| 68 | + }, |
| 69 | + {"u0": 0, "u__x": 0, "u__x__x": 0, "u__x__x__x": 0}, |
92 | 70 | geom["interval"],
|
93 |
| - {**dataloader_cfg, "batch_size": 1}, |
| 71 | + {**dataloader_cfg, "batch_size": 4}, |
94 | 72 | ppsci.loss.MSELoss("sum"),
|
95 |
| - criteria=lambda x: np.isclose(x, 1.0), |
96 |
| - name="BC4", |
| 73 | + evenly=True, |
| 74 | + name="BC", |
97 | 75 | )
|
98 | 76 | # wrap constraints together
|
99 | 77 | constraint = {
|
100 | 78 | pde_constraint.name: pde_constraint,
|
101 |
| - bc1.name: bc1, |
102 |
| - bc2.name: bc2, |
103 |
| - bc3.name: bc3, |
104 |
| - bc4.name: bc4, |
| 79 | + bc.name: bc, |
105 | 80 | }
|
106 | 81 |
|
107 | 82 | # set optimizer
|
|
0 commit comments