学問・資格

2025年6月19日 (木)

高周波・RFニュース 2025年6月19日 QorvoがSバンドレーダ用のBAW switched filter bank発表、Ericssonがミッションクリティカル用途のアンテナ発表、SEMCOが125℃保証の0201インチX7T 1.0㎌ 6.3V MLCC発表、iFixitがトルクスプラスねじについて解説

・QorvoがSバンドレーダ用のBAW switched filter bank発表

Qorvo Strengthens Radar Agility and Efficiency with BAW-Based S-Band Switched Filter Bank Modules

202506191

・Ericssonがミッションクリティカル用途のアンテナ発表

Ericsson introduces next-generation antennas for mission-critical networks

202506192

・SEMCOが125℃保証の0201インチX7T 1.0㎌ 6.3V MLCC発表

Samsung Electro-Mechanics Launches 125°C Guaranteed MLCC for ADAS – 0201 inch X7T 1.0㎌ 6.3V

202506193

・Fixitがトルクスプラスねじについて解説

Torx Plus: The High-Tech Screw Hiding in Our Gadgets

202506194

 

2025年6月18日 (水)

高周波・RFニュース 2025年6月18日 Qorvoが5Gインフラ向けBAWフィルタとプリドライバアンプ発表、KeysightとNTTらが300GHz帯で280Gbpsを達成する信号発生システム発表、TDKが自動車用パワー・オーバー・コアクス・インダクター発表、NordicがNeuton AI買収

・Qorvoが5Gインフラ向けBAWフィルタとプリドライバアンプ発表

Qorvo Simplifies 5G Infrastructure with New Compact Solutions that Reduce Radio Footprint and Improve Thermal Performance

202506181

・KeysightとNTTらが300GHz帯で280Gbpsを達成する信号発生システム発表

6Gの開発を加速する高速・高出力な300GHz帯信号生成システムを実現 ~広帯域増幅器を用いて世界最速280Gbpsの高出力信号生成に成功~

202506182

・TDKが自動車用パワー・オーバー・コアクス・インダクター発表

TDKは、業界トップクラスのシンプルさと効率性を備えた自動車用パワー・オーバー・コアクス・インダクターをフィルター向けに発売しました。

202506183

・NordicがNeuton AI買収

Nordic Semiconductor accelerates edge AI leadership with acquisition of Neuton.AI

202506184

その他:

iFixit :HMD Fusion: The Smartphone That Grows with You

Qorvo :Supercharge Your IoT Development with Qorvo’s New Design Calculators

GSA : FWA Market June 2025

2025年6月17日 (火)

高周波・RFニュース2025年6月17日 everythingRF magazineはIMS2025特別号、MITの6Gに向け光でディープラーニングを行うチップ論文、NGMNが6Gに向けたキーメッセージを出版、Litepoint、Spirent、ViaviのTest and Measurementのトレンドレポート

・everythingRF magazineはIMS2025特別号
広告が全部IMSに出展している企業で、ブース番号が書いてある。

New Magazine - everything RF Publishes a Print / Digital Magazine for IMS 2025

202506171

・MITの6Gに向け光でディープラーニングを行うチップ論文

ニュース

Photonic processor could streamline 6G wireless signal processing

論文

RF-photonic deep learning processor with Shannon-limited data movement

202506172

・NGMNが6Gに向けたキーメッセージを出版

NGMN calls for harmonised 6G standards to drive seamless mobile evolution on behalf of global MNOs

202506173

・Litepoint、Spirent、ViaviのTest and Measurementのトレンドレポート

https://content.rcrwireless.com/test-measurement-forum-market-pulse-report-2025

202506174

2025年6月16日 (月)

高周波・RFニュース 2025年6月16日 iFixitのSamsung Galaxy S25 Edge分解でCTスキャンで2階建て基板の内部や5Gミリ波アンテナモジュールが鮮明に見える、Microwave JournalでRFのヘテロジニアスインテグレーションとローデ・シュワルツの複数ポートをもつスペアナFSWX紹介

