The library does not depend on stdenv, that `stdenv` exposes `lib` is an artifact of the ancient origins of nixpkgs.
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
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.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}")
 | 
						|
    '';
 | 
						|
})
 |