Skip to content
Snippets Groups Projects
Select Git revision
  • fa52a961f7964a8cdcb237c88ffd4319eb99655c
  • master default protected
2 results

Boundary4.m

Blame
  • user avatar
    Oliver authored
    fa52a961
    History
    user avatar fa52a961
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Boundary4.m 3.34 KiB
    function [ res ] = ERD_boundary4(ya, yb, DATA)
    % Residual function for boundary conditions
    % version(6) == 4
    % --> SWRO-PRO hybrid system (with two ERD)
    % important: mixer_ERD=0; is not allowed! (use hybrid system I instead)
    
    %% Read data
    [H,Z,swro_Z,ro_water,ro_salt,Mw,Ms,Rw,T0,eta,sigma,p_r,rho_r,C_r,swro_L,swro_alpha,swro_R,swro_KK,swro_x_r,swro_b1,swro_b2,J_r,swro_gamma,swro_gamma2,swro_W_r,L,alpha,R,KK,x_r,b1,b2,Q_r,gamma,gamma2,W_r,cE,pE,rho_E,J_sf_0,J_wf_0,Pd_0,Pd_L,Pf_L,Q_sf_0,pd_0,pf_0,pd_L,pf_L,HP_eff,LP_eff,T_eff,V_m,ERD_eff,ERD_fric,A_ERD,eta_ERD,mix_density,pw,pe,swro_beta_fix,beta_fix,mixer_ERD,version,fig]...
         = DATA(1);
     
    %% no Mixing i.e. V_m = 0
    if V_m ==0 
    swroC_in = cE;
    c_in = yb(1);
    if version(1)==0; J_wd_out = Z/swro_Z*Q_r/J_r*ya(6+2)*(c_in+1)/((1-eta_ERD)*(c_in+1)); end
    if version(1)==1; J_wd_out = Z/swro_Z*abs(Q_r/J_r*yb(6+2))*(c_in+1)/((1-eta_ERD)*(c_in+1)); end
    else
    %% with Mixing i.e. V_m > 0
    % ERD 2
    % rho_d1    - Density of rejected PRO draw solution
    % rho_ERD2  - Density at Seawater outlet of 2nd ERD
    % C_ERD2   - Concentraion at Seawater outlet of 2nd ERD
    %
    if version(1) == 0; rho_d1= (yb(1+6) + 1)./(ro_water*yb(1+6)/ro_salt + 1); end
    if version(1) == 1; rho_d1= (ya(1+6) + 1)./(ro_water*ya(1+6)/ro_salt + 1); end
    rho_ERD2= V_m*(rho_d1 - rho_E)+rho_E;
    C_ERD2= -ro_salt*(rho_ERD2-1)/(rho_ERD2*ro_water-ro_salt);
    % ERD 1
    % swro_rho_d1   - Density of rejected SWRO Brine
    % rho_ERD       - Density at Seawater outlet of 1st ERD
    % C_ERD         - Concentraion at Seawater outlet of 1st ERD
    swro_rho_d1= (yb(1) + 1)./(ro_water*yb(1)/ro_salt + 1);
    rho_ERD= V_m*(swro_rho_d1 - rho_ERD2)+rho_ERD2;
    C_ERD= -ro_salt*(rho_ERD-1)/(rho_ERD*ro_water-ro_salt);
    J_E=(ya(1)*ya(2)+ya(2))/2; J_ERD = J_E;
    J_wE = J_E/(C_ERD2+1); J_wERD= J_ERD/(C_ERD+1);
    swroC_in = (C_ERD2*J_wE + C_ERD*J_wERD)/(J_wE+J_wERD);
    if version(1) ==0 % co-current    
    c_in = -(C_ERD * J_wERD * swro_Z * J_r + J_r * J_wE * yb(1) * swro_Z - C_ERD2 * J_wE * swro_Z * J_r - J_r * J_wERD * yb(1) * swro_Z - ya(8) * yb(1) * Q_r * Z) / Z / Q_r / ya(8);
    J_wd_out = (swro_Z*J_wERD+Z*Q_r/J_r*ya(2+6)-swro_Z*J_wE)/((1-eta_ERD)*swro_Z);
    end
    if version(1) ==1 % counter-current
    c_in = -(C_ERD * J_wERD * swro_Z * J_r + J_r * J_wE * yb(1) * swro_Z - C_ERD2 * J_wE * swro_Z * J_r - J_r * J_wERD * yb(1) * swro_Z - abs(yb(8)) * yb(1) * Q_r * Z) / Z / Q_r / abs(yb(8));
    J_wd_out = (swro_Z*J_wERD+Z*Q_r/J_r*abs(yb(2+6))-swro_Z*J_wE)/((1-eta_ERD)*swro_Z);    
    end 
    end
    
    %% define vector for residual error
    res =   [ % SWRO part:
              ya(1)- swroC_in       % MIXTURE OF ERD AND SEA WATER
              ya(3)- J_sf_0         % salt flux in fresh side at 0
              ya(4)- J_wf_0         % water flux in fresh side at L 
              ya(5)- Pd_0           % pressure draw side at 0
              %yb(5)- Pd_L          % pressure draw side at 0
              yb(2)- J_wd_out       % CORRECT MASS FLOWS BETWEEN SWRO AND PRO
              yb(6)- Pf_L           % pressure fresh side at L
    
              % PRO part:
              ya(7)-  c_in          % INCOMMING CONZENTRATION FROM ERD TO PRO
              ya(9)-  Q_sf_0       	% salt flux in fresh side at 0
              ya(11)- pd_0      	% pressure draw side at 0
              ya(12)- pf_0      	% pressure of fresh side at 0
              yb(11)- pd_L          % pressure draw side at L 
              yb(12)- pf_L];    	% pressure of fresh side at L
    	
    %% counter current    
    if version(1) ==1; res(7)=yb(7) - c_in; end 
    
    end