・iFixitのSamsung Galaxy S25 Edge分解でCTスキャンで2階建て基板の内部や5Gミリ波アンテナモジュールが鮮明に見える

上下を繋ぐRFラインは同軸でなくてフレキ。

Galaxy S25 Edge Teardown: What Slim Design Means for Repair

202506161

202506162

・Microwave JournalでRFのヘテロジニアスインテグレーションとローデ・シュワルツの複数ポートをもつスペアナFSWX紹介

Heterogeneous Integration Brings Compound Semiconductors into the Age of RF CMOS

202506163

Revolutionizing Spectrum Analysis: The FSWX and Its Exciting Capabilities

202506164

その他:

KYOCERA AVX Chip Antennas Support the Surging SiP Market

Nisshinbo Micro Devices to Showcase Cutting-Edge GaAs and LNA Innovations at IMS 2025

Google ColabのJulia言語で1次元シュレーディンガー方程式の井戸型ポテンシャルによる波束の散乱を計算してアニメーションにしてみる。空間方向は普通の差分、時間は自前の13段8次のルンゲクッタ法を使用。

今回はシュレーディンガー方程式をやってみる。

昔Excel VBAで計算して、Pythonでもやってみた1次元シュレーディンガー方程式のポテンシャルによる波束の散乱を計算しよう。
これはシッフの量子力学の例題で出ていたものを「計算物理」という本でfortranで書かれていたものの移植。

ただ、空間微分は普通に(φ(i+1) + φ(i-1) - 2 φ(i))/h²で差分化するが、時間方向は13段8次のルンゲクッタ法を使う。DifferentialEquations.jlを使えば一発だが、Google Colabで使うときは毎回Pkg.addとしないといけなくて、それが45分かかるのでもうやだ、ということで自前のもの(Excel VBA移植版)。

コードはこんな感じで。ルンゲクッタ部分の係数が長い…


using Plots
using Printf

