function [i_sd,i_sq,v_dc,dx] = vsc_lcl_dq(eta_d,eta_q,v_sd,v_sq,i_dc,omega,params,x)
% parameters
R_t = params(1);
L_t = params(2);
R_s = params(3);
L_s = params(4);
C_m = params(5);
R_dmp = params(6);
C_dc = params(7);
% from the integrator to the states
i_td = x(1);
i_tq = x(2);
i_sd = x(3);
i_sq = x(4);
v_cmd = x(5);
v_cmq = x(6);
v_dc = x(7);
% algebraic
v_md = R_dmp*(i_td - i_sd) + v_cmd;
v_mq = R_dmp*(i_tq - i_sq) + v_cmq;
% derivatives
di_sd = 1/L_s*(v_md + L_s*omega*i_sq - R_s*i_sd - v_sd);
di_sq = 1/L_s*(v_mq - L_s*omega*i_sd - R_s*i_sq - v_sq);
dv_cmd = 1/C_m*(i_td - i_sd + omega*C_m*v_cmq);
dv_cmq = 1/C_m*(i_tq - i_sq - omega*C_m*v_cmd);
di_td = 1/L_t*(eta_d*v_dc*0.5 + L_t*omega*i_tq - R_t*i_td - v_md);
di_tq = 1/L_t*(eta_q*v_dc*0.5 - L_t*omega*i_td - R_t*i_tq - v_mq);
dv_dc = 1/C_dc*(i_dc - 0.75*(eta_d*i_sd + eta_q*i_sq));
% from derivatives to the integrator
dx = [di_td,di_tq,di_sd,di_sq,dv_cmd,dv_cmq,dv_dc];