forked from mirrors/nixpkgs
nixosTests.fenics: Add basic test
This commit is contained in:
parent
fbb273c5fe
commit
bffc749210
50
nixos/tests/fenics.nix
Normal file
50
nixos/tests/fenics.nix
Normal file
|
@ -0,0 +1,50 @@
|
|||
import ./make-test-python.nix ({ pkgs, ... }:
|
||||
|
||||
let
|
||||
fenicsScript = pkgs.writeScript "poisson.py" ''
|
||||
#!/usr/bin/env python
|
||||
from dolfin import *
|
||||
|
||||
mesh = UnitSquareMesh(4, 4)
|
||||
V = FunctionSpace(mesh, "Lagrange", 1)
|
||||
|
||||
def boundary(x):
|
||||
return x[0] < DOLFIN_EPS or x[0] > 1.0 - DOLFIN_EPS
|
||||
|
||||
u0 = Constant(0.0)
|
||||
bc = DirichletBC(V, u0, boundary)
|
||||
|
||||
u = TrialFunction(V)
|
||||
v = TestFunction(V)
|
||||
f = Expression("10*exp(-(pow(x[0] - 0.5, 2) + pow(x[1] - 0.5, 2)) / 0.02)", degree=2)
|
||||
g = Expression("sin(5*x[0])", degree=2)
|
||||
a = inner(grad(u), grad(v))*dx
|
||||
L = f*v*dx + g*v*ds
|
||||
|
||||
u = Function(V)
|
||||
solve(a == L, u, bc)
|
||||
print(u)
|
||||
'';
|
||||
in
|
||||
{
|
||||
name = "fenics";
|
||||
meta = {
|
||||
maintainers = with pkgs.stdenv.lib.maintainers; [ knedlsepp ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
fenicsnode = { pkgs, ... }: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
gcc
|
||||
(python3.withPackages (ps: with ps; [ fenics ]))
|
||||
];
|
||||
virtualisation.memorySize = 512;
|
||||
};
|
||||
};
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
''
|
||||
start_all()
|
||||
node1.succeed("${fenicsScript}")
|
||||
'';
|
||||
})
|
Loading…
Reference in a new issue