function main()
    n = 2000 #空間分割数
    m = 5500 #時間分割数

    #波動関数の実部u、虚部v
    u = zeros(Float64, n + 2)
    v = zeros(Float64, n + 2)
    ud = zeros(Float64, n + 2)
    vd = zeros(Float64, n + 2)

    #ポテンシャル
    u_pot = zeros(Float64, n + 2)

    #物理パラメータ
    v_width = 0.064
    v0 = 0.6 * (70.7 * pi) ^ 2
    deltax = 0.035
    x0 = -0.3
    p0 = pi * 50.0
    t = 0.0
    dx = 0.001
    dt = dx * dx / 2.0
    xmax = dx * (n - 1) / 2.0
    xmin = -dx * (n - 1) / 2.0
    x = zeros(Float64, n + 2)

    #表示用
    results = []
    ndiv = 25

    #8次のルンゲクッタ法の係数
    a = zeros(Float64, 13)
    b = zeros(Float64, 13, 13)
    c = zeros(Float64, 13)
    ku = zeros(Float64, n + 1, 13)
    kv = zeros(Float64, n + 1, 13)
    a[1] = 0.0
    a[2] = 2.0 / 27.0
    a[3] = 1.0 / 9.0
    a[4] = 1.0 / 6.0
    a[5] = 5.0 / 12.0
    a[6] = 0.5
    a[7] = 5.0 / 6.0
    a[8] = 1.0 / 6.0
    a[9] = 2.0 / 3.0
    a[10] = 1.0 / 3.0
    a[11] = 1.0
    a[12] = 0.0
    a[13] = 1
   
    b[2, 1] = 2.0 / 27.0
   
    b[3, 1] = 1.0 / 36
    b[3, 2] = 1.0 / 12.0
   
    b[4, 1] = 1.0 / 24.0
    b[4, 3] = 1.0 / 8.0
   
    b[5, 1] = 5.0 / 12.0
    b[5, 3] = -25.0 / 16.0
    b[5, 4] = 25.0 / 16.0
   
    b[6, 1] = 1.0 / 20.0
    b[6, 4] = 1.0 / 4.0
    b[6, 5] = 1.0 / 5.0
   
    b[7, 1] = -25.0 / 108.0
    b[7, 4] = 125.0 / 108.0
    b[7, 5] = -65.0 / 27.0
    b[7, 6] = 125.0 / 54.0
   
    b[8, 1] = 31.0 / 300.0
    b[8, 5] = 61.0 / 225.0
    b[8, 6] = -2.0 / 9.0
    b[8, 7] = 13.0 / 900.0
   
    b[9, 1] = 2.0
    b[9, 4] = -53.0 / 6.0
    b[9, 5] = 704.0 / 45.0
    b[9, 6] = -107.0 / 9.0
    b[9, 7] = 67.0 / 90.0
    b[9, 8] = 3.0
   
    b[10, 1] = -91.0 / 108.0
    b[10, 4] = 23.0 / 108.0
    b[10, 5] = -976.0 / 135.0
    b[10, 6] = 311.0 / 54.0
    b[10, 7] = -19.0 / 60.0
    b[10, 8] = 17.0 / 6.0
    b[10, 9] = -1.0 / 12.0
   
    b[11, 1] = 2383.0 / 4100.0
    b[11, 4] = -341.0 / 164.0
    b[11, 5] = 4496.0 / 1025.0
    b[11, 6] = -301.0 / 82.0
    b[11, 7] = 2133.0 / 4100.0
    b[11, 8] = 45.0 / 82.0
    b[11, 9] = 45.0 / 164.0
    b[11, 10] = 18.0 / 41.0
   
    b[12, 1] = 3.0 / 205.0
    b[12, 6] = -6.0 / 41.0
    b[12, 7] = -3.0 / 205.0
    b[12, 8] = -3.0 / 41.0
    b[12, 9] = 3.0 / 41.0
    b[12, 10] = 6.0 / 41.0
   
    b[13, 1] = -1777.0 / 4100.0
    b[13, 4] = -341.0 / 164.0
    b[13, 5] = 4496.0 / 1025.0
    b[13, 6] = -289.0 / 82.0
    b[13, 7] = 2193.0 / 4100.0
    b[13, 8] = 51.0 / 82.0
    b[13, 9] = 33.0 / 164.0
    b[13, 10] = 12.0 / 41.0
    b[13, 12] = 1.0
   
    c[6] = 34.0 / 105.0
    c[7] = 9.0 / 35.0
    c[8] = 9.0 / 35.0
    c[9] = 9.0 / 280.0
    c[10] = 9.0 / 280.0
    c[12] = 41.0 / 840.0
    c[13] = 41.0 / 840.0


    #ポテンシャルと波動関数の初期値(ガウシアン波束)設定
    for i in 2:(n + 1)
        x[i] = xmin + (i - 1) * dx
        if x[i] >= -v_width / 2.0 && x[i] <= v_width / 2.0
            u_pot[i] = v0
        else
            u_pot[i] = 0.0
        end
        u[i] = exp(-((x[i] - x0) ^ 2) / (4 * deltax * deltax)) * cos(p0 * x[i]) / ((2 * pi * deltax * deltax) ^ 0.25)
        v[i] = exp(-((x[i] - x0) ^ 2) / (4 * deltax * deltax)) * sin(p0 * x[i]) / ((2 * pi * deltax * deltax) ^ 0.25)
    end
    u[1] = u[2]
    u[n + 2] = u[n + 1]
    v[1] = v[2]
    v[n + 2] = v[n + 1]
    x[1] = xmin - dx
    x[n + 2] = xmax + dx

    for i in 1:m
       
        # 8次のルンゲクッタ法計算
         @inbounds for ii in 2:(n + 1)
            ku[ii - 1, 1] = f(ii, t + dt, u, v, dx, u_pot, n) * dt
            kv[ii - 1, 1] = g(ii, t + dt, u, v, dx, u_pot, n) * dt
        end
       
        @inbounds for j in 2:13
           
            @inbounds @simd for ii in 2:(n + 1)
                ud[ii] = u[ii]
                vd[ii] = v[ii]
            end
           
            @inbounds for k in 1:(j - 1)
                @inbounds @simd for ii in 2:(n + 1)
                    ud[ii] = ud[ii] + b[j, k] * ku[ii - 1, k]
                    vd[ii] = vd[ii] + b[j, k] * kv[ii - 1, k]
                end
            end
           
            @inbounds for ii in 2:(n + 1)
                ku[ii - 1, j] = f(ii, t + a[j] * dt, ud, vd, dx, u_pot, n) * dt
                kv[ii - 1, j] = g(ii, t + a[j] * dt, ud, vd, dx, u_pot, n) * dt
            end
        end
       
        @inbounds @simd for j in 1:13
            for ii in 2:(n + 1)
                u[ii] = u[ii] + c[j] * ku[ii - 1, j]
                v[ii] = v[ii] + c[j] * kv[ii - 1, j]
            end
        end

        t = t + dt
       
        # ndivステップごとに結果(波動関数の大きさ)を配列に格納
        if i % ndiv == 0
            push!(results, sqrt.(u.^2 + v.^2))
        end

    end
    # 計算結果をアニメーションで表示
    anim = @animate for i in 1:length(results)
        plot(x, results[i], ylim = (0, 4), linewidth = 5,title="Tunnelling Effect", label="Wave function", xlabel="x", ylabel="phi", size=(900,500))
        plot!(x, u_pot, label = "Potential")
    end
    gif(anim, "Tunnel.gif", fps = 30)    
