<div dir="ltr">Dear yt-users,<div><br></div><div>I am trying to define a new field, SFR_Density, which includes if statements.</div><div>That is defined by,</div><div>f_sf * rho / t_ff  if rho > rho_threshold</div><div>0                      if rho < rho_threshold</div><div>(f_sf is star formation efficiency, rho is gas density, and t_ff is free fall time)</div><div><br></div><div>Here is my definition I tried.</div><div><br></div><div><p style="margin:0px;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(175,173,36)">def</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(51,187,200)">_SFR_Density</span><span style="font-variant-ligatures:no-common-ligatures">(field, data):</span></p>
<p style="margin:0px;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">   f_sf = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">0.01</span></p>
<p style="margin:0px;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">   rho_thresh = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">57.5</span><span style="font-variant-ligatures:no-common-ligatures"> * Mu * hydrogen_mass</span></p>
<p style="margin:0px;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">   </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(175,173,36)">if</span><span style="font-variant-ligatures:no-common-ligatures"> data[</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">"density"</span><span style="font-variant-ligatures:no-common-ligatures">] > rho_thresh:</span></p>
<p style="margin:0px;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">      </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(175,173,36)">return</span><span style="font-variant-ligatures:no-common-ligatures"> f_sf * data[</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">"density"</span><span style="font-variant-ligatures:no-common-ligatures">] / (</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">3</span><span style="font-variant-ligatures:no-common-ligatures">*pi/</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">32</span><span style="font-variant-ligatures:no-common-ligatures">/Grav/data[</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">"density"</span><span style="font-variant-ligatures:no-common-ligatures">])**(</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">0.5</span><span style="font-variant-ligatures:no-common-ligatures">)</span></p>
<p style="margin:0px;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">   </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(175,173,36)">else</span><span style="font-variant-ligatures:no-common-ligatures">:</span></p>
<p style="margin:0px;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">      </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(175,173,36)">return</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">0.0</span><span style="font-variant-ligatures:no-common-ligatures"> * f_sf * data[</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">"density"</span><span style="font-variant-ligatures:no-common-ligatures">] / (</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">3</span><span style="font-variant-ligatures:no-common-ligatures">*pi/</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">32</span><span style="font-variant-ligatures:no-common-ligatures">/Grav/data[</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">"density"</span><span style="font-variant-ligatures:no-common-ligatures">])**(</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">0.5</span><span style="font-variant-ligatures:no-common-ligatures">)</span></p>
<p style="margin:0px;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">add_field(</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(195,55,32)">"SFR_Density"</span><span style="font-variant-ligatures:no-common-ligatures">, function=_SFR_Density)</span></p></div><div><br></div><div>But it fails with an error message of "<span style="color:rgb(0,0,0);font-family:Menlo;font-size:11px">ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()</span>"</div><div>I am sure this is because data["density"] is a list, so I need to specify the exact index number of elements at the if statement. I have tried many tests, but now I am in stuck.</div><div><br></div><div>Any help would be very appreciated.</div><div><br></div><div>Thanks,</div><div>Yusuke</div></div>