Something like this? Maybe you need some calculation to exclude line width from radius. Then it becomes a math problem that is not difficult to solve.
Following pic
allows you to draw a big circle and arbitrary small cirles that have the same radius and line width and surround the big circle one by one.
options
r
: radius of big circle
num
: number of the small circles
small width
: line width of small circle
big width
: line width of big circle
pos
: distance from the border of the big circle to node
color 0
: color of big circle
color i
(i >= 1): color of i th small circle
First small circle lies on 0 deg
. If you have n small circles, then the second lies on 360/n deg
and so on.
First node lies between the first and the second small circles, named picname-1
and so on.

\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{fpu}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand {\myfor} { m +m } {
\int_step_variable:nNn {#1} \l_for_tl {\def\forvar{\tl_use:N \l_for_tl}#2}
}
\ExplSyntaxOff
% predefine
\myfor{50}{
\pgfkeys{/multicircles/color \forvar/.initial=black}
}
\makeatletter
\newlength\mc@r
\newlength\mc@R
\newlength\mc@rR
\newlength\mc@node
\tikzset{
mc/.pic={
\pgfkeys{/pgf/fpu, /pgf/fpu/output format=fixed}
\pgfmathsetlength{\mc@R}{\mc@radius-\mc@big@width/2}
\pgfmathsetmacro{\mc@ang}{360/\mc@num}
\pgfmathsetmacro{\mc@cos}{90-\mc@ang/2}
\pgfmathsetlength{\mc@r}{cos(\mc@cos)/(1-cos(\mc@cos))*\mc@radius-\mc@small@width/2}
\pgfmathsetlength{\mc@rR}{\mc@radius/(1-cos(\mc@cos))}
\pgfmathsetlength{\mc@node}{\mc@pos*\mc@rR*cos(\mc@ang/2)+(1-\mc@pos)*\mc@R}
\pgfkeys{/pgf/fpu=false}
\draw [\mc@color@main, line width=\mc@big@width] (0, 0) circle (\mc@R);
\foreach \i in {1,...,\mc@num} {
\def\temp@color{\pgfkeysvalueof{/multicircles/color \i}}
\draw [\temp@color, line width=\mc@small@width] ({(\i-1)*\mc@ang}:\mc@rR) circle (\mc@r);
\coordinate (-\i) at ({(\i-0.5)*\mc@ang}:\mc@node);
}
},
/multicircles/.search also=/tikz,
/multicircles/.cd,
color 0/.store in=\mc@color@main,
color 0=black,
num/.store in=\mc@num, num=6,
r/.store in=\mc@radius, r=1cm,
big width/.store in=\mc@big@width,
big width=1.6pt,
small width/.store in=\mc@small@width,
small width=1.6pt,
pos/.store in=\mc@pos, pos=.3,
}
\makeatother
\newcommand{\multicircles}[1][]{
\pic [pic type=mc, /multicircles/.cd,#1];
}
\newcommand{\multicirclesset}[1]{\pgfqkeys{/multicircles}{#1}}
\multicirclesset{
colors/.code args={#1!#2!#3}{
\myfor{#2}{
\pgfmathparse{\forvar/#2*100}
\edef\temp{
\noexpand\multicirclesset{color \forvar=#1!\pgfmathresult!#3}
}
\temp
}
}
}
\begin{document}
\begin{tikzpicture}
\multicircles[
r=2cm, num=6, color 0=red!60,
big width=3pt, small width=3pt,
colors=red!6!blue,
at={(0, 0)},
name=a,
]
\foreach \i in {1,...,6} {
\node [font=\small] at (a-\i) {$S_{\i}$};
}
\multicircles[
r=3cm, num=12, color 0=red!60,
big width=2pt, small width=4pt,
colors=yellow!12!cyan,
at={(12, 0)},
name=b,
]
\foreach \i in {1,...,12} {
\node [font=\tiny] at (b-\i) {$S_{\i}$};
}
\multicircles[
r=4cm, num=19, color 0=red!60,
big width=8pt, small width=5pt,
colors=green!19!teal,
at={(24, 0)},
name=c,
pos=-.5,
]
\foreach \i in {1,...,19} {
\node at (c-\i) {$S_{\i}$};
}
\end{tikzpicture}
\end{document}