end

function f(i, t, u, v, dx, u_pot, n)
    v[1] = v[2]
    v[n + 2] = v[n + 1]
    d2 = (v[i + 1] + v[i - 1] - 2.0 * v[i]) / (dx * dx)
    return -d2 + u_pot[i] * v[i]
end

function g(i, t, u, v, dx, u_pot, n)
    u[1] = u[2]
    u[n + 2] = u[n + 1]
    d2 = (u[i + 1] + u[i - 1] - 2.0 * u[i]) / (dx * dx)
    return d2 - u_pot[i] * u[i]
end

実行結果。一部は通過して一部は反射している。

次はトンネル効果やってみよう。

 

2025年6月13日 (金)

PythonでFDTD法で電磁界シミュレーションできるopenEMSを使う(4)円筒座標のメッシュが使えるので円筒型のコンフォーマルパッチアンテナの計算をして電流分布を動画に、指向性などをグラフにする。

今回は例題に乗っていた曲がったパッチアンテナ。

https://docs.openems.de/python/openEMS/Tutorials/Bent_Patch_Antenna.html

https://wiki.openems.de/index.php/Tutorial:_Bent_Patch_Antenna.html

まずは必要なモジュールをインポート。


import os
import numpy as np
import matplotlib.pyplot as plt
from CSXCAD import CSXCAD
from openEMS.openEMS import openEMS
from openEMS.physical_constants import C0, EPS0

寸法や周波数の設定を行う。unitはmm単位にする。


Sim_Path = os.path.join("C:\\Users\\tomoh\\Documents\\Python Projects\\OpenEMS", 'Bent_Patch')

post_proc_only = False

unit = 1e-3 # all length in mm

f0 = 2.4e9 # center frequency, frequency of interest!
lambda0 = round(C0/f0/unit) # wavelength in mm
fc = 0.5e9 # 20 dB corner frequency

# patch width in alpha-direction
patch_width  = 32 # resonant length in alpha-direction
patch_radius = 50 # radius
patch_length = 40 # patch length in z-direction

#substrate setup
substrate_epsR   = 3.38
substrate_kappa  = 1e-3 * 2*np.pi*2.45e9 * EPS0*substrate_epsR
substrate_width  = 80
substrate_length = 90
substrate_thickness = 1.524
substrate_cells = 4

#setup feeding
feed_pos   = -5.5  #feeding position in x-direction
feed_width = 2     #feeding port width
feed_R     = 50    #feed resistance

# size of the simulation box
SimBox_rad    = 2*100
SimBox_height = 1.5*200

