Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
pde.c File Reference
#include "common/darktable.h"
#include "develop/imageop.h"
#include "develop/imageop_math.h"
#include "iop/highlights/blur.h"
#include "iop/highlights/pde.h"
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include "common/solvers/sparse_cholesky.h"
#include "common/solvers/sparse_cholesky_cl.h"
+ Include dependency graph for pde.c:

Go to the source code of this file.

Functions

static void _lap5 (const float *const restrict field, float *const restrict laplacian, const int region_w, const int region_h)
 
static void _apply_op (const float *const restrict field, float *const restrict output_field, float *const restrict scratch, const int order, const int region_w, const int region_h)
 
static int _sp_row_l9 (const int y, const int x, const int region_w, const int region_h, int *const restrict targets, double *const restrict target_weights)
 
static int _sp_row_op (const int grid_index, const int order, const int region_w, const int region_h, int *const restrict targets, double *const restrict target_weights)
 
int _sp_pde_assemble (const uint8_t *const restrict hole, const float *const restrict diffusion, const float diffusion_const, const int order, const float lambda, const int region_w, const int region_h, int **matrix_col_ptr_out, int **matrix_row_index_out, double **matrix_values_out, int **perm_grid_out, int *n_unknowns_out, const dt_dev_pixelpipe_t *const pipe)
 
_sp_chol_t_sp_pde_factor (const uint8_t *const restrict hole, const float *const restrict diffusion, const int order, const float lambda, const int region_w, const int region_h, int **perm_out, int *n_unknowns_out, const dt_dev_pixelpipe_t *pipe)
 
__DT_CLONE_TARGETS__ void _sp_pde_solve (const _sp_chol_t *const factor, const int *const restrict perm_grid, float *const restrict field, const uint8_t *const restrict hole, const float *const restrict diffusion, const float *const restrict target, const float *const restrict source, const int order, const float lambda, const int region_w, const int region_h, double *const restrict rhs, float *const restrict embedded, float *const restrict operator_out, float *const restrict scratch)
 
__DT_CLONE_TARGETS__ void _region_pde_solve (float *const restrict field, const uint8_t *const restrict hole, const float *const restrict diffusion, const float *const restrict target, const float *const restrict source, const int order, const float lambda, const int region_w, const int region_h, float *const restrict residual, float *const restrict search_dir, float *const restrict operator_dir, float *const restrict embedded, float *const restrict scratch, const int maxiter)
 

Function Documentation

◆ _apply_op()

static void _apply_op ( const float *const restrict  field,
float *const restrict  output_field,
float *const restrict  scratch,
const int  order,
const int  region_w,
const int  region_h 
)
inlinestatic

Definition at line 69 of file pde.c.

References _lap5(), and i.

Referenced by _region_pde_solve(), and _sp_pde_solve().

◆ _lap5()

static void _lap5 ( const float *const restrict  field,
float *const restrict  laplacian,
const int  region_w,
const int  region_h 
)
inlinestatic

Definition at line 31 of file pde.c.

References __OMP_PARALLEL_FOR__, and x.

Referenced by _apply_op().

◆ _region_pde_solve()

__DT_CLONE_TARGETS__ void _region_pde_solve ( float *const restrict  field,
const uint8_t *const restrict  hole,
const float *const restrict  diffusion,
const float *const restrict  target,
const float *const restrict  source,
const int  order,
const float  lambda,
const int  region_w,
const int  region_h,
float *const restrict  residual,
float *const restrict  search_dir,
float *const restrict  operator_dir,
float *const restrict  embedded,
float *const restrict  scratch,
const int  maxiter 
)

Definition at line 368 of file pde.c.

References __OMP_PARALLEL_FOR__, _apply_op(), double(), and i.

Referenced by _joint_core(), and _joint_core_stage_cl_selftest().

◆ _sp_pde_assemble()

int _sp_pde_assemble ( const uint8_t *const restrict  hole,
const float *const restrict  diffusion,
const float  diffusion_const,
const int  order,
const float  lambda,
const int  region_w,
const int  region_h,
int **  matrix_col_ptr_out,
int **  matrix_row_index_out,
double **  matrix_values_out,
int **  perm_grid_out,
int *  n_unknowns_out,
const dt_dev_pixelpipe_t *const  pipe 
)

◆ _sp_pde_factor()

_sp_chol_t * _sp_pde_factor ( const uint8_t *const restrict  hole,
const float *const restrict  diffusion,
const int  order,
const float  lambda,
const int  region_w,
const int  region_h,
int **  perm_out,
int *  n_unknowns_out,
const dt_dev_pixelpipe_t pipe 
)

◆ _sp_pde_solve()

__DT_CLONE_TARGETS__ void _sp_pde_solve ( const _sp_chol_t *const  factor,
const int *const restrict  perm_grid,
float *const restrict  field,
const uint8_t *const restrict  hole,
const float *const restrict  diffusion,
const float *const restrict  target,
const float *const restrict  source,
const int  order,
const float  lambda,
const int  region_w,
const int  region_h,
double *const restrict  rhs,
float *const restrict  embedded,
float *const restrict  operator_out,
float *const restrict  scratch 
)

Definition at line 334 of file pde.c.

References __OMP_PARALLEL_FOR__, _apply_op(), _sp_chol_solve(), double(), factor, and i.

Referenced by _joint_core(), and _joint_core_stage_cl_selftest().

◆ _sp_row_l9()

static int _sp_row_l9 ( const int  y,
const int  x,
const int  region_w,
const int  region_h,
int *const restrict  targets,
double *const restrict  target_weights 
)
static

Definition at line 91 of file pde.c.

References k, and x.

Referenced by _sp_row_op().

◆ _sp_row_op()

static int _sp_row_op ( const int  grid_index,
const int  order,
const int  region_w,
const int  region_h,
int *const restrict  targets,
double *const restrict  target_weights 
)
static

Definition at line 126 of file pde.c.

References _sp_row_l9(), i, value, and x.

Referenced by _sp_pde_assemble().