function forestM_Cs(Par_fix,Par,S,STrVol,forcing,Temp,WE)
    # forcing=forcing[i,:]
    # Temp=Temp[i,:]
    # WE=WEForest
    # Par=ParForest;
    # S=S_forest;
    # Age=Age_forest;
    # C=C_forest;
    # ti=i;
    Tt=Par[1]
    Cmelt=Par[2]
    Ca=Par[3]
    Ks=Par[4]
    Ss_p=Par_fix
    Simax=Par[5]
    Sumax=Par[6]
    beta=Par[7]
    D=Par[8]
    Cpmax=Par[9]
    Kf=Par[10]
    P=forcing[1]#check
    Ep=forcing[2]#check
     # O18_pre=forcing[3]#check
     H3_pre=forcing[3]#check

    Si=S[1]
    Su=S[2]
    Sf=S[3]
    Ssnow=S[4]
    Sesnow=S[5:14]'
    Sei=S[15:end]'
    SiTrVol=STrVol[1]
    SuTrVol=STrVol[2]
    SfTrVol=STrVol[3]
    SsnowTrVol=STrVol[4]
    SesnowTrVol=STrVol[5:14]'
    SeiTrVol=STrVol[15:end]'

    Mesnow=zeros(1,Emax)
    Pesnow=zeros(1,Emax)
    Perain=zeros(1,Emax)
    Pere=zeros(1,Emax)
    Eei=zeros(1,Emax)
    # O18Con_Mesnow=zeros(1,Emax)
    # O18Con_Pere=zeros(1,Emax)
    # O18Con_Eei=zeros(1,Emax)

    Con_Mesnow=zeros(1,Emax)
    Con_Pere=zeros(1,Emax)
    Con_Eei=zeros(1,Emax)

    for j in 1:Emax
        if Temp[j]>Tt
            ## snow: no input, output
            # input
            Pesnow[j]=0.0
            Sesnow_mix=Sesnow[j]
            # output
            Mesnow[j]=min(Cmelt*(Temp[j]-Tt),Sesnow_mix);
            Sesnow[j]=Sesnow_mix-Mesnow[j];
            ## rain
            Perain[j]=P
            Sei_mix=Sei[j]+Perain[j]
                # input
                Pere[j]=max(0.0,Sei_mix-Simax)
                Eei[j]=min(Ep,Sei_mix-Pere[j])

                Sei[j]=Sei_mix-Pere[j]-Eei[j]
        else
            # no rain input, no snow output
            Perain[j]=0.0
            Sei_mix=Sei[j]
            Pere[j]=0.0
            Eei[j]=min(Ep,Sei_mix)
            Sei[j]=Sei_mix-Eei[j]

            Pesnow[j]=P
            Sesnow_mix=Sesnow[j]+Pesnow[j]
            Mesnow[j]=0.0
            Sesnow[j]=Sesnow_mix
        end
        # tracer snow
        SesnowTrVol_mix=SesnowTrVol[j]+Pesnow[j]*H3_pre;
        if Sesnow_mix>0.0
            Con_Mesnow[j]=SesnowTrVol_mix/Sesnow_mix
        else
            Con_Mesnow[j]=0.0
        end
        SesnowTrVol[j]=SesnowTrVol_mix-Con_Mesnow[j]*Mesnow[j]
        # tracer interception
        SeiTrVol_mix=SeiTrVol[j]+Perain[j]*H3_pre;
        if Sei_mix>0.0
            Con_Pere[j]=SeiTrVol_mix/Sei_mix
            Con_Eei[j]=SeiTrVol_mix/Sei_mix
        else
            Con_Pere[j]=0.0
            Con_Eei[j]=0.0
        end
        SeiTrVol[j]=SeiTrVol_mix-Con_Pere[j]*Pere[j]-Con_Eei[j]*Eei[j]
    end
    Ssnow=sum(Sesnow*WE)
    Msnow=sum(Mesnow*WE)
    Si=sum(Sei*WE)
    Pre=sum(Pere*WE)
    Prain=sum(Perain*WE)
    Ei=sum(Eei*WE)
    Pe=Pre+Msnow
    SiTrVol=sum(SeiTrVol*WE)
    SsnowTrVol=sum(SesnowTrVol*WE)
    if Ei>0.0
        Con_Ei=sum(Con_Eei.*Eei*WE)/Ei
    else
        Con_Ei=0.0
    end
    # water Usaturated:
    # input: Pe: Msnow and Pre
    # Age of Pe, Concentration of Pe
    Su=min(Su,Sumax)
    Su_mix=Su+Pe
    Suu=(1.0+beta)*Sumax*(1.0-(1.0-Su/Sumax)^(1.0/(1.0+beta)))
    index=min((Pe+Suu)/((1.0+beta)*Sumax),1.0)
    Ru=Pe-Sumax+Su+Sumax*((1-index)^(1.0+beta))
    Ru=max(0.0,Ru)
    Rsu=Pe-Ru
    Su=Su+Rsu

    if Pe>0.0
        Con_Pe=sum(Con_Mesnow.*Mesnow*WE+Pere.*Con_Pere*WE)/Pe
    else
        Con_Pe=0.0
        # H2Con_Pe=0.0
    end

    # Tracer Unsaturated Reservoir
    SuTrVol_mix=SuTrVol+Pe*Con_Pe;
    if Su_mix>0.0
        Con_Ru=SuTrVol_mix/Su_mix
    else
        Con_Ru=0.0
    end
    SuTrVol=SuTrVol_mix-Con_Ru*Ru
    # preference flow
    Rpref=(1.0-D)*Ru
    Con_Rpref=Con_Ru

    #transporation
    Su_mix=Su
    Ea=min((Ep-Ei)*min(Su/(Sumax*Ca),1.0),Su)
    Su=Su-Ea
    # Tracer Transpiration
    SuTrVol_mix=SuTrVol
    if Su_mix>0.0
        Con_Ea=SuTrVol_mix/Su_mix
    else
        Con_Ea=0.0
    end
    SuTrVol=SuTrVol_mix-Con_Ea*Ea

    # percolation
    Su_mix=Su
    Rperc=Cpmax*(Su/Sumax)
    Rperc=min(Rperc,Su)
    Su=Su-Rperc
    # Tracer Percolation
    SuTrVol_mix=SuTrVol
    if Su_mix>0.0
        Con_Rperc=SuTrVol_mix/Su_mix
    else
        Con_Rperc=0.0
    end
    SuTrVol=SuTrVol_mix-Con_Rperc*Rperc
    # fast
    Ruf=D*Ru
    Con_Ruf=Con_Ru
    Sf_mix=Sf+Ruf
    Qf=min(Kf*Sf_mix,Sf_mix)
    Sf=Sf_mix-Qf
    # Tracer fast reservior
    SfTrVol_mix=SfTrVol+Ruf*Con_Ruf
    if Sf_mix>0.0
        Con_Qf=SfTrVol_mix/Sf_mix
    else
        Con_Qf=0.0
    end
    SfTrVol=SfTrVol_mix-Con_Qf*Qf
    Rus=Rperc+Rpref
    if Rus>0.0
        Con_Rus=(Con_Rperc*Rperc+Con_Rpref*Rpref)/Rus
    else
        Con_Rus=0.0
    end
 return ([Si Su Sf Ssnow Sesnow Sei],
 [SiTrVol SuTrVol SfTrVol SsnowTrVol SesnowTrVol SeiTrVol],
 [Ei Ea Rus Qf Msnow],
 [Con_Ei Con_Ea Con_Rus Con_Qf])
end