FDTDの設定。CoordSystem=1が円筒座標にする設定で、境界条件はすべてMurの吸収境界条件。


FDTD = openEMS(CoordSystem=1, EndCriteria=1e-4) # init a cylindrical FDTD
f0 = 2e9 # center frequency
fc = 1e9 # 20 dB corner frequency
FDTD.SetGaussExcite(f0, fc)
FDTD.SetBoundaryCond(['MUR', 'MUR', 'MUR', 'MUR', 'MUR', 'MUR']) # boundary conditions
# init a cylindrical mesh
CSX = CSXCAD.ContinuousStructure(CoordSystem=1)
FDTD.SetCSX(CSX)
mesh = CSX.GetGrid()
mesh.SetDeltaUnit(unit)

モデル作成。励振はLumpedポート。


# calculate some width as an angle in radiant
patch_ang_width = patch_width/(patch_radius+substrate_thickness)
substr_ang_width = substrate_width/patch_radius
feed_angle = feed_pos/patch_radius

# create patch
patch = CSX.AddMetal('patch') # create a perfect electric conductor (PEC)
start = [patch_radius+substrate_thickness, -patch_ang_width/2, -patch_length/2 ]
stop  = [patch_radius+substrate_thickness,  patch_ang_width/2,  patch_length/2 ]
patch.AddBox(priority=10, start=start, stop=stop) # add a box-primitive to the metal property 'patch'
FDTD.AddEdges2Grid(dirs='all', properties=patch)

# create substrate
substrate = CSX.AddMaterial('substrate', epsilon=substrate_epsR, kappa=substrate_kappa  )
start = [patch_radius                    , -substr_ang_width/2, -substrate_length/2]
stop  = [patch_radius+substrate_thickness,  substr_ang_width/2,  substrate_length/2]
substrate.AddBox(start=start, stop=stop)
FDTD.AddEdges2Grid(dirs='all', properties=substrate)

# save current density oon the patch
jt_patch = CSX.AddDump('Jt_patch', dump_type=3, file_type=0)
start = [patch_radius+substrate_thickness, -substr_ang_width/2, -substrate_length/2]
stop  = [patch_radius+substrate_thickness, +substr_ang_width/2,  substrate_length/2]
jt_patch.AddBox(start=start, stop=stop)

# create ground
gnd = CSX.AddMetal('gnd') # create a perfect electric conductor (PEC)
start = [patch_radius, -substr_ang_width/2, -substrate_length/2]
stop  = [patch_radius, +substr_ang_width/2, +substrate_length/2]
gnd.AddBox(priority=10, start=start, stop=stop)
FDTD.AddEdges2Grid(dirs='all', properties=gnd)

# apply the excitation & resist as a current source
start = [patch_radius                    ,  feed_angle, 0]
stop  = [patch_radius+substrate_thickness,  feed_angle, 0]
port = FDTD.AddLumpedPort(1 ,feed_R, start, stop, 'r', 1.0, priority=50, edges2grid='all')

メッシュの設定と、


# add the simulation domain size
mesh.AddLine('r', patch_radius+np.array([-20, SimBox_rad]))
mesh.AddLine('a', [-0.75*np.pi, 0.75*np.pi])
mesh.AddLine('z', [-SimBox_height/2, SimBox_height/2])

# add some lines for the substrate
mesh.AddLine('r', patch_radius+np.linspace(0,substrate_thickness,substrate_cells))

# generate a smooth mesh with max. cell size: lambda_min / 20
max_res = C0 / (f0+fc) / unit / 20
max_ang = max_res/(SimBox_rad+patch_radius) # max res in radiant
mesh.SmoothMeshLines(0, max_res, 1.4)
mesh.SmoothMeshLines(1, max_ang, 1.4)
mesh.SmoothMeshLines(2, max_res, 1.4)

近傍界から遠方界に変換する準備。


nf2ff = FDTD.CreateNF2FFBox()

そして計算。ここでモデルも確認しておく。


