B
    |^9-                 @   s   d dl Zd dlmZ d dlmZ d dlZd dl	m
Z
 d dlZed dd Zdd Zdd	 ZdddZdddZdddZdd ZejfddZdd Zdd ZdS )    N)t_star_funcignorec             C   sH   t j|t jtdtj t j |    t|d  dt j |     S )N      )cT0_weldrhocnpsqrtpiaexp)tyqvd r   H/Users/vegardjervell/Documents/6_semester/matmod/matmod11a V3/welding.pyT_weld_func   s    r   c        	         s   t jtjtjtjdd  t dddt jdddd} t jddd	d}t jdd
dd}t jd
ddd}t jdddd}t jddd
d}t dg}| ||||||g} fdd|D }||fS )N)stepi  r   d   r   g?   g      ?
         2   c                s   g | ]}t | qS r   )T_weld_vectorized).0r   )	qvd_arrayt_liner   r   
<listcomp>    s    z&get_Tt_weld_curves.<locals>.<listcomp>)r	   aranger   qvd_slider_minqvd_slider_maxqvd_slider_steplogspacearray)	y_vals1y_vals2y_vals3y_vals4y_vals5y_vals6y_vals7y_valstempsr   )r   r   r   get_Tt_weld_curves   s    r0   c             C   s   ddt j |   }dt jtdtj t j |    }tj|d  tt|dd}tjtt||dd}tj||dd}tj||dd}t j	|t
|  S )Nr   r   r   r   )axes)r   r   r   r	   r
   r   	tensordotoneslenr   r   )r   r   r   a1a2Zexp_coreZpre_expr   r   r   r   %   s    $ r   Tc                s  | d } t jdddd}t jdddd}t jddd	d}|d
krt ddd}t jdddd}t jdddd}t jdddd}dg}	|||||||	gnt ddd}|||gd}
|
t fddttD  }td  fdd|D }tj	ddgd xt
|D ]t\}}d
}xd|D ]\}|d
krdtj|t||| |dtt|d d dd d}ntj|t||| |d q"W qW tjddd  td! |d
krtd! tjd"dd# tjd$dd# td% d S )&Ni  r   r   g?)r   r   g      ?r   r   Tr   r   r   r   gffffff?c                s   g | ]}|t   qS r   )r4   )r   i)r.   r   r   r    I   s    z#plot_Tt_weld_V1.<locals>.<listcomp>YlOrRd_rc                s   g | ]} |qS r   r   )r   x)cmapr   r   r    L   s          )figsizezy =    mm:)colorlabel	linestyleF)rA   zupper right   )locfontsizelogzTime [s])rF   u   Temperature [℃]zTemperature as a function of time at different distances from weld.
Distance increases linearly from one dotted line to the next by $\Delta y = \frac{h}{10}$,
where $h$ is the distance at the furthest of the dotted lines)r	   r!   r%   r&   ranger4   cmget_cmappltfigurezipplotr   strroundlegendxscaleyscalexlabelylabeltitle)r   ylogr'   r(   r)   r   r*   r+   r,   r-   	max_colorcolor_range
color_listvalsrA   rB   r   r   )r:   r.   r   plot_Tt_weld_V16   sB    
$


$


r\   c          
      s  t | tj tj }tjtjtjtjdd }tjdddd}tjdddd}tjddd	d}|d
krtddd}tjdddd}tjdddd}	tjdddd}
tdg}|||||	|
|gntddd}|||gd}|tfddt	t
D  }td  fdd|D }tjddgd xt|D ]\}}t|||}tj||d d d|f |dtt|d d d dd x6t|d d d	d |f D ]}tj|||d qW q<W tjddd td  |d
krtd  tjd!dd" tjd#dd" td$ d S )%N)r   i  r   r   g?r   g      ?r   r   Tr   r   r   r   gffffff?c                s   g | ]}|t   qS r   )r4   )r   r7   )r.   r   r   r    x   s    z#plot_Tt_weld_V2.<locals>.<listcomp>r8   c                s   g | ]} |qS r   r   )r   r9   )r:   r   r   r    {   s    r;   r<   )r=   zy = r>   r?   r@   )rA   rB   rC   )rA   zupper rightrD   )rE   rF   rG   zTime [s])rF   u   Temperature [℃]zTemperature as a function of time at different distances from weld.
Distance increases linearly between each pair of dotted lines by $\Delta y = \frac{h}{10}$,
where $h$ is the distance at the furthest of the two.)intr   r"   r$   r	   r!   r#   r%   r&   rH   r4   rI   rJ   rK   rL   rM   r   rN   rO   rP   	transposerQ   rR   rS   rT   rU   rV   )r   rW   	qvd_indexr   r'   r(   r)   r   r*   r+   r,   r-   rX   rY   rZ   r   rA   r/   tempr   )r:   r.   r   plot_Tt_weld_V2d   s@    
$
 "


ra   c          
      s&  t | tj tj }d}|tfddttD  }t	d  fdd|D }t
jddgd |d	krxttD ]}	||	 }
t
j||
d d d
|f ||	 dtt|	 d
 d d dd x8t|
