It's been well-documented in the Model 3 community and I've tested it myself with the Scan My Tesla app. I've posted screenshots in another thread showing the Stator motors warming up and the battery pack temp increases over 30 minutes. Here's a cut and paste:
In the attached image, I've circled in red the relevant info. This is an image, after about 1 minute, when I woke the car up and turned on the heat. Ambient temp in my garage, 58F. Battery temp 66F. Take note of the battery flow (this is the coolant running through the battery) and the Stator motor temperatures, along with the Battery inlet temp. I'll explain all this shortly in my second reply with a second image showing pre-conditioning after 30 minutes.
View attachment 607944
Here is the car after 30 minutes of pre-conditioning.
Note the battery temps are now 82F. How does all this work by turning on your heat? This is how the car pre-conditions:
By turning on the heat, the Battery Management System (aka BMS) activates a non-motive power waveform to the Stator motors. This is to generate heat. This heat is carried away by the coolant via conduction, the same way gamers use liquid cooling on their CPU and GPU, or in gas vehicles with the radiator coolant passing through the engine block. This hot coolant eventually flows through the battery packs and then back through the Stator motors and the process is repeated. You can see the Battery Flow and Powertrain flow indicated in LPM (Liters per minute). You can also see what the temperature of the coolant is before it enters the battery packs, listed as Battery Inlet.
It also works in reverse in the summer when it's hotter outside and the batteries need to be cooler. Instead of heat conduction from the Stator motors, the Radiator Bypass is closed and the coolant is routed through the radiator fans. This speed can be found with the Radiator Fan Target. Fresh air is pushed over the coolant lines to lower the temperatures.
There you have it. Battery pre-conditioning 101.
View attachment 607945