if 1:  # debugging only
    CSX_file = os.path.join(Sim_Path, 'bent_patch.xml')
    if not os.path.exists(Sim_Path):
        os.mkdir(Sim_Path)
    CSX.Write2XML(CSX_file)
    from CSXCAD import AppCSXCAD_BIN
    os.system(AppCSXCAD_BIN + ' "{}"'.format(CSX_file))


if not post_proc_only:
    FDTD.Run(Sim_Path, cleanup=True)

Openemsbendpatch1

そしてSパラメータ(S11)、入力インピーダンス、指向性の図示。


f = np.linspace(max(1e9,f0-fc),f0+fc,401)
port.CalcPort(Sim_Path, f)
Zin = port.uf_tot / port.if_tot
s11 = port.uf_ref/port.uf_inc
s11_dB = 20.0*np.log10(np.abs(s11))

plt.figure()
plt.plot(f/1e9, s11_dB)
plt.grid()
plt.ylabel('s11 (dB)')
plt.xlabel('frequency (GHz)')

P_in = 0.5*np.real(port.uf_tot * np.conj(port.if_tot)) # antenna feed power

# plot feed point impedance
plt.figure()
plt.plot( f/1e6, np.real(Zin), 'k-', linewidth=2, label=r'$\Re(Z_{in})$' )
plt.grid()
plt.plot( f/1e6, np.imag(Zin), 'r--', linewidth=2, label=r'$\Im(Z_{in})$' )
plt.title( 'feed point impedance' )
plt.xlabel( 'frequency (MHz)' )
plt.ylabel( 'impedance ($\Omega$)' )
plt.legend( )


idx = np.where((s11_dB<-10) & (s11_dB==np.min(s11_dB)))[0]
if not len(idx)==1:
    print('No resonance frequency found for far-field calulation')
else:
    f_res = f[idx[0]]
    theta = np.arange(-180.0, 180.0, 2.0)
    print("Calculate NF2FF")
    nf2ff_res_phi0 = nf2ff.CalcNF2FF(Sim_Path, f_res, theta, 0, center=np.array([patch_radius+substrate_thickness, 0, 0])*unit, read_cached=True, outfile='nf2ff_xz.h5')

    plt.figure(figsize=(15, 7))
    ax = plt.subplot(121, polar=True)
    E_norm = 20.0*np.log10(nf2ff_res_phi0.E_norm/np.max(nf2ff_res_phi0.E_norm)) + nf2ff_res_phi0.Dmax
    ax.plot(np.deg2rad(theta), 10**(np.squeeze(E_norm)/20), linewidth=2, label='xz-plane')
    ax.grid(True)
    ax.set_xlabel('theta (deg)')
    ax.set_theta_zero_location('N')
    ax.set_theta_direction(-1)
    ax.legend(loc=3)

    phi = theta
    nf2ff_res_theta90 = nf2ff.CalcNF2FF(Sim_Path, f_res, 90, phi, center=np.array([patch_radius+substrate_thickness, 0, 0])*unit, read_cached=True, outfile='nf2ff_xy.h5')

    ax = plt.subplot(122, polar=True)
    E_norm = 20.0*np.log10(nf2ff_res_theta90.E_norm/np.max(nf2ff_res_theta90.E_norm)) + nf2ff_res_theta90.Dmax
    ax.plot(np.deg2rad(phi), 10**(np.squeeze(E_norm)/20), linewidth=2, label='xy-plane')
    ax.grid(True)
    ax.set_xlabel('phi (deg)')
    plt.suptitle('Bent Patch Anteanna Pattern\nFrequency: {} GHz'.format(f_res/1e9), fontsize=14)
    ax.legend(loc=3)

    print( 'radiated power: Prad = {:.2e} Watt'.format(nf2ff_res_theta90.Prad[0]))
    print( 'directivity:    Dmax = {:.1f} ({:.1f} dBi)'.format(nf2ff_res_theta90.Dmax[0], 10*np.log10(nf2ff_res_theta90.Dmax[0])))
    print( 'efficiency:   nu_rad = {:.1f} %'.format(100*nf2ff_res_theta90.Prad[0]/np.real(P_in[idx[0]])))