d d dd |f D ]}t
j||||	 d qW qW n|d d }d d xttD ]}	||	 }
t
j|d d |
d dd
|f ||	 dtt|	 d
 d d dd xBt|
d ddd |f D ]"}t
j|d d |||	 d qW q2W t
jddd t
d |d	krt
d t
jddd t
jddd t
d d S )Ngffffff?c                s   g | ]}|t   qS r   )r4   )r   r7   )r.   r   r   r       s    z#plot_Tt_weld_V3.<locals>.<listcomp>r8   c                s   g | ]} |qS r   r   )r   r9   )r:   r   r   r       s    r;   r<   )r=   Tr   zy = r>   r?   r@   )rA   rB   rC   r   )rA   <   zupper rightrD   )rE   rF   rG   zTime [s])rF   u   Temperature [℃]zTemperature as a function of time at different distances from weld.
Distance increases linearly between each pair of dotted lines by $\Delta y = \frac{h}{10}$, where $h$ is the distance at the furthest of the two.)r]   r   r"   r$   r	   r&   rH   r4   rI   rJ   rK   rL   rN   rO   rP   r^   rQ   rR   rS   rT   rU   rV   )r   Z	Tt_curvesr.   r   rW   r_   rX   rY   rZ   r7   r/   r`   r   )r:   r.   r   plot_Tt_weld_V3   s8    $

$"$$"(


rc   c                s   | d } | t d tjt dt j     fdd} fdd}d}d}|}|| || }x@t||kr|| }x|d	kr|d
7 }qzW || || }qdW |S )Ni  g      r   c                s   t jt j  |   S )N)r   r   	Tsol_weld)r   )r5   r   r   <lambda>   s    z!find_max_y_weld.<locals>.<lambda>c                s     | d  S )Nr   r   )r   )r5   r   r   re      s    gư>g?r   gh㈵>)r	   r   r   r   r
   r   abs)r   nullfuncnullfunc_deritolZy_starty0r   r   )r5   r   find_max_y_weld   s    $
rk   c                s   d  fdd}fdd}dd d  dt j  }td krTdS || || }d	}x*t||kr|| }|| || }qlW |S )
Ni  c                s   t |   S )N)r   )r   )Tr   r   r   r   re      s    zfind_t_weld.<locals>.<lambda>c                sh   d dt j |   d  dt j tdtj t j    t| d td  dt j |    S )Nr   r   r   g      )r   r   r   r	   r
   r   powerr   )r   )r   r   r   r   re      s    g      ?r   r   gh㈵>)r   r   rk   rf   )r   r   rl   rg   rh   t0r   ri   r   )rl   r   r   r   find_t_weld   s    rp   c                s   |d }t dt  d d d}t  fdd|D }t|||}t j||}dt| }t |}t j	|t 
|d jdd	}	t j|	|dd   dd
}
|
S )Ni  g      r   rn   r   c                s   g | ]}|k | k qS r   r   )r   r   )t_endt_startr   r   r       s    z/vec_weld_scheill_integrator.<locals>.<listcomp>r   )r1   )axis)r	   r%   log10r&   r   mamasked_arrayr   diffr2   r3   shapesum)rr   rq   Zy_listZqvd_listZt_listZt_maskr/   Z	integranddtZdt_MIr   )rq   rr   r   vec_weld_scheill_integrator   s    
r|   c        	   	      sn  t ddd t jdddd} t  fdd	| D }t  fd
d	| D }t|||  }ddtj |tj   }t jj	
|d}tjddgd td}d}d}xtt|D ]|}|dkrtj || ||| t| tt| | dd dd d}qtj || ||| t| dd |d7 }qW tjdd tjddd tjddd tjddd d S )NgMbP?g?r   r      g      @)r   c                s   g | ]  fd dD qS )c                s    g | ]}t | tjd  dqS )r   )rl   )rp   r   Teq)r   r   )r   r   r   r      s    z*plot_X_weld.<locals>.<listcomp>.<listcomp>r   )r   )qvd_line)r   r   r      s    zplot_X_weld.<locals>.<listcomp>c                s   g | ]  fd dD qS )c                s   g | ]}t | tjd qS ))rl   )rp   r   	Tmin_weld)r   r   )r   r   r   r      s    z*plot_X_weld.<locals>.<listcomp>.<listcomp>r   )r   )r   )r   r   r      s    r   r;   r<   )r=   r8   g333333?r>   r?   -)rA   rB   rC   z--)rA   rC      )rF   z/$\frac{q_0}{vd}$ $\left[\frac{kJ}{mm^2}\right]$rD   u   Fraction transformed [–]zpDegree of transformation completion as a function of welding effect per area,
for different distances from weld.)r	   linspacer!   r&   r|   r   Xcnru   MaskedArrayfilledrK   rL   rI   rJ   rH   r4   rN   rO   rP   rQ   rT   rU   rV   )	r.   rr   rq   r{   Xr:   max_collabel_counterr7   r   )r   r   plot_X_weld  s.    

&r   )T)T)T)numpyr	   matplotlib.pyplotpyplotrK   Zmatplotlib.cmrI   	constantsr   c_curvesr   warningsfilterwarningsr   r0   r   r\   ra   rc   rk   r~   rp   r|   r   r   r   r   r   <module>   s    

.
.
.