thevenin/norton conversions
The first thing to notice is the Nortion represented by \$I_1\$ and \$R_4\$. This can be converted to its Thevenin equivalent of \$V_{_\text{TH}}=2\:\text{V}\$ and \$R_{_\text{TH}}=2\:\Omega\$, as a series pair.
Also, there's no point keeping \$R_1\$. \$V_1\$ sits across it and places \$100\:\text{mA}\$ through \$R_1\$. So this allows a reduced schematic of:
simulate this circuit– Schematic created using CircuitLab
At this point, you can see that there are two independent schematics (on right.) (I believe \$R_1\$ is what Andy called a red-herring in the circuit.)
The current on the left circuit is the obvious \$I_{R_1}=100\:\text{mA}\$, with the current arrow pointing top to bottom. But this has no impact on the right side circuit. There, the current arrow also points top to bottom and is \$\frac{1\:\text{V}-\left(-2\:\text{V}\right)}{5\:\Omega+2\:\Omega+2\:\Omega}=\frac13\:\text{A}\$.
From here, you can work out that \$I_{R_1}=100\:\text{mA}\$, \$I_{R_2}=I_{R_3}=\frac13\:\text{mA}\$.
With these details in hand, you can return back to the original circuit and assign the currents and node voltages (with reference to the ground I selected -- you can pick a different reference if you like.)
KVL (mesh)
You can keep your original circuit for this. There will be three loops required. Any minimal set of three will work. But let me prove this fact using directed graph theory:
A=Matrix([[1,-1,0,0],[1,-1,0,0],[0,-1,1,0],[0,0,-1,1],[0,0,-1,1],[1,0,0,-1]])pprint(A.T.nullspace()) [-1] [0 ] [-1] # R1 [ ] [ ] [ ] [1 ] [0 ] [0 ] # V1 [ ] [ ] [ ] [0 ] [0 ] [1 ] # R2[[ ], [ ], [ ]] [0 ] [-1] [1 ] # R4 [ ] [ ] [ ] [0 ] [1 ] [0 ] # I1 [ ] [ ] [ ] [0 ] [0 ] [1 ] # R3
\$A\$ is the incidence matrix (showing edge connections to vertices.) This proves that three loops are sufficient. The loops are:
- Start at ground, then \$R_1\$, then \$V_1\$, back to ground.
- Start at node c, then \$R_4\$, then \$I_1\$, back to node c.
- Start at ground, then \$R_1\$, then \$R_2\$, then \$R_4\$, then \$R_3\$, back to ground.
The above are taken directly from the above three vectors shown.
Going clockwise and using SymPy:
loop1 = Eq( 0 - R1*(I1+I3) - V1, 0 )loop2 = Eq( 0 - R4*(I2-I3) - VI1, 0 )loop3 = Eq( 0 - R1*(I3+I1) - R2*I3 - R4*(I3-I2) - R3*I3, 0 )known = Eq( I2, 1 )solve( [ loop1, loop2, loop3, known ], [ I1, I2, I3, VI1 ] ){I1: (-R1*R4 - R1*V1 - R2*V1 - R3*V1 - R4*V1)/(R1*R2 + R1*R3 + R1*R4), I2: 1, I3: (R4 + V1)/(R2 + R3 + R4), VI1: -R4}
This solves out as \$I_1=-0.43\dots\:\text{A}\$, \$I_2=1\:\text{A}\$, \$I_3=0.33\dots\:\text{A}\$, and \$V_{I_1}=-1.33\dots\:\text{V}\$.
You can use that to work out the various currents and voltages through each 2-terminal device in the schematic.
KCL (nodal)
In this case:
nodeA = Eq( V1/R1 + V1/R2, Vb/R2 + IV1 )nodeB = Eq( Vb/R2 + Vb/R3 + 1, V1/R2 + Vc/R4 )nodeC = Eq( Vc/R3 + Vc/R4, Vb/R4 + 1 )solve( [ nodeA, nodeB, nodeC ], [ Vb, Vc, IV1 ] ){Vb: (R2*R3*R4**2 - R3**2*R4*V1 - R3*R4**2*V1)/(R2*R3**2 - R2*R3*R4 - R2*R4**2 - R3**2*R4 - R3*R4**2), Vc: (R2*R3**2*R4 - R2*R3*R4**2 - R3**2*R4**2 - R3**2*R4*V1)/(R2*R3**2 - R2*R3*R4 - R2*R4**2 - R3**2*R4 - R3*R4**2), IV1: (R1*R3**2*V1 - R1*R3*R4**2 - R1*R3*R4*V1 - R1*R4**2*V1 + R2*R3**2*V1 - R2*R3*R4*V1 - R2*R4**2*V1 - R3**2*R4*V1 - R3*R4**2*V1)/(R1*R2*R3**2 - R1*R2*R3*R4 - R1*R2*R4**2 - R1*R3**2*R4 - R1*R3*R4**2)}
This solves out as \$V_b=-0.66\dots\:\text{V}\$, \$V_c=0.66\dots\:\text{V}\$, and \$I_{V_1}=0.433\dots\:\text{A}\$.
And again, you can use these to work out all the rest, as before.
summary
It works out every way you try. The key is to apply each technique, properly. Done well, all the various methods will give you the same result. (As must be, of course.)