plt.show()

Openemsbendpatch3

Calculate NF2FF
radiated power: Prad = 4.94e-26 Watt
directivity: Dmax = 5.5 (7.4 dBi)
efficiency: nu_rad = 89.9 %

となった。電流分布も動画にするとこうなる。

ものすごく時間がかかりデータも膨大になるが、

Et = CSX.AddDump('Et', dump_type=0, file_type=0)
Et.AddBox([patch_radius-20,-0.75*np.pi,-SimBox_height/2], [patch_radius+SimBox_rad,0.75*np.pi,SimBox_height/2])

を使えると電界分布も動画にできる。

 

2025年6月12日 (木)

高周波・RFニュース 2025年6月12日 QorvoがKバンド衛星通信向けパワーアンプ発表、QuectelがWi-SUNモジュール発表、Kymetaがマルチバンドアンテナ発表、iFixitがAppleがiPadの修理は悪夢と認めたと語る、中国の6G戦略解説、iFixitがNintendo Switch2のチップ同定

・QorvoがKバンド衛星通信向けパワーアンプ発表

Qorvo®’s New K-band Solution Delivers Three Times More Bandwidth, Less Power, Smaller Footprint to LEO Satellites

202506121

・QuectelがWi-SUNモジュール発表

Quectel introduces KCM0A5S Wi-SUN module for smart city and smart utility devices

202506122

・Kymetaがマルチバンドアンテナ発表

Kymeta’s Breakthrough Multi-Band Antenna Redefines Connectivity

202506123

・FixitがAppleがiPadの修理は悪夢と認めたと語る

Apple Finally Admits That The iPad Is A Beast To Repair

202506124

・中国の6G戦略解説

China Sharpens Strategy in the Global 6G Race

・iFixitがNintendo Switch2のチップ同定

Nintendo Switch 2 Chip ID

202506125

202506126

2025年6月11日 (水)

高周波・RFニュース 2025年6月11日 Siversの28GHzモジュールがaiRadarに採用、LG Innotekが車載5G衛星通信モジュール発表、Nuvotronicsがフィルタ設計のためのStrataWorksプラットフォーム発表、TechInsigtsのXiaomi 15S Pro分解、QualcommがAlphawave Semi買収

・Siversの28GHzモジュールがaiRadarに採用

Sivers Semiconductors Wins Contract from aiRadar to Develop Advanced 28GHz Antenna Module

202506111

・LG Innotekが車載5G衛星通信モジュール発表

LG Innotek Unveils World's First Automotive 5G Broadband Satellite Communication Module

202506112

・Nuvotronicsがフィルタ設計のためのStrataWorksプラットフォーム発表

Nuvotronics Launches StrataWorks® Platform, Ushering in a New Era of Radio Frequency Design

202506113

・TechInsigtsのXiaomi 15S Pro分解

Xiaomi 15S Pro Teardown – INSANE Engineering Revealed!

202506114

・QualcommがAlphawave Semi買収

Qualcomm to Acquire Alphawave Semi

2025年6月 9日 (月)

Google ColabのJulia言語で2次元Swift-Hohenberg方程式(∂φ/∂t=φ - φ³ - (∇²+ k₀²)²φ、熱対流などを表す)を差分法で計算してパターンを動画にしてみる。

前回は複素TDGL方程式をやったので、今回は類似のSwift-Hohenberg方程式

∂φ/∂t = φ - φ3 - (∇2+ k02)2φ

をやってみよう。空間の4階微分が出てくる。コードはこんな感じで。

TDGLのプログラム流用なので無駄があり変数名がおかしいがまあ気にしないで。


using Plots
using Printf
using Random

