Skip to content

Commit c66e215

Browse files
Merge pull request #307 from zhiminzhang0830/euler_bc
update euler beam example
2 parents f90815d + c35e4d2 commit c66e215

File tree

1 file changed

+38
-15
lines changed

1 file changed

+38
-15
lines changed

examples/euler_beam/euler_beam.py

Lines changed: 38 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
import paddle
15+
import numpy as np
1616

1717
import ppsci
1818
from ppsci.autodiff import hessian
@@ -22,8 +22,6 @@
2222

2323
if __name__ == "__main__":
2424
args = config.parse_args()
25-
# enable computation for fourth-order differentiation of matmul
26-
paddle.fluid.core.set_prim_eager_enabled(True)
2725
# set random seed for reproducibility
2826
ppsci.utils.misc.set_random_seed(42)
2927
# set training hyper-parameters
@@ -58,24 +56,49 @@
5856
random="Hammersley",
5957
name="EQ",
6058
)
61-
bc = ppsci.constraint.BoundaryConstraint(
62-
{
63-
"u0": lambda d: d["u"][0:1],
64-
"u__x": lambda d: jacobian(d["u"], d["x"])[1:2],
65-
"u__x__x": lambda d: hessian(d["u"], d["x"])[2:3],
66-
"u__x__x__x": lambda d: jacobian(hessian(d["u"], d["x"]), d["x"])[3:4],
67-
},
68-
{"u0": 0, "u__x": 0, "u__x__x": 0, "u__x__x__x": 0},
59+
bc1 = ppsci.constraint.BoundaryConstraint(
60+
{"u0": lambda d: d["u"]},
61+
{"u0": 0},
6962
geom["interval"],
70-
{**dataloader_cfg, "batch_size": 4},
63+
{**dataloader_cfg, "batch_size": 1},
7164
ppsci.loss.MSELoss("sum"),
72-
evenly=True,
73-
name="BC",
65+
criteria=lambda x: np.isclose(x, 0.0),
66+
name="BC1",
67+
)
68+
bc2 = ppsci.constraint.BoundaryConstraint(
69+
{"u__x": lambda d: jacobian(d["u"], d["x"])},
70+
{"u__x": 0},
71+
geom["interval"],
72+
{**dataloader_cfg, "batch_size": 1},
73+
ppsci.loss.MSELoss("sum"),
74+
criteria=lambda x: np.isclose(x, 0.0),
75+
name="BC2",
76+
)
77+
bc3 = ppsci.constraint.BoundaryConstraint(
78+
{"u__x__x": lambda d: hessian(d["u"], d["x"])},
79+
{"u__x__x": 0},
80+
geom["interval"],
81+
{**dataloader_cfg, "batch_size": 1},
82+
ppsci.loss.MSELoss("sum"),
83+
criteria=lambda x: np.isclose(x, 1.0),
84+
name="BC3",
85+
)
86+
bc4 = ppsci.constraint.BoundaryConstraint(
87+
{"u__x__x__x": lambda d: jacobian(hessian(d["u"], d["x"]), d["x"])},
88+
{"u__x__x__x": 0},
89+
geom["interval"],
90+
{**dataloader_cfg, "batch_size": 1},
91+
ppsci.loss.MSELoss("sum"),
92+
criteria=lambda x: np.isclose(x, 1.0),
93+
name="BC4",
7494
)
7595
# wrap constraints together
7696
constraint = {
7797
pde_constraint.name: pde_constraint,
78-
bc.name: bc,
98+
bc1.name: bc1,
99+
bc2.name: bc2,
100+
bc3.name: bc3,
101+
bc4.name: bc4,
79102
}
80103

81104
# set optimizer

0 commit comments

Comments
 (0)