I would say it depends on the part itself. Take into consideration the complexity of the halves and the non mirrored geometry. Also the amount of available patterns might be important.
Option A is probably the "default" solution, but if there are really a lot of lines which you can not put into the mirrored sub-file, other options might be preferable. Yes, option C should usually be avoided.
For option B, I wouldn't like putting the halves in the additional sub-file. If an additional sub-file is needed, I prefer this structure:
main.dat
Option A is probably the "default" solution, but if there are really a lot of lines which you can not put into the mirrored sub-file, other options might be preferable. Yes, option C should usually be avoided.
For option B, I wouldn't like putting the halves in the additional sub-file. If an additional sub-file is needed, I prefer this structure:
main.dat
- mains01.dat (half 1)
- mains01.dat (half 2, mirrored)
- mains02.dat (non mirrored geometry)
- pattern (no sub-file, unless symmetrical itself)