function main()
    #パラメータ設定
    n = 128
    m = 1000
    ndiv = 2
    dt = 0.02
    dx = 1.0
    C1 = 1.0

    #初期設定
    X1 = zeros(n + 2, n + 2)
    Y1 = zeros(n + 2, n + 2)
    X2 = zeros(n + 2, n + 2)
    MT = MersenneTwister()
    Random.seed!(MT, 42)
    @inbounds for j in 2:(n + 1)
        @inbounds @simd for i in 2:(n + 1)
            X1[i, j] = 0.1 * (2.0 * rand(MT) - 1.0)
        end
    end
       
    # 結果を格納する配列
    results = []

    for t in 1:m
        #境界条件
        @inbounds for i in 2:(n + 1)
            X1[1, i] = X1[2, i]
            X1[n + 2, i] = X1[n + 1, i]
            X1[i, 1] = X1[i, 2]
            X1[i, n + 2] = X1[i, n + 1]
        end
        #一つ目のラプラシアン
        @inbounds for j in 2:(n + 1)
            @inbounds @simd for i in 2:(n + 1)
                lapX = (X1[i + 1, j] + X1[i - 1, j] + X1[i, j + 1] + X1[i, j - 1] - 4.0 * X1[i, j]) / (dx * dx)
                Y1[i, j] = lapX + C1 * C1 * X1[i, j]                                                                              
            end
        end
        #境界条件
        @inbounds for i in 2:(n + 1)    
            Y1[1, i] = Y1[2, i]
            Y1[n + 2, i] = Y1[n + 1, i]
            Y1[i, 1] = Y1[i, 2]
            Y1[i, n + 2] = Y1[i, n + 1]
        end
        #Swift-Hohenberg計算
        @inbounds for j in 2:(n + 1)
            @inbounds @simd for i in 2:(n + 1)
                lapY = (Y1[i + 1, j] + Y1[i - 1, j] + Y1[i, j + 1] + Y1[i, j - 1] - 4.0 * Y1[i, j]) / (dx * dx)
                X2[i, j] = X1[i, j] + dt * (X1[i, j] * (1.0 - X1[i, j] ^ 2) - (lapY + C1 * C1 * Y1[i, j]))                                                                            
            end
        end

        @inbounds for j in 2:(n + 1)
            @inbounds @simd for i in 2:(n + 1)
                X1[i, j] = X2[i, j]
            end
        end

        # ndivステップごとに結果を配列に格納
        if t % ndiv == 0
            push!(results, copy(X1))
        end
    end

    # 計算結果をアニメーションで表示
    anim = @animate for i in 1:length(results)
        heatmap(results[i], title="t = $(@sprintf("%.3f", i * ndiv * dt))", clim=(-1.2, 1.2), size = (950, 800))
    end
    gif(anim, "Swift-Hohenberg.gif", fps = 10)    

end

これでmain()とすると動画ができる。

 

 

2025年6月 6日 (金)

高周波・RFニュース 2025年6月6日 IEEE Microwave Magazineはワイヤレス電力伝送特集、Qorvoがコネクテッドカーの入門書発行、STMとQualcommが共同開発したWi-Fi/Bluetoothモジュール。mmTronが25-29GHzのアップ/ダウンコンバータ発表、GSAの6G状況レポート

・IEEE Microwave Magazineはワイヤレス電力伝送特集
https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=6668

202506061

・Qorvoがコネクテッドカーの入門書発行

Green Light for Innovation: Accelerating Safer Roads with V2X Communication

202506062

・STMとQualcommが共同開発したWi-Fi/Bluetoothモジュール

STMicroelectronics announces mass production and lead customer success for turnkey Bluetooth/Wi-Fi modules developed with Qualcomm

202506063

・mmTronが25-29GHzのアップ/ダウンコンバータ発表

25–29 GHz Up/Down-Converter RFIC Simplifies Transceiver Design

202506064

・GSAの6G状況レポート

6G-Status Update June 2025

・QualcommとMetaのMRに使用するWi-Fi解説

How Meta and Qualcomm are showcasing the future of MR connectivity with Wi-Fi optimizations

・QualcommがAutotalksの買収完了

Qualcomm Acquires Autotalks to Boost V2X Deployments, Enhance Road Safety, and Improve Automated Driving and Traffic Efficiency

より以前の記事一覧

最近の記事

2025年6月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

最近のコメント

無料ブログはココログ
フォト