@@ -4,7 +4,7 @@ use super::solver::DFTSolver;
44use feos_core:: {
55 Contributions , EosError , EosResult , EosUnit , EquationOfState , SolverOptions , StateBuilder ,
66} ;
7- use ndarray:: { arr1, Array1 , Dimension , Ix1 , Ix3 } ;
7+ use ndarray:: { arr1, Array1 , Dimension , Ix1 , Ix3 , RemoveAxis } ;
88use quantity:: { QuantityArray1 , QuantityArray2 , QuantityScalar } ;
99use std:: rc:: Rc ;
1010
@@ -55,12 +55,17 @@ where
5555 } )
5656 }
5757
58- fn equilibrium < D : Dimension , F : HelmholtzEnergyFunctional + FluidParameters > (
58+ fn equilibrium <
59+ D : Dimension + RemoveAxis + ' static ,
60+ F : HelmholtzEnergyFunctional + FluidParameters ,
61+ > (
5962 & self ,
6063 equilibrium : & Adsorption < U , D , F > ,
6164 ) -> EosResult < ( QuantityArray1 < U > , QuantityArray1 < U > ) >
6265 where
6366 D :: Larger : Dimension < Smaller = D > ,
67+ D :: Smaller : Dimension < Larger = D > ,
68+ <D :: Larger as Dimension >:: Larger : Dimension < Smaller = D :: Larger > ,
6469 {
6570 let p_eq = equilibrium. pressure ( ) . get ( 0 ) ;
6671 match self {
@@ -111,10 +116,16 @@ pub type Adsorption1D<U, F> = Adsorption<U, Ix1, F>;
111116/// Container structure for adsorption isotherms in 3D pores.
112117pub type Adsorption3D < U , F > = Adsorption < U , Ix3 , F > ;
113118
114- impl < U : EosUnit , D : Dimension , F : HelmholtzEnergyFunctional + FluidParameters > Adsorption < U , D , F >
119+ impl <
120+ U : EosUnit ,
121+ D : Dimension + RemoveAxis + ' static ,
122+ F : HelmholtzEnergyFunctional + FluidParameters ,
123+ > Adsorption < U , D , F >
115124where
116125 QuantityScalar < U > : std:: fmt:: Display ,
117126 D :: Larger : Dimension < Smaller = D > ,
127+ D :: Smaller : Dimension < Larger = D > ,
128+ <D :: Larger as Dimension >:: Larger : Dimension < Smaller = D :: Larger > ,
118129{
119130 fn new < S : PoreSpecification < U , D > > (
120131 functional : & Rc < DFT < F > > ,
